Главная страница » PostgreSQL 11 для 1С. Установка на Ubuntu 18.04

PostgreSQL 11 для 1С. Установка на Ubuntu 18.04

by Belfigor
1137 views
PostgreSQL 11 для 1С

Совсем недавно 1С адаптировала PostgreSQL 11 для 1С. Необходимая версия платформы для этого должна быть не ниже 8.3.14.1565. Пакеты опубликованы на сайте ИТС под версией 11.5-1.1C. Можно сказать что с этого момента начнётся очередной новый виток переустановок и обновлений со старых версий PostgreSQL. Ведь даже если работает, и работает хорошо, почему бы не сделать еще лучшее? Особенно это касается таких вопросов PostgreSQL как параллелизация запросов.

Тоесть у нас может быть сколь угодно мощный сервер с частотой каждого ядра к примеру 5 GHz. Но в 1С запросы очень плохо оптимизированы под работу с PostgreSQL из коробки. Но в свою очередь, PostgreSQL регулярно допиливается и функционал расширяется от раза к разу. При релизе версии PostgreSQL 11, в ней уже был улучшен механизм прараллелизации запросов. Подробнее об изменениях 11й версии можно почитать тут: https://www.postgresql.org/docs/11/release-11.html . Так же стоит упомянуть про то что PostgreSQL это бесплатная СУБД, которая хоть и чутьчуть проигрывает по производительности перед MSSQL, она из коробки и абсолютно бесплатно имеет на борту прекрасный функционал касающийся резервного копирования и репликации работающих баз. Тот функционал, для получения которого в MSSQL если мне не изменяет память нужно покупать версию не ниже Enterprise.

Описание стенда:

  • 8 vCPU
  • 16GB Ram
  • 64GB SSD

 

  • Установка Ubuntu Server 18.04

  • Ubuntu Server 18.04 — Установка статического IP

  • Ubuntu Server 18.04 — Изменение имени сервера

  • Установка PostgreSQL 11 для 1С на Ubuntu 18.04

    1. Добавляем репозиторий PostgreSQL

      Создаём файл /etc/apt/sources.list.d/pgdg.list

      sudo nano /etc/apt/sources.list.d/pgdg.list

      И добавляем следующую строку:

      deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main

      Импортируем подписи и обновляем репозиторий

      wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
      sudo apt-get update
    2. Обновляем систему

      sudo apt update && sudo apt dist-upgrade -y
    3. Ставим локали

      sudo locale-gen en_US.UTF-8
      sudo locale-gen ru_RU.UTF-8
      sudo update-locale LANG=ru_RU.UTF8
      sudo dpkg-reconfigure locales

      После ввода последней команды появится похожее окно:

      Настройка locales

      Настройка locales

      можно промотать вниз и убедиться что локаль ru_RU.UTF-8 отмечена)

      Выбор локали по умолчанию

      Выбор локали по умолчанию

      Теперь необходимо выбрать локаль по умолчанию. Выбираем ru_RU.UTF-8 и нажимаем Ok. Если в списке указанная локаль у вас отсутствует, значит что-то из вышеперечисленного в текущем пункте вы сделали не так. После успешного выполнения этого пункта в отчёте мы увидим строчку

      ru_RU.UTF-8… done
      en_EN.UTF-8… done
    4. Загружаем файлы PostgreSQL 11 для 1С на будущий сервер

      Знаю, возможно кто-то сочтёт этот пункт излишним, но много много лет назад, когда я впервые в жизни увидел текстовую консоль линуксового сервера, вопрос передачи файлов между сервером и внешним миром встал для меня очень остро. Тогда, я даже поднял фтп сервер чтобы залить туда нужные мне пакеты. Поэтому для полноты инструкции, считаю должны упомянуть про такой протокол передачи данных как SFTP и соответствующую статью WinSCP работаем с файлами Linux сервера через SFTP
      Я буду загружать все файлы в папку home пользователя под которым подключился к серверу. Все инструкции далее будут приводиться исходя из этого момента. Чтобы попасть в home текущего пользователя достаточнот просто вбить в консоль команду cd. Я буду загружать версию 11.5-1.1C т.к. новее на сайте ИТС в данный момент нет.

    5. Смотрим особенности релиза

      Возможно, в далёком будущем, когда через пару месяцев потомки будут читать эту запись, в особенностях релиза что-то и появится. На данный момент там пусто (:

      Поэтому с особенностями релиза мы определимся походу. Одна из таких особенностей — это использование репозитория PostgreSQL, т.к. в родном репозитории Ubuntu 18.04, максимальная имеющаяся на момент написания версия пакетов PostgreSQL — 190. Нам нужно 194+

    6. Готовимся к установке пакетов PostgreSQL 11 для 1C

      Так исторически сложилось что в особенностях релиза всегда фигурировали эти два пакета: libicu55 и postgresql-common. Почему их не указали сейчас мне неизвестно, но необходимость в них не отпала, при попытке установить пакеты 1C система будет жаловаться на их отсутствие. И в этот то момент нам и понадобится репозиторий PostgreSQL который мы добавили ранее. Т.к. те пакеты что мы сможем установить из родного, слишком старые и не подходят.

      1. libicu55

        Смотрим что есть в репозитории относительно libicu55
        apt search libicu55

        Иииии, там ничего нет, как обычно.

        Поэтому идем по ссылке archive.ubuntu.com и там ищем libicu55 для своей архитектуры. Я ставлю на Ubuntu Server 18.04 64-bit, поэтому у меня это libicu55_55.1-7_amd64.deb
        Так же в данном случае можно скачать файл напрямую с помощью команды wget

            cd
            wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb

        По окончании загрузки устанавливаем данный пакет

        sudo dpkg -i libicu55_55.1-7_amd64.deb
      2. postgresql-common

        Смотрим что нам покажет репозиторий

        apt search postgresql-common

        Ввиду того, что ранее мы уже подключили репозиторий PostgreSQL, мы должны увидеть примерно следующее:

        AdminGuide.Ru@1c-psql-s1:~$ apt search postgresql-common
        Сортировка… Готово
        Полнотекстовый поиск… Готово
        postgresql-client-common/bionic-pgdg 209.pgdg18.04+1 all
          управление несколькими клиентскими версиями PostgreSQL
        
        postgresql-common/bionic-pgdg 209.pgdg18.04+1 all
          PostgreSQL database-cluster manager
        

        В данный момент версии всех пакетов 209, что больше чем 194, версии которую запрашивают пакеты PostgreSQL 11 для 1C при попытке их установки без подготовки.

        Устанавливаем postgresql-common

        sudo apt install postgresql-common
        

        Попутно установочник подвезёт нам еще ряд необходимых пакетов.

    7. Установка PostgreSQL 11 для 1С

      1. Извлекаем из архива
        Файл с установочными пакетами скачанный с сайта ИТС называется postgresql_11.5_1.1C_amd64_deb.tar.bz2 и лежит в папке home пользователя под которым мы авторизованы, поэтому перейдем в эту папку и вытащим содержимое из архива

        cd 
        tar -xvf ./postgresql_11.5_1.1C_amd64_deb.tar.bz2

        Из архива извлеклась папка postgresql-11.5-1.1C_amd64_deb

      2. Переходим в папку с установочными пакетами
        cd ./postgresql-11.5-1.1C_amd64_deb
      3. Устанавливаем пакеты PostgreSQL 11 для 1C
        sudo dpkg -i ./libpq5_11.5-1.1C_amd64.deb
        sudo dpkg -i ./postgresql-client-11_11.5-1.1C_amd64.deb
        sudo dpkg -i ./postgresql-11_11.5-1.1C_amd64.deb

        По окончании установки сервер запустится и с ним уже можно будет начинать работать.

        В процессе пригодятся следующие команды:

        sudo service postgresql start
        sudo service postgresql stop
        service postgresql status
    8. Блокируем обновления пакетов

      Дабы оградить собственную жопку от нападок со стороны агрессивно настроенной бухгалтерии, лучше всего ограничить количество встреч с бухгалтерами. Наилучшим для этого решением будет оргазнизация не только высокой производительности сервисов, но и их максимального аптайма. А этому очень сильно может помешать неожиданное обновление пакетов PostgreSQL 11. Пакеты модифицированные 1С будут просто заменены рассово верными пакетами из официального репозитория PostgreSQL, при этом всё уйдет в отказ, а юзеры будут бегать по зданию в папнике роняя кал. Как этого избежать?
      Пишем в консоль команду

      dpkg --list | grep 1C

      И видим следующее:

      ii  libpq5:amd64                          11.5-1.1C                          amd64        PostgreSQL C client library
      ii  postgresql-11                         11.5-1.1C                          amd64        object-relational SQL database, version 11 server
      ii  postgresql-client-11                  11.5-1.1C                          amd64        front-end programs for PostgreSQL 11

      [ii] — значит что вам пиздец. а если списочек окажется пустым — значит что пиздец уже пришел и вам надо ПОВТОРНО, ПОВЕРХ СУЩЕСТВУЮЩЕЙ УСТАНОВКИ НИЧЕГО НЕ УДАЛЯЯ снова установить пакеты которые вы качали с сайта ИТС. Именно поэтому мы их качали в папку home а не в tmp, откуда они после ребута бы исчезли. Возвращаемся к пункту 7 Установка PostgreSQL 11 для 1С
      Фиксируем только что установленные пакеты в системе:

      sudo apt-mark hold libpq5
      sudo apt-mark hold postgresql-11
      sudo apt-mark hold postgresql-client-11

       

    9.  Настраиваем PostgreSQL 11 для 1С

      Настройка будет производится до момента когда к серверу можно будет подключить сервер 1С. Оптимизация, репликация и прочие моменты тут не рассматриваются. Она ничем кроме того что в пути к файлам цифра 10 заменилась на 11 не отличается. Привожу правленные с учётом современных реалий инструкции от PostgreSQL 10, чтобы всё было в одном месте.

      1. Меняем метод аутентификации с peer на trust

        Более подробно о метода аутентификации можно посмотреть тут. Внизу страницы нужно будет потыкать ссылоки Пред и След

        1. Открываем файл pg_hba.conf
          sudo nano /etc/postgresql/11/main/pg_hba.conf
        2. Меняем административный вход

          Находим строку

          # Database administrative login by Unix domain socket
          local   all             postgres                                peer

          И меняем в ней peer на trust чтобы было

          # Database administrative login by Unix domain socket
          local   all             postgres                                trust

          Когда способом аутентификации указано trust, постгрес решит что подключающийся пользователь уже авторизован для работы и пустит его без пароля
          Сохраняем изменения нажав Ctrl+O

        3. Перезагружаем Postgres
          sudo service postgresql restart
      2. Устанавливаем пароль пользователя postgres

        В кавычках указываем наш пароль, в нашем случае это rptzjnarDhTp3AYdCEi2l0u8Q7uhApDg. В своих инсталляциях используйте более надежный пароль. Пароль должен быть длинный, сочный, одним своим видом он должен заставлять гумманитариев дёргаться в конвульсиях.

        psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'rptzjnarDhTp3AYdCEi2l0u8Q7uhApDg'"

        Снова повторюсь что пароль лучше сделать посложнее, и использовать для работы с базами не админскую учётку postgres, а создать другого пользователя, в идеале на каждую базу свой пользователь, подрядчикам обслуживающим базы тоже свой пользователь, с правами на конкретную базу.

      3. Меняем метод аутентификации с trust на md5

        Все как и выше где мы меняли peer на trust, только теперь мы меняем trust на md5, чтобы отключить беспарольный доступ

        sudo nano /etc/postgresql/11/main/pg_hba.conf

        Находим строку

        # Database administrative login by Unix domain socket
        local   all             postgres                                trust

        Меняем её на

        # Database administrative login by Unix domain socket
        local   all             postgres                                md5
      4. Настраиваем postgresql.conf

        sudo nano /etc/postgresql/11/main/postgresql.conf

        Там находим строку listen_addresses. Можно воспользоваться поиском, он включается сочетанием Ctrl+W. Находим следующее:

        listen_addresses = '*'          # what IP address(es) to listen on;
                                                # comma-separated list of addresses;
                                                # defaults to 'localhost'; use '*' for all
                                                # (change requires restart)
        port = 5432                             # (change requires restart)

        При желании можно настроить ограничение на подключение только через localhost указав его вместо ‘*’. Пока стоит ‘*’ сервер принимает подключение на все интерфейсы на порт указанный в пареметре port. А можно ничего и не менять, всё по желанию и вашему уровню паранойи.
        Если у вас 1С будет жить на одном сервере с PostgreSQL, то оставьте localhost, если он будет работать на другом компьютере, установите * или же IP адрес интерфейса подключения.

 

Text.ru - 100.00%

You may also like

4 комментария

Juhani 14.11.2019 - 14:24

Добрый день.

А подскажите. В репах postgrespro.ru (после регистрации они дают свои репы для установки) есть Depends: libicu60 (>= 60.1-1~)
То есть если ставить из repo.postgrespro.ru то и libicu55 ставить не надо.

Вообще, что говорят по поводу репов именно postgrespro.ru? Стоит их использовать вместо apt.postgresql.org?

Reply
Belfigor 14.11.2019 - 14:54

Я не тестировал postgres pro т.к. для его получения необходимо производить лишние действия. И насколько я понимаю они пошли по пути ухудшения функциональности бесплатных версий, чтобы вынудить людей покупать энтерпрайзные сборки у 1С.

Reply
Juhani 14.11.2019 - 16:16

Ясно, просто тестирую и обратил внимание что они все в кучу запихнули и базы и конфиги, то есть просто взять и поменять пути для папки с конфигурациями можно только через /etc/default/postgrespro-std-11 в котором будет указана папка в которой лежат конфигураций…потому как пути типа /etc/postgresql/10/main/postgresql.conf банально нет =)
Посмотрим что дальше будет.

Спасибо.

Reply
Juhani 15.11.2019 - 11:08

И да. Есть оказывается бесплатная сборка с репами от postgrespro но без лицензий и ценников.
https://1c.postgres.ru/
Придет письмо с примерно таким содержанием:
[code]
Вы получили это письмо, поскольку запрашивали инструкции по установке postgreSQL для 1с на сайте 1c.postgres.ru/.

Используйте инструкции для установки postgreSQL для 1с. Обратите внимание, что команды должны выполняться от пользователя с правами суперпользователя.

apt-get update -y
apt-get install -y wget gnupg2 || apt-get install -y gnupg
wget -O — http://repo.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO | apt-key add —
echo deb http://repo.postgrespro.ru//pg1c-archive/pg1c-11.5/ubuntu/ bionic main > /etc/apt/sources.list.d/postgrespro-1c.list
apt-get update -y
apt-get install -y postgrespro-1c-11-server postgrespro-1c-11-contrib
/opt/pgpro/1c-11/bin/pg-setup initdb
/opt/pgpro/1c-11/bin/pg-setup service enable
service postgrespro-1c-11 start
[/code]
Возможно кому то пригодится.

Reply

Leave a Comment