Назад к статьям

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

Таки уже больше чем пол года прошло с того момента как 1C научилась из коробки работать с PostgreSQL 10, да и вышла Ubuntu 18.04. Значит пришла пора обновить статью Установка PostgreSQL 9.6 для 1C на Ubuntu 16.04 и речь у нас пойдет о том, что установка PostgreSQL 10 для 1С на Ubuntu 18.04 хоть и имеет несколько нюансов, но до сих пор осуществляется легко и непринужденно.

Стенд будет у нас следующий:

  • 2 ядра
  • 16Gb Ram
  • 32GB SSD

Наши действия:

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

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

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

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

Обновляем систему

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

bash
sudo apt update && sudo apt dist-upgrade -y

Скачиваем DEB PostgreSQL 10 для 1С

Я скачал с users.v8.1c.ru следующий архив: PostgreSQL, версия 10.5-24.1C

Ставим локали

bash
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

После ввода последней команды, появится следующее окно:

Локали которые будут созданы
Локали которые будут созданы

Ничего не делаем, просто нажимаем

Локаль по умолчанию
Локаль по умолчанию

В этом окне необходимо выделить ru_RU.UTF-8 и уже потом нажать

Generation complete

Generation complete

Загружаем файлы на наш будущий сервер

Способов много, можно залить с помощью этой небольшой статьи: WinSCP работаем с файлами Linux сервера через SFTP
Напомню что я загружаю в папку /tmp и все команды что я привожу ниже, будут запускаться из неё

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

На странице загрузки пакета на users.v8.1c.ru, всё так же в обязательном порядке заглядываем в особенности релиза, где узнаем что написаны они только для Ubuntu 16.04 и выглядят они следующим образом

bash
libicu55 postgresql-common

Готовимся к установке

libicu55

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

bash
apt search libicu55

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

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

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

bash
sudo dpkg -i libicu55_55.1-7_amd64.deb

postgresql-common

Проверяем что есть в репозитарии

bash
apt search postgresql-common
Результат apt search postgresql-common
Результат apt search postgresql-common

На данный момент в репозитории появился этот пакет версии >=182~. Раньше небыло и приходилось качать его из репозитория постгрес, с проделыванием излишних телодвижений.

bash
sudo apt install postgresql-common

Установка PostgreSQL 10 для 1С

Извлекаем из архива

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

bash
cd /tmp
tar -xvf ./postgresql_10.5_24.1C_amd64_deb.tar.bz2

Из архива извлеклась папка postgresql_10.5_24.1C_amd64_deb

Переходим в папку с установочными пакетами

bash
cd ./postgresql-10.5-24.1C_amd64_deb
Извлекаем пакеты из архива

Извлекаем пакеты из архива

Устанавливаем пакеты PostgreSQL 10

bash
sudo dpkg -i libpq5_10.5-24.1C_amd64.deb
sudo dpkg -i postgresql-client-10_10.5-24.1C_amd64.deb
sudo dpkg -i postgresql-10_10.5-24.1C_amd64.deb

Если после выполнения последней команды мы видим скрин следующего вида

Завершение установки PostgreSQL 10
Завершена установка PostgreSQL 10 для 1С

А это значит Success! И возможность перейти к настройке PostgreSQL 10

Success!

Success!

Настраиваем PostgreSQL 10

Стоит сразу же оговориться, что под словом «Настраиваем» я имею ввиду именно настройку, до состояния когда к Postgres можно будет подключить сервер 1С и начать создавать там базы, загружать туда базы через конфигуратор или еще что придет в голову. Вопросы именно «Оптимизации», репликации, потоковой, логической или чего-либо еще тут не рассматриваются.

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

Подробнее о методах аутентификации можно почитать тут

Открываем файл pg_hba.conf

bash
sudo nano /etc/postgresql/10/main/pg_hba.conf

Меняем административный вход

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

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

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

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

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

Перезагружаем Postgres

bash
sudo service postgresql restart

Устанавливаем пароль пользователя postgres

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

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

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

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

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

bash
sudo nano /etc/postgresql/10/main/pg_hba.conf

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

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

Меняем её на

bash
# Database administrative login by Unix domain socket
local   all             postgres                                md5

Настраиваем postgresql.conf

bash
sudo nano /etc/postgresql/10/main/postgresql.conf

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

bash
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 адрес интерфейса подключения.

Блокируем обновления пакетов

Может случиться так что убунту автоматически обновит пакеты PostgreSQL 1C, что приведет СУБД в нерабочее состояние. Да чего греха таить, какой-нибудь эникей подключившийсь к терминалу с командой «Обнови все линуксовые сервера!» может запустить обновление и тогда повесят вас. Поэтому обязательно вводим следующие команды для блокироваки обновления постгрес: sudo apt-hold <Имя вашего пакета>

bash
sudo apt-mark hold libpq5
sudo apt-mark hold postgresql-client-10
sudo apt-mark hold postgresql-10

Это те пакеты, которые мы скачивали с сайта 1С

P.S. В pg_hba.conf можно настроить различными способами, этот файл отвечает за авторизацию пользователей, источники откуда они могут подключаться, базы с которыми могут работать. Но это тема целой отдельной статьи, а то и двух если рассказывать подробно. Поэтому тут лишь скажу что это можно и нужно использовать чтобы повысить безопасность своей базы. Но по стандарту, если использовать пользователя postgres, всё будет работать и так.

1C