Таки уже больше чем пол года прошло с того момента как 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
После ввода последней команды, появится следующее окно:
Ничего не делаем, просто нажимаем <Ok> (можно промотать вниз и убедиться что локаль ru_RU.UTF-8 отмечена)
В этом окне необходимо выделить ru_RU.UTF-8 и уже потом нажать <Ok>. Если в списке указанная локаль у вас отсутствует, значит что-то из вышеперечисленного в текущем пункте вы сделали не так. После успешного выполнения этого пункта в отчёте мы увидим строчку ru_RU.UTF-8… done и en_EN.UTF-8… done
-
Загружаем файлы на наш будущий сервер
Способов много, можно залить с помощью этой небольшой статьи: 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
Так же в данном случае можно скачать файл напрямую с помощью команды wgetcd /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
-
-
-
Настраиваем 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, всё будет работать и так.
6 комментариев
пока лучший гайд из виденых мною 🙂
спасибо
Прекрасно. С удовольствием прочитал и сделал
А что нельзя сделать репликацию и файловер через repmgr или patroni для postgresql от сборки от 1с?
Можно если есть время \ желание \ необходимость
И в зависимости от масштабов это скорее всего окажется решением из разрядка «пушкой по воробьям»
Кстати говоря, использование repmgr, patroni не нарушается лицензионные соглашения для сборки postgresql-1c. Вы случайно не знаете? (также буду благодарен, за информацию по поводу экстеншенов pg_repack, pg_bloat_check в базе от postgresql-1c ?