Debian 9.7 + PostgreSQL для 1С. Как завести с пол-оборота

































Предлагаю взять на заметку информацию по установке и настройке в формате typical, typical, done.

Небольшая статья о том, как быстро и просто установить с нуля сервер БД PostgreSQL на ОС Debian 9.7 для работы с 1С: Предприятие 8.3.

 

Оффтоп:

Эта статья может использоваться как "напоминалка" для тех, кто уже "всё знает" и "всё умеет", но у кого "не всё под рукой". Либо как ЧАВО для тех, кто "хотел бы попробовать".

 

В качестве сервера выступает виртуальная машина, полностью "голая", со следующими характеристиками:

CPU Intel Core i3-8100 3.6 GHz

RAM 8 Gb DDR4 2400Mhz

У этой машины также подключена сетевая карта в режиме NAT, с дальнейшей возможностью выхода в интернет.

Процесс создания ВМ не будет рассматриваться. Предположим, что уже есть готовая ВМ.

 

Итак, приступим.

 

Этап первый. Установка Debian 9.7

Первым делом, необходим сам установочный дистрибутив ОС. Его можно загрузить с ресурса https://www.debian.org, перейдя в раздел "Где взять Debian"

 

Как я писал ранее, у виртуальной машины, на которую будет происходить установка, подключена сетевая карта и будет возможность выхода в интернет, поэтому достаточно будет загрузить "Небольшой установочный образ" для установки ОС (netinst). Но даже если машина не подключена к сети, то в итоге все равно получим базовую систему. А сеть можно будет настроить уже вручную и необходимые пакеты установить отдельно.

Выбираем "Небольшой установочный образ"  и далее образ под нужную нам архитектуру процессора. В моем случае я выбрал образ amd64, который говорит что устанавливать будем 64-х битную систему:

 

Загрузили образ. Подключили его к виртуальной машине, выбрали загрузку с CD и запустили её. Первое окно, которое мы видим, это окно выбора вариантов установки ОС:

Графическая установка, установка в текстовом режиме, доп. опции при установке, а также установка с речевым синтезом, которая сопровождается "голосом". 

Для меня предпочтительней вариант установки в текстовом режиме (Install). Он довольно быстрый, простой и понятный, поэтому выбираю его.

Первое же окно после выбора варианта установки, это выбор языка установки ОС:

Хочу обратить внимание на то, что выбор языка установки также определит язык по-умолчанию который будет в установленной системе. В любом случае всегда можно добавить поддержку необходимого нам языка уже в установленной ОС. Поэтому на этом этапе выбираем English и идём далее.

После выбора языка предлагают выбрать страну, которая определит часовой пояс и языковую локализацию, для адаптации нашей ОС к используемому нами программному обеспечению. Можно это сделать на этапе установки ОС, либо уже заняться этими настройками позже. Рассмотрим вариант "позже" и выбираем страну "United States", которая выбрана по-умолчанию и раскладка клавиатуры также английская. После чего начинается процесс установки ОС:

В процессе установки, система несколько раз предложит нам ввести какие-то данные. 

Первый этап это "сетевое имя" (это имя компьютера в локальной сети) и "доменное имя" (это имя компьютера в домене, при наличии) нашей ВМ. Вводим необходимые нам имена и продолжаем наблюдать за установкой. При установке я указал имя установленное по-умолчанию — debian. Доменное имя оставил пустым.

если ВМ будет находиться в рабочей группе, а не в домене, тогда поле ввода имени домена можно оставить пустым.

 

Следующим этапом нам будет предложено придумать и ввести 2 раза пароль от пользователя root:

А также создать нового пользователя, без административных прав. Пишем имя человека, кто будет закреплен за пользователем (оно может совпадать с именем пользователя), имя нового пользователя  и также вводим 2 раза пароль от него:

Далее нам предлагают выбрать часовую зону, исходя из страны, которую обозначили ранее при установке:

Система продолжает устанавливать свои компоненты, после чего нам предлагают выбрать структуру и разметку дисков нашей ОС:

Здесь можем выбрать

  • весь диск для использования
  • использование менеджера логических томов (LVM)
  • использование LVM + шифрование дисков
  • создать структуру вручную, при достаточных знаниях и навыках.

После того как мы определились со структурой наших дисков, выбираем диски, которые будут участвовать в настройке, и саму схему разметки выбранных дисков. Подтверждаем выбор и продолжаем установку ОС.

Я выбрал использование всего диска, без логических томов.

Так как установка происходила с образа netinst, то система просмотрела весь установочный диск и предлагает сканировать другие диски, на наличие дополнительных пакетов для установки. Нам это не интересно, у нас есть "интернет" с помощью которого установим все необходимые дополнительные пакеты, поэтому смело нажимаем "No" и переходим к этапу подключения так называемых репозиториев, выбрав сперва страну, а потом сам ресурс, который находится на территории этой страны:

Репозитории — это хранилища различных пакетов, для установки их в ОС. Когда требуется что-либо установить, то сделать это можно локально, скачав нужные пакеты на компьютер, а можно подключить хранилища в интернете, где находятся эти самые пакеты для установки.

После установки стандартных пакетов, система предложит установить дополнительные пакеты из  предопределенных:

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

Это один из заключительных этапов установки ОС Debian на ВМ. Ждем завершения установки и конфигурирования.

Последним этапом будет установка загрузчика операционной системы:

Выбираем диск, на который будет записан загрузчик.

После этого система сделает последние настройки и перезагрузится уже в рабочем виде. Установка Debian успешно завершена и можно переходит ко второму этапу.

Этап второй. Настройка системы и установка PostgreSQL

После того, как система загрузилась — необходимо подключится к этой виртуальной машине для дальнейших настроек. Так как у нее нет графического интерфейса, то подключиться по обычному RDP — не получится. Вместо этого — мы можем подключиться по SSH в режиме командной строки. И все дальнейшие операции мы будем выполнять через нее.

Для этого необходимо скачать Putty Это специальная утилита как раз для таких подключений. Настраиваем подключение:

Где надо указать IP адрес ВМ, порт по-умолчанию 22. Для соединения нажать кнопку Open, а тип подключения SSH.

Во время установки был создан отдельный пользователь, под которым и будем подключатся к системе:

Удаленный доступ под пользователем root по-умолчанию запрещен. 

Первым делом — поставим последние обновления ОС. Для этого необходимо переключиться на пользователя root и обновиться, выполнив команды:

su

# переключение на пользователя root. После команды необходимо ввести пароль от пользователя root

apt update

# обновление списка пакетов доступных для загрузки

apt upgrade

# обновление установленных в системе пакетов, при наличии более свежих в подключенных репозиториях

Следующий шаг — изменение локали системы.

Так как ранее устанавливали систему "по-умолчанию" и выбрали английскую локаль, а в подавляющем большинстве разработчики и пользователи 1С работают на русском языке, то перед установкой PostgreSQL и его настройкой, необходимо изменить локаль системы также на русскую. Для этого необходимо ввести следующую команду:

dpkg-reconfigure locales

# изменение локализации в ОС

тут выбрано en_US.UTF-8 и надо выбрать еще ru_RU.UTF-8, выбрав ее основной и после это необходимо перезагрузить ОС для принятия изменений

Теперь можно начать установку PostgreSQL.

Существуют несколько сборок для работы с 1С:

1. От Etersoft — http://etersoft.ru/products/postgre 

Последняя версия (на 25.01.2024) сборки для Linux 9.2.20

2. От Postgrespro — https://postgrespro.ru/products/1c_build

Всегда актуальные и свежие сборки для 1С

3. От 1С — скачать можно с ресурса по поддержке пользователей 1С

Последняя версия сборки на момент публикации статьи (на 25.01.2024) — 10.5-10.1С

 

 

Рассмотрим установку PostgreSQL от команды Postgrespro

Заходим на сайт https://postgrespro.ru/ где нас интересует раздел "СУБД для работы платформы 1С:Предприятие".

В разделе есть "Генератор инструкций", который позволяет выбрать необходимый пакет СУБД для загрузки и установки:

На данной странице собраны все сборки PostgreSQL, которые работают с 1С для различных операционных систем. Экспериментальные и архивные. Также есть отдельный раздел рекомендованных версий для установки и работы с 1С "Поддерживаемые версии PostgreSQL для 1C"

Я остановил свой выбор на версии PostgreSQL 1C 11.1 для ОС Debian. НО по данной инструкции можно установить любую версию PSQL, которая есть на ресурсе.

Итак. Снова проверяем что в системе стоит по-умолчанию поддержка русской локали. Для этого набираем команду:

locale -a

# Отображение установленных локалей в системе. Должны увидеть:

C
C.UTF-8
en_US.utf8
POSIX
ru_RU.utf8

Начинаем процесс установки:

 apt install -y wget gnupg2 || apt install -y gnupg

# установка утилиты, которая позволяет работать с шифрованными данными, ключами, сертификатами.

wget -O - http://repo.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO | apt-key add -

# загрузка и добавления ключа в систему для дальнейшей загрузки и установки PSQL

echo deb http://repo.postgrespro.ru/1c-archive/pg1c-11.1/debian stretch main > /etc/apt/sources.list.d/postgrespro-1c.list

# добавление адреса репозитория, в котором находятся интересующие нас пакеты PSQL для установки.

apt-get update -y

# обновление списка пакетов, доступных для загрузки

apt install -y postgrespro-1c-11-server

# установка СУБД PSQL

/opt/pgpro/1c-11/bin/pg-setup initdb

# создание и инициализация кластера СУБД

/opt/pgpro/1c-11/bin/pg-setup service enable

# активация службы PSQL в системе

service postgrespro-1c-11 start

# запуск службы PSQL

Весь процесс установки необходимо производить от имени пользователя root. Иначе можно получить ошибки при установке.

После установки и запуска службы PostgreSQL можно проверить статус этой службы, введя команду:

 service postgrespro-1c-11 status

# проверка статуса службы PSQL. В ответ должны увидеть:

postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Fri 2024-02-01 05:41:02 EST; 1min 29s ago
Process: 513 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 513 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 19660)
CGroup: /system.slice/postgresql.service

Перед тем как приступить к созданию баз 1С, необходимо задать пароль внутреннему пользователю PostgreSQL. Для этого вводим команды:

su postgres

# переключение на системного пользователя postgres. Дальнейшая команда будет выполнена от его имени

/opt/pgpro/1c-11/bin/psql -U postgres -c "alter user postgres with password 'Your password';"

# создание и установка пароля пользователю postgres
# где -U postgres - системный пользователь от имени которого будет запущен PostgreSQL, user postgres - внутренний пользователь БД.
# Your password - пароль который мы задаем внутреннему пользователю БД.

 

Если появилась надпись "ALTER ROLE" — значит все хорошо, все получилось.

ВАЖНО. 

Если используется сервер 1С на другой машине и будет выполняться подключение к серверу БД по сети, то есть 2 момента:

1. По-умолчанию, PostgreSQL настроен на подключение только с локального хоста (localhost) по порту 5432. Поэтому необходимо в файле конфигурации postgresql.conf указать адрес, на котором будет приниматься соединения (в моём случае это локальный IP адрес машины, на которой установлен PostgreSQL):

В нашем случае файл конфигурации находится /var/lib/pgpro/1c-11/data. Чтобы его открыть, вводим команду

nano /var/lib/pgpro/1c-11/data/postgresql.conf

Файл откроется в режиме редактирования.

2. Второй момент на который необходимо обратить внимание, это правила авторизации пользователей к базам данных и правила разрешающие подключения к этим базам "из вне". Есть файл конфигурации клиентской аутентификации pg_hba.conf. В нем необходимо разрешить следующее:

Файл находится в той же папке и запустить его можно той же командой.

Я добавил в блок "IPv4 local connections" строку, которая предоставляет доступ ко всем БД, всем пользователям с адреса 192.168.154.137 — это IP адрес сервера 1С: Предприятие.

На этом настройка сервера Postgresql закончена и можно начать создавать БД в 1С на сервере Postgresql, используя следующие данные:

Сервер баз данных — IP адрес сервера Postgresql

Тип СУБД — Postgresql

Пользователь сервера БД — postgres и пароль тот, который был назначен ранее.

Теперь рассмотрим сборку PostgreSQL от 1С

Разница в установке сборки от 1С заключается в том, что потребуется изначально загрузить все установочные файлы с сайта ИТС на какой-нибудь другой компьютер. Скопировать эти файлы на наш. И только потом начинать установку "вручную" PSQL.

Начнем.

Для начала заходим на страницу https://releases.1c.ru/total и выбираем PostgreSQL:

Последняя сборка от 1С на момент публикации — 10.5-10.1C

Загружаем Дистрибутив СУБД PostgreSQL для Linux x86 (64-bit) одним архивом (DEB) и копируем его, например в папку /media/share, предварительно создав её.

Для простоты навигации в нашей ОС, я устанавливаю файловый менеджер Midnight Commander. Он помогает мне быстро передвигаться по файлам и папкам ОС и работать с ними. Установить менеджер можно командой от имени пользователя root:

su

apt install mc

# установка файлового менеджера

Скопировав данный архив, необходимо его распаковать:

Распаковать его можно командой:

tar -xvf postgresql_10.5_10.1C_amd64_deb.tar.bz2 -C postgres

# распаковка загруженного архива
# где postgres - это созданная мною папка для "удобства", куда я распаковал архив.

Переходим в папку postgres/postgresql-10.5-10.1C_amd64_deb:

cd postgres

cd postgresql-10.5-10.1C_amd64_deb

Для установки требуются дополнительные пакеты. Чтобы проверить названия этих пакетов, вводим команду:

dpkg --info postgresql-10_10.5-10.1C_amd64.deb | grep Depends

# команда отображает список дополнительных пакетов, которые необходимы для установки пакета postgresql-10_10.5-10.1C_amd64.deb

Результат:

Далее продолжаем установку:

apt-get install ssl-cert libossp-uuid16 libxslt1.1

# установка дополнительных пакетов, необходимых для работы PSQL

wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u10_amd64.deb

wget http://ftp.us.debian.org/debian/pool/main/p/postgresql-common/postgresql-client-common_199_all.deb

wget http://ftp.us.debian.org/debian/pool/main/p/postgresql-common/postgresql-common_199_all.deb

wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.4_amd64.deb

# загрузка дополнительных пакетов для работы PSQL

Весь процесс установки необходимо производить от имени пользователя root. Иначе можно получить ошибки при установке.

В сборках от 1С нет полного набора библиотек, необходимых для установки. Поэтому при каждой установке требуется смотреть на ошибки, в которых указываются отсутствующие пакеты.

Хочу отметить, что версии этих пакетов для разных версий ОС Debian, как и для разных версий PostgreSQl — свои.

В нашем примере используются нужные библиотеки конкретно для версий Debian 9 и PostgreSQL 10 от 1С.

После этого можно начать установку сборки PostgreSQL от 1С:

dpkg -i *.deb

# установка всех пакетов с расширением deb, что находятся в папке.

Хочу обратить внимание на то, что на момент написания этой статьи была доступна версия PSQL 10.5-10.1C. 

На момент публикации статьи (01.02.2024) эта версия для загрузки уже недоступна, но появилась новая версия 10.5-11.1C.

Попробуем установить эту версию.

Загружаем пакет Дистрибутив СУБД PostgreSQL для Linux x86 (64-bit) одним архивом (DEB), копируем его на ВМ в папку /media/share и попробуем установить:

dpkg -i *.deb

# установка всех пакетов deb из папки

При установке получаем ошибку, так как в системе отсутствуют дополнительные пакеты:

libssl1.0.0 версии 1.0.0 или старше

postgresql-client-common версии 182 или старше

Проверяем названия дополнительных пакетов для установки командой:

dpkg --info postgresql-10_10.5-11.1C_amd64.deb | grep Depends

Результат:

Ищем в интернете нужные пакеты, загружаем и копируем их на ВМ в ту же папку и пробуем повторно установить PSQL

apt -f install

# команда, которая исправляет неправильно установленные пакеты и их зависимости или удаляет.

dpkg -i *.deb

# установка всех deb пакетов из папки

При повторной установки появляются еще несколько пакетов, которые необходимы. Например, при ошибке появился пакет libicu55 версии 55 и выше, который нужно установить.

В очередной раз ищем эти пакеты и загружаем их в одну папку. Выполняем повторно команды

apt -f install

# команда, которая исправляет неправильно установленные пакеты и их зависимости или удаляет.

dpkg -i *.deb

# установка все deb пакетов из папки

Как только загрузим все необходимые пакеты, установка пройдет успешно и на экране будет отображатся

Можно теперь запускать сервер PSQL и ставить службу в автозагрузку:

Сделать это можно введя команду:

service postgresql start

# запуск службы PSQL

systemctl enable postgresql

# активация службы

И сразу проверим все ли хорошо, проверив статус службы:

service postgresql status

# проверка статуса службы

как видно на скриншоте — установлена и запущена последняя актуальная версия PSQL на 01.02.19

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

Задаем пароль внутреннему пользователю PostgreSQL:

su postgres

/usr/bin/psql -U postgres -c "alter user postgres with password 'Your password';"

 

ВАЖНО. 

Если вы используете сервер 1С на другой машине и будете подключаться к серверу БД по сети, то есть 2 момента:

1. По-умолчанию, сборка PostgreSQL от 1С настроена на подключение с любого адреса по порту 5432. Поэтому необходимо в файле конфигурации postgresql.conf указать адрес, на котором будет приниматься соединения (в моём случае это локальный IP адрес машины, на которой установлен PostgreSQL):

В нашем случае файл конфигурации находится /etc/postgresql/10/main

2. Второй момент на который необходимо обратить внимание, это правила авторизации пользователей к базам данных и правила разрешающие подключения к этим базам "из вне". Есть файл конфигурации клиентской аутентификации pg_hba.conf. В нем необходимо разрешить следующее:

Я добавил в блок "IPv4 local connections" строку, которая предоставляет доступ ко всем БД, всем пользователям с адреса 192.168.154.137 (Это IP адрес сервера 1С: Предприятие". По-умолчанию доступ разрешен всем.

Вот вроде и всё. Теперь на сервере 1С создаем базу и проверяем:

 

На этом этапе установка и запуск двух разных сборок PostgreSQL для 1С закончена. 

Дополнительная информация для ознакомления:
Настольная книга администратора Debian

13 Comments

  1. cssprite

    Конечно на вкус и цвет, предпочитаю MC сразу ставть и править конфиги его встроенным редактором.

    Reply
  2. sorb

    (1) Какие стандартные репы лежат в /etc/apt/sources.list.d/postgrespro-1c.list? Наоборот, если не требуется доступ к репам более ранних версий, разумно заменить содержимое.

    Reply
  3. awk

    Вместо su лучше использовать sudo -i — это безопасней.

    Reply
  4. capitan
    необходимо перезагрузить ОС для принятия изменений

    мне сдается это из миров виндовс, в никсах обычно можно без перезагрузки

    locale-gen en_US

    locale-gen ru_RU

    update-locale LANG=ru_RU.UTF8

    dpkg-reconfigure locales

    разве не срабатывает в Debian?

    И быстродействие не меряли — насколько деградирует если сервера разнести по сети ?

    Reply
  5. valentinko

    (3)

    sudo -i

    Да, безопасней, при условии настройки ограничений прав доступа пользователям группы sudo на определенные ресурсы ОС.

    При установке sudo по-умолчанию — вопрос о «безопасней» снимается.

    Я же указал простой способ установки без дополнительных настроек. Тема статьи немного другая )

    Reply
  6. valentinko

    (4)

    dpkg-reconfigure locales

    Команда dpkg-reconfigure locales выполняет то же самое что и команды

    locale-gen en_US

    locale-gen ru_RU

    update-locale LANG=ru_RU.UTF8,

    но только в режиме «мастера».

    А вот после выполнения этих команд — перезагрузка все равно требуется, так как изменения не принимаются. Только что попробовал.

    Насчет быстродействия — планирую написать отдельную статью, где постараюсь на цифрах показать разницу в быстродействии. В этой статье эти вопросы не рассматривались.

    Reply
  7. capitan

    (6)На Убунту 100% срабатывает такая последовательность без перезагрузки — постгри возьмет ru_RU.UTF8

    Про Дебиан спорить не буду

    Reply
  8. timka05

    Спасибо. Единственное у меня не срослось с кодировками. Если делать по вашему рецепту и потом добавлять кодировку ru_RU.UTF8 — то все плохо. В консоле кракозяблы, в mc тоже, соот-но Postgres тоже ставится не с теми языковыми настройками, 1С ругается на некорректные кодировки. Зато если сразу при установке правильно указать русский — то всё отлично.

    Проверено несколько раз в попытках найти в чем причина такого поведения.

    Т.к. наверное посоветую сразу при инсталяции ОС корректно выбирать язык.

    Reply
  9. hercares

    Добавил вашу статью в свой раздел help

    Для PostgreSQL какой посоветуете менеджер таблиц ?

    Reply
  10. valentinko

    (9) Боюсь что не до конца понял Вашей фразы «менеджер таблиц», но если Вы говорите об инструменте администрирования СУБД, то тут «на вкус и цвет».

    Лично я использую pgAdmin 4, либо уже утилитой командной строки psql, непосредственно на самом сервере СУБД.

    Reply
  11. hercares

    да, вы правильно меня поняли, софт для администрирования БД.

    Reply
  12. Esgerson

    Добрый день! На стадии создания пользователя получаю ошибку «Нет такого файла или каталога

    Он действительно работает локально и принимает

    соединения через Unix-сокет «/var/run/postgresql/.s.PGSQL.5432″?»

    Хотя сервер активен и данный файл в директории есть. Не подскажете в чем моя ошибка?

    ps сама команда — postgres@debian:/usr/bin$ psql -U postgres -c «bduser ‘bdpassword’;»

    Заранее спасибо

    Reply
  13. Esgerson

    (12)Решено. Были установлены не все зависимости и оснастка psql не могла запуститься

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *