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
Обновляем систему
Есть шанс что система устанавливалась например без доступа к интернету или же из старого образа. Поэтому при любом раскладе имеет смысл привести её к последнему виду, прежде чем приступать к последующим манипуляциям
sudo apt update && sudo apt dist-upgrade -y
Скачиваем DEB PostgreSQL 10 для 1С
Я скачал с users.v8.1c.ru следующий архив: PostgreSQL, версия 10.5-24.1C
Ставим локали
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
Загружаем файлы на наш будущий сервер
Способов много, можно залить с помощью этой небольшой статьи: WinSCP работаем с файлами Linux сервера через SFTP
Напомню что я загружаю в папку /tmp и все команды что я привожу ниже, будут запускаться из неё
Смотрим особенности релиза.
На странице загрузки пакета на users.v8.1c.ru, всё так же в обязательном порядке заглядываем в особенности релиза, где узнаем что написаны они только для Ubuntu 16.04 и выглядят они следующим образом
libicu55 postgresql-common
Готовимся к установке
libicu55
Смотрим что есть в репозитарии относительно libicu55
apt search libicu55
На момент написания статьи там не было ничего :(.
Поэтому идем по ссылке archive.ubuntu.com и там ищем libicu55 для своей архитектуры. Я ставлю на Ubuntu Server 18.04 64-bit, поэтому у меня это libicu55_55.1-7_amd64.deb
Так же в данном случае можно скачать файл напрямую с помощью команды wget
cd /tmp
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
postgresql-common
Проверяем что есть в репозитарии
apt search postgresql-common

На данный момент в репозитории появился этот пакет версии >=182~. Раньше небыло и приходилось качать его из репозитория постгрес, с проделыванием излишних телодвижений.
sudo apt install postgresql-common
Установка PostgreSQL 10 для 1С
Извлекаем из архива
Файл с установочными пакетами скачанный с сайта ИТС называется postgresql_10.5_24.1C_amd64_deb.tar.bz2 и лежит в папке /tmp, поэтому перейдем в /tmp и вытащим содержимое из архива
cd /tmp
tar -xvf ./postgresql_10.5_24.1C_amd64_deb.tar.bz2
Из архива извлеклась папка postgresql_10.5_24.1C_amd64_deb
Переходим в папку с установочными пакетами
cd ./postgresql-10.5-24.1C_amd64_deb

Извлекаем пакеты из архива
Устанавливаем пакеты PostgreSQL 10
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
Если после выполнения последней команды мы видим скрин следующего вида

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

Success!
Настраиваем PostgreSQL 10
Стоит сразу же оговориться, что под словом «Настраиваем» я имею ввиду именно настройку, до состояния когда к Postgres можно будет подключить сервер 1С и начать создавать там базы, загружать туда базы через конфигуратор или еще что придет в голову. Вопросы именно «Оптимизации», репликации, потоковой, логической или чего-либо еще тут не рассматриваются.
Меняем метод аутентификации с peer на trust
Подробнее о методах аутентификации можно почитать тут
Открываем файл pg_hba.conf
sudo nano /etc/postgresql/10/main/pg_hba.conf
Меняем административный вход
Находим строку
# 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
Перезагружаем Postgres
sudo service postgresql restart
Устанавливаем пароль пользователя postgres
В кавычках указываем наш пароль, в нашем случае это h4GiQn. В своих инсталляциях используйте более надежный пароль.
psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'h4GiQn'"
Снова повторюсь что пароль лучше сделать посложнее, и использовать для работы с базами не админскую учётку postgres, а создать другого пользователя, в идеале на каждую базу свой пользователь, подрядчикам обслуживающим базы тоже свой пользователь, с правами на конкретную базу.
Меняем метод аутентификации с trust на md5
Все как и выше где мы меняли peer на trust, только теперь мы меняем trust на md5, чтобы отключить беспарольный доступ
sudo nano /etc/postgresql/10/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
Настраиваем postgresql.conf
sudo nano /etc/postgresql/10/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 адрес интерфейса подключения.
Блокируем обновления пакетов
Может случиться так что убунту автоматически обновит пакеты PostgreSQL 1C, что приведет СУБД в нерабочее состояние. Да чего греха таить, какой-нибудь эникей подключившийсь к терминалу с командой «Обнови все линуксовые сервера!» может запустить обновление и тогда повесят вас. Поэтому обязательно вводим следующие команды для блокироваки обновления постгрес: sudo apt-hold <Имя вашего пакета>
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, всё будет работать и так.