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

Публикация № 985501

Администрирование - Системное

Системное Linux Debian PostgreSQL

68
Предлагаю взять на заметку информацию по установке и настройке в формате 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.2019) сборки для Linux 9.2.20

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

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

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

Последняя версия сборки на момент публикации статьи (на 25.01.2019) - 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 2019-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.2019) эта версия для загрузки уже недоступна, но появилась новая версия 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

68

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. cssprite 26 04.02.19 08:48 Сейчас в теме
Конечно на вкус и цвет, предпочитаю MC сразу ставть и править конфиги его встроенным редактором.
2. sorb 04.02.19 09:10 Сейчас в теме
(1) Какие стандартные репы лежат в /etc/apt/sources.list.d/postgrespro-1c.list? Наоборот, если не требуется доступ к репам более ранних версий, разумно заменить содержимое.
3. awk 693 04.02.19 09:22 Сейчас в теме
Вместо su лучше использовать sudo -i - это безопасней.
5. valentinko 138 04.02.19 11:22 Сейчас в теме
(3)
sudo -i

Да, безопасней, при условии настройки ограничений прав доступа пользователям группы sudo на определенные ресурсы ОС.
При установке sudo по-умолчанию - вопрос о "безопасней" снимается.
Я же указал простой способ установки без дополнительных настроек. Тема статьи немного другая )
4. capitan 1205 04.02.19 09:44 Сейчас в теме
необходимо перезагрузить ОС для принятия изменений
мне сдается это из миров виндовс, в никсах обычно можно без перезагрузки
locale-gen en_US
locale-gen ru_RU
update-locale LANG=ru_RU.UTF8
dpkg-reconfigure locales
разве не срабатывает в Debian?

И быстродействие не меряли - насколько деградирует если сервера разнести по сети ?
6. valentinko 138 04.02.19 11:36 Сейчас в теме
(4)
dpkg-reconfigure locales


Команда dpkg-reconfigure locales выполняет то же самое что и команды
locale-gen en_US
locale-gen ru_RU
update-locale LANG=ru_RU.UTF8,
но только в режиме "мастера".

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

Насчет быстродействия - планирую написать отдельную статью, где постараюсь на цифрах показать разницу в быстродействии. В этой статье эти вопросы не рассматривались.
7. capitan 1205 04.02.19 11:42 Сейчас в теме
(6)На Убунту 100% срабатывает такая последовательность без перезагрузки - постгри возьмет ru_RU.UTF8
Про Дебиан спорить не буду
8. timka05 26.02.19 10:47 Сейчас в теме
Спасибо. Единственное у меня не срослось с кодировками. Если делать по вашему рецепту и потом добавлять кодировку ru_RU.UTF8 - то все плохо. В консоле кракозяблы, в mc тоже, соот-но Postgres тоже ставится не с теми языковыми настройками, 1С ругается на некорректные кодировки. Зато если сразу при установке правильно указать русский - то всё отлично.
Проверено несколько раз в попытках найти в чем причина такого поведения.
Т.к. наверное посоветую сразу при инсталяции ОС корректно выбирать язык.
9. hercares 28.02.19 14:24 Сейчас в теме
Добавил вашу статью в свой раздел help
Для PostgreSQL какой посоветуете менеджер таблиц ?
10. valentinko 138 28.02.19 15:20 Сейчас в теме
(9) Боюсь что не до конца понял Вашей фразы "менеджер таблиц", но если Вы говорите об инструменте администрирования СУБД, то тут "на вкус и цвет".
Лично я использую pgAdmin 4, либо уже утилитой командной строки psql, непосредственно на самом сервере СУБД.
11. hercares 28.02.19 18:46 Сейчас в теме
да, вы правильно меня поняли, софт для администрирования БД.
12. user1253769 16.07.19 17:24 Сейчас в теме
Добрый день! На стадии создания пользователя получаю ошибку "Нет такого файла или каталога
Он действительно работает локально и принимает
соединения через Unix-сокет "/var/run/postgresql/.s.PGSQL.5432"?"
Хотя сервер активен и данный файл в директории есть. Не подскажете в чем моя ошибка?
ps сама команда - postgres@debian:/usr/bin$ psql -U postgres -c "bduser 'bdpassword';"

Заранее спасибо
Оставьте свое сообщение