Совсем недавно 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
После ввода последней команды появится похожее окно:
можно промотать вниз и убедиться что локаль 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 адрес интерфейса подключения.
-
-
29 комментариев
Добрый день.
А подскажите. В репах postgrespro.ru (после регистрации они дают свои репы для установки) есть Depends: libicu60 (>= 60.1-1~)
То есть если ставить из repo.postgrespro.ru то и libicu55 ставить не надо.
Вообще, что говорят по поводу репов именно postgrespro.ru? Стоит их использовать вместо apt.postgresql.org?
Я не тестировал postgres pro т.к. для его получения необходимо производить лишние действия. И насколько я понимаю они пошли по пути ухудшения функциональности бесплатных версий, чтобы вынудить людей покупать энтерпрайзные сборки у 1С.
Ясно, просто тестирую и обратил внимание что они все в кучу запихнули и базы и конфиги, то есть просто взять и поменять пути для папки с конфигурациями можно только через /etc/default/postgrespro-std-11 в котором будет указана папка в которой лежат конфигураций…потому как пути типа /etc/postgresql/10/main/postgresql.conf банально нет =)
Посмотрим что дальше будет.
Спасибо.
И да. Есть оказывается бесплатная сборка с репами от 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]
Возможно кому то пригодится.
Здравствуйте. А Вы бэкапы на постгресе настраивали ?
Я пользуюсь потоковой репликацией
Спасибо. Делал тестовый серв на 19.10 убунту сервере с postgresql_11.5_7.1C и 8_3_16_1148. Отличия только в том что не ставится libpq5_11.5-7.1C_amd64.deb без libssl1.0.0 . Нужно скачать и установить :
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu6.2_amd64.deb
sudo apt install ./libssl1.0.0_1.0.2n-1ubuntu6.2_amd64.deb
Остальное все совпадает
Отличный сайт и статья! Мануалов на эту тему много, но качество отвратительное.
psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'rptzjnarDhTp3AYdCEi2l0u8Q7uhApDg'"
не прокатило, прокатилоpsql -U postgres -d template1 -c "ALTER USER postgres WITH PASSWORD 'rptzjnarDhTp3AYdCEi2l0u8Q7uhApDg'"
Добрый день!
Все работает однако в логах постгрес пишет — «не полный стартовый пакет». У вас есть такое сообщение?
А как выглядит запись и в каком конкретно файле такая запись?
Запись в текущем лог файле в директории pg_log — выглядит так (при старте сервера) : система готова принимать подключения и следом запись : н/д н/д сообщение неполный стартовый пакет. Все тесты и 1с работают. НО смущает это сообщение. Поиск в сети толком ничего не дал.
Можно скриншот?
папка /etc/postgresql пустая, хотя postgres работает
устанавливаю на Ubuntu Server 20.04
sudo find / -name postgresql.conf
Что выводит эта команда?
с этим разобрался
/usr/lib/tmpfiles.d/postgresql.conf
второй раз ставлю postgres на другой сервер и опять затык на этапе
uadm@test1:~/postgresql-11.5-1.1C_amd64_deb$ sudo dpkg -i ./libpq5_11.5-1.1C_amd64.deb
Selecting previously unselected package libpq5:amd64.
(Reading database … 70960 files and directories currently installed.)
Preparing to unpack ./libpq5_11.5-1.1C_amd64.deb …
Unpacking libpq5:amd64 (11.5-1.1C) …
dpkg: dependency problems prevent configuration of libpq5:amd64:
libpq5:amd64 depends on libssl1.0.0 (>= 1.0.2~beta3); however:
Package libssl1.0.0 is not installed.
dpkg: error processing package libpq5:amd64 (—install):
dependency problems — leaving unconfigured
Processing triggers for libc-bin (2.31-0ubuntu9) …
Errors were encountered while processing:
libpq5:amd64
uadm@test1:~/postgresql-11.5-1.1C_amd64_deb$
выше был совет установить библиотеку libssl1.0.0_1.0.2n-1ubuntu6.2_amd64.deb
но она теперь недоступна
прошлый раз лазил по форумам и как то обошёл, но уже не помню
А версия ОС какая? Я буквально на той неделе развернул 2 сервера PostgreSQL 11 на Ubuntu Server 18.04 по этому мануалу без каких либо проблем.
Ubuntu 20.04
Думал ставить сразу на свежую ОС
Попробую установить на 18.04
Ubuntu 20.04 не поддерживает PostgreSQL 11 из коробки. Ubuntu 20.04 в репозиториях имеет только пакеты PostgreSQL 12. А т.к. PostgreSQL 11 от 1C для работы так же требует пакеты из репозитория и системные пакеты, тоесть установить PostgreSQL 11 на Ubuntu 20.04, не подвергнув прекрасную новую ось буквально сказать экзекуции — невозможно. Получившийся в итоге монстр работать то будет, но от Ubuntu 20.04 там останется разве что название. Таки я крайне не рекомендую ставить PostgreSQL 11 на Ubuntu 20.04.
есть ещё одна проблемка
у нас база Управление торговлей, редакция 11 (11.4.6.207)
при пролистывании больших списков идут фризы
я нарыл в инете рекомендацию поправить одну позицию в postgresql.conf
сделать join_collapse_limit=1
К этой рекомендации была пояснение
(Следует использовать этот метод, если вы уверены в правильности порядка соединений таблиц в проблемном запросе)
Фризы проходят, но не вылезут ли косяки в другом месте?
Ооооо, это таки скорее всего вопрос к программистам 1С, а не сисадминам. Я если честно ни в одну конфигурацию изнутри даже не пытался смотреть, на то есть профильные специалисты 🙂
Установил все по инструкции все встало без проблем, Postgres запускается, 1с сервер тоже, администрирование серверов 1с видит сервер, но при попытки создать на нем базу выходит ошибка: 0x0000274D сервер отверг запрос на подключение!! Хосты прописаны, Фаервол отключен! Подскажите нубу куда копать!!
А сервер 1с — отдельный независимый сервер или это кластер серверов?
Добрый день
а делать analyze и vacuume на линукс сервере надо? Индексацию рас в неделю
И есть ли ограничения для БД ?
Делать можно и нужно, противопоказаний не замечал. Ограничений для БД так же не встречал ни разу и не упирался в них.
Все вроде норм до пункта «sudo chown -R usr1cv8:grp1cv8 /opt/1C» каталог не найден.
так же sudo service srv1cv83 start сервис не найден
Я таки даже инструкцию повторно перечитал, но не нашёл в ней команды
sudo chown -R usr1cv8:grp1cv8 /opt/1C
Если не работает через service, попробуй через systemctl
Доброго дня!
Смотрю в ОС список пакетов на обновление, там их 4, а заблокировали мы 2 (postgresql-11 и postgresql-client-11).
Стоит ли блокировать обновление
postgresql-client-common
postgresql-common
или можно их обновлять?
Привет! Чисто теоретически блокировать надо только те пакеты которые предоставляет сама 1Ска, чтобы они небыли заменены пакетами из репозитория. Но для спокойствия души, чтобы обновление стандартных пакетов из репозитория не привело к каким-то непредвиденным последствиям можно и заблокировать (я не блокирую)