Совсем недавно 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
-
Добавляем репозиторий 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
-
Обновляем систему
sudo apt update && sudo apt dist-upgrade -y
-
Ставим локали
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
можно промотать вниз и убедиться что локаль ru_RU.UTF-8 отмечена)

Выбор локали по умолчанию
Теперь необходимо выбрать локаль по умолчанию. Выбираем ru_RU.UTF-8 и нажимаем Ok. Если в списке указанная локаль у вас отсутствует, значит что-то из вышеперечисленного в текущем пункте вы сделали не так. После успешного выполнения этого пункта в отчёте мы увидим строчку
ru_RU.UTF-8… done en_EN.UTF-8… done
-
Загружаем файлы PostgreSQL 11 для 1С на будущий сервер
Знаю, возможно кто-то сочтёт этот пункт излишним, но много много лет назад, когда я впервые в жизни увидел текстовую консоль линуксового сервера, вопрос передачи файлов между сервером и внешним миром встал для меня очень остро. Тогда, я даже поднял фтп сервер чтобы залить туда нужные мне пакеты. Поэтому для полноты инструкции, считаю должны упомянуть про такой протокол передачи данных как SFTP и соответствующую статью WinSCP работаем с файлами Linux сервера через SFTP
Я буду загружать все файлы в папку home пользователя под которым подключился к серверу. Все инструкции далее будут приводиться исходя из этого момента. Чтобы попасть в home текущего пользователя достаточнот просто вбить в консоль командуcd. Я буду загружать версию 11.5-1.1C т.к. новее на сайте ИТС в данный момент нет. -
Смотрим особенности релиза
Возможно, в далёком будущем, когда через пару месяцев потомки будут читать эту запись, в особенностях релиза что-то и появится. На данный момент там пусто (:
Поэтому с особенностями релиза мы определимся походу. Одна из таких особенностей — это использование репозитория PostgreSQL, т.к. в родном репозитории Ubuntu 18.04, максимальная имеющаяся на момент написания версия пакетов PostgreSQL — 190. Нам нужно 194+
-
Готовимся к установке пакетов PostgreSQL 11 для 1C
Так исторически сложилось что в особенностях релиза всегда фигурировали эти два пакета: libicu55 и postgresql-common. Почему их не указали сейчас мне неизвестно, но необходимость в них не отпала, при попытке установить пакеты 1C система будет жаловаться на их отсутствие. И в этот то момент нам и понадобится репозиторий PostgreSQL который мы добавили ранее. Т.к. те пакеты что мы сможем установить из родного, слишком старые и не подходят.
-
libicu55
Смотрим что есть в репозитории относительно libicu55
apt search libicu55
Иииии, там ничего нет, как обычно.
Поэтому идем по ссылке archive.ubuntu.com и там ищем libicu55 для своей архитектуры. Я ставлю на Ubuntu Server 18.04 64-bit, поэтому у меня это libicu55_55.1-7_amd64.deb
Так же в данном случае можно скачать файл напрямую с помощью команды wgetcd 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
Ввиду того, что ранее мы уже подключили репозиторий 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
Попутно установочник подвезёт нам еще ряд необходимых пакетов.
- libllvm9
Для PostgreSQL 11.5sudo apt install libllvm9
-
-
Установка PostgreSQL 11 для 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
- Переходим в папку с установочными пакетами
cd ./postgresql-11.5-1.1C_amd64_deb
- Устанавливаем пакеты 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
- Извлекаем из архива
-
Блокируем обновления пакетов
Дабы оградить собственную жопку от нападок со стороны агрессивно настроенной бухгалтерии, лучше всего ограничить количество встреч с бухгалтерами. Наилучшим для этого решением будет оргазнизация не только высокой производительности сервисов, но и их максимального аптайма. А этому очень сильно может помешать неожиданное обновление пакетов 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
-
Настраиваем PostgreSQL 11 для 1С
Настройка будет производится до момента когда к серверу можно будет подключить сервер 1С. Оптимизация, репликация и прочие моменты тут не рассматриваются. Она ничем кроме того что в пути к файлам цифра 10 заменилась на 11 не отличается. Привожу правленные с учётом современных реалий инструкции от PostgreSQL 10, чтобы всё было в одном месте.
-
Меняем метод аутентификации с peer на trust
Более подробно о метода аутентификации можно посмотреть тут. Внизу страницы нужно будет потыкать ссылоки Пред и След
-
Открываем файл pg_hba.conf
sudo nano /etc/postgresql/11/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
В кавычках указываем наш пароль, в нашем случае это rptzjnarDhTp3AYdCEi2l0u8Q7uhApDg. В своих инсталляциях используйте более надежный пароль. Пароль должен быть длинный, сочный, одним своим видом он должен заставлять гумманитариев дёргаться в конвульсиях.
psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'rptzjnarDhTp3AYdCEi2l0u8Q7uhApDg'"
Снова повторюсь что пароль лучше сделать посложнее, и использовать для работы с базами не админскую учётку postgres, а создать другого пользователя, в идеале на каждую базу свой пользователь, подрядчикам обслуживающим базы тоже свой пользователь, с правами на конкретную базу.
-
Меняем метод аутентификации с 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
-
Настраиваем 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 адрес интерфейса подключения.
-
-

