Небольшая статья о том, как быстро и просто установить с нуля сервер БД 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
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