Установка 1С-сервер, PostgresPro на Ubuntu Server 22.04

Задача: установить Сервер 1С версии 8.3.25.1286 на Ubuntu Server 22.04
В качестве базы данных использовать PostgreSQL.

Компания "Софт-Релиз" предоставляет услугу по установке сервера 1С на ОС Linux, а для тех, кто желает попробовать себя в администрировании предлагаем данную статью.

Установка Ubuntu Server 22.04 LTS в этой статье не рассматривается, т.к. статей на эту тему много, достаточно вбить запрос в строку поиска.

Единственное, что упомяну про систему - это то, что лучше иметь отдельный диск под систему (корневой раздел), отдельный под /home и диск под базы данных /var. Т.е. 3 логических устройства минимум.

Я в крайний раз сделал на SSD - корневую, а диск 2ТБ разделил на 2 логических устройства, на первом сделал раздел под данные Postgres (/mnt/data), на втором под /home.
Но т.к. сделал это уже после установки Postgres, мне пришлось переносить каталог Postgres, о чем поведаю ниже..


Установка PostgreSQL

После того, как система установлена, а диски все правильно подключены, приступаем к установке PostgresPro.

Я выбрал вариант установки с дистрибутива, PostgreSQL Pro 1c-16, который доступен на сайте [1c.postgres.ru](https://1c.postgres.ru/), адаптирован к работе с 1С:Предприятие 8.3 Сервер, плюс к тому, можно получить подробные инструкции по установке и даже видео "how-to"

Текст с инструкцией присылают по запросу дистрибутива, нужно только заполнить форму.

В моем случае система была чиста, PostgresPro устанавливался впервые, поэтому для меня было достаточно сделать следующее:
- качаем скрипт **pgpro-repo-add.sh**, который установит нам репозиторий PostgresPro.

user@server:~$ wget https://repo.postgrespro.ru/1c-16/keys/pgpro-repo-add.sh

- запускаем скрипт установки репозитория

user@server:~$ sudo sh pgpro-repo-add.sh

- устанавливаем
user@server:~$ sudo apt-get install postgrespro-1c-16

Установка пароля для пользователя postgres
Лучше, конечно, для подключения к базам использовать отдельного пользователя, но я пошел по более простому пути, задал пароль пользователю postgres:

Вместо password подставьте свой пароль..
user@server:~$ sudo -u postgres psql -d template1 -c "ALTER USER postgres PASSWORD 'password'"

Затем закомментил с помощью редактора `nano` следующую строку в файле /var/lib/pgpro/1c-16/data/pg_hba.conf
#local all all peer
И в тот-же файл дописал ниже неё следующую строку:
local all postgres md5

*! Чтобы сохранить файл жмем `Ctrl+o`, выйти из редактора `Ctrl+w

Перенос папки с базами Postgres на отдельный логический диск

Т.к. я изначально не монтировал диски правильно (не выделил отдельный диск по каталог /var), мне пришлось монтировать раздел диска для данных в папку /mnt/data после установки PostgresPro.

Чтобы определить, какой из дисков нужно смонтировать, посмотрим, какие подключены
user@server:~$ lsblk -f
- ключ "-f" в т.ч. показывает такие детали, как LABEL и UUID диска. UUID пригодится для правки таблицы разделов.

В моем случае они уже подключены. Если диск не подключен, у него будет поле MOUNTPOINTS пустым.

Если диск не отформатирован, нужно воспользоваться командами 'parted' и 'mkfs.ext'. Описания команд есть в сети, единственное, что отмечу, тип файловой системы должен быть 'ext4'.

Создадим папку, в которую будем монтировать диск для данных.
user@server:~$ sudo mkdir /mnt/data/

С помощь команды `blkid` или `lsblk -f` узнаем UUID нужного диска.

Затем отредактируем файл /etc/fstab. Я обычно пользуюсь редактором `nano`
user@server:~$ sudo nano /etc/fstab

В файл нужно добавить такую строку:
UUID=590b253d-d3d6-4d87-b05d-64270b260c71 /mnt/data ext4 defaults 0 0
У вас будет свой UUID, вместо моего `590b253d-d3d6-4d87-b05d-64270b260c71`

*! Чтобы сохранить файл жмем `Ctrl+o`, выйти из редактора `Ctrl+w

Затем запустить команду монтирования всех дисков, указанных в /etc/fstab
user@server:~$ sudo mount -a

Остановим сервис PostgresPro и скопируем данные PostgresPro в /mnt/data
user@server:~$ sudo service postgrespro-1c-16 stop
user@server:~$ rsync -arv /var/lib/pgpro/ /mnt/data/


Заменим путь к папке данных PostgresPro
В новых редакциях PostgresPro `data_directory` указывает на каталог, где хранится и папка /base (базы данных postgres) и конфигурационные файлы, такие как `postgresql.conf` и `pg_hba.conf`
Можно перенести только папку `/base` в новую локацию, тогда нужно править файл `postgresql.conf`, который находился у меня в папке `/var/lib/pgpro/1c-16/data`
Я же перенес всю папку `/data`, а чтобы поменять к ней путь изменил файл `/etc/defoult/postgrespro-1c-16`:
Указал новый путь, а старую строку закомментировал:
#PGDATA=/var/lib/pgpro/1c-16/data
PGDATA=/mnt/data/pgpro/1c-16/data


Запускаем сервер PostgresPro
user@server:~$ sudo service postgrespro-1c-16 start

Проверяем статус:
user@server:~$ sudo service postgrespro-1c-16 status


Настройка часового пояса на сервере
Чтобы узнать системное время выполните команду `date`
user@server:~$ date

Если ваша часовая зона отличается от Лондонского, то нужно внести корректировку.
Сначала найти название вашей зоны:
user@server:~$ ls /usr/share/zoneinfo


Я нахожусь в Азии, поэтому смотрю сюда:
user@server:~$ ls /usr/share/zoneinfo/Asia

Сделаем архив прежней папки `/etc/localtime`
user@server:~$ sudo cp /etc/localtime /etc/localtime.bak

Укажем системе наш часовой пояс:
user@server:~$ sudo ln -sf /usr/share/zoneinfo/Asia/Yekaterinburg /etc/localtime

Установка 1С-Сервера
Ставим дополнительные пакеты (шрифты и т.д. и т.п)
user@server:~$ sudo apt install imagemagick unixodbc libgsf-bin ttf-mscorefonts-installer

Скачиваем дистрибутив с официального сайта releases.1c.ru


Я выбрал "Технологическую платформу", она включает всё, даже то, что мне не нужно было.
Но этот вариант подходит, если не хочется вникать в тонкости, скрипт сам всё поставит, надо будет только подтверждать или отклонять предложения.

Чтобы передать файл дистрибутива на сервер я использовал winscp (программа, через которую можно подключится к серверу по ssh-протоколу: 22 порт)

Далее нужно разархивировать файл в любую папку в домашней директории.
Я для этого использую файловый менеджер `mc`, он есть в любом дистрибутиве Ubuntu.
Установить можно командой:
user@server:~$ sudo apt-get install mc

Я распаковал архив дистрибутива server64_8_3_25_1286.zip в папку `/home/8_3_25_1286`
Выйти из mc можно командой `exit`

Запустил скрипт установки 1С:
user@server:~$ cd 8_3_25_1286
user@server:~$ sudo ./setup-full-8.3.25.1286-x86_64.run


Программа задавала много вопросов, на которые, в основном, я отвечал утвердительно.
Главное - поставить сервер, доп.языки - русский, дополнение по веб-доступу.
В случае, если что-то пропустите, можно заново запустить этот-же скрипт и он установит нужные Вам компоненты.

Затем делаю следующее (для того, чтобы был доступ от имени usr1cv8 к папкам, где установлена 1С):
user@server:~$ sudo sudo chown -R usr1cv8:grp1cv8 /opt/1cv8

Устанавливаем переменную `SRV1CV8_DEBUG=-debug` в файле `/etc/systemd/system/srv1cv8-8.3.25.1286@.service`
user@server:~$ sudo nano /etc/systemd/system/srv1cv8-8.3.25.1286@.service
Ищем в тексте `SRV1CV8_DEBUG=`, пишем -debug. Должно получится так:
Environment=SRV1CV8_DEBUG=-debug

*! Чтобы сохранить файл жмем `Ctrl+o`, выйти из редактора `Ctrl+w`*

Чтобы сервер «1С» использовать как сервис, а также автоматически запускать во время загрузки ОС, необходимо зарегистрировать юнит кластера серверов в systemd:
user@server:~$ sudo systemctl link /opt/1cv8/arch/8.3.25.1286/srv1cv8-8.3.25.1286@.service

Далее запустить..
user@server:~$ sudo systemctl start srv1cv8-8.3.25.1286@.service

Готово!


Если Вы не готовы к самостоятельной установке, обращайтесь к нам. Мы предоставляем услугу по установке сервера 1С на ОС Linux.

Чтобы ознакомится с подробностями такой услуги перейдите по ссылке.


Автор: Евгений Подгайко 2024/06/28