diamond АШ Tlg

Как установить сервер 1С:Предприятия 8.3.22, 8.3.23, 8.3.24 на сервер Arch Linux

Пошаговое описание установки сервера на консольный Arch Linux (актуальность апрель 2024) для новичков в мире Linux

Дисклеймер: c холиварами на тему "Арч в продакшн" прекрасно знаком. На эту тему у меня есть свои соображения и возможно они будут изложены в отдельной публикации. Данная статья никоим образом не призывает использовать указанный дистрибутив в продуктиве, но написана исключительно для тех, кто взвесив все "за" и "против" самостоятельно пришёл к такому решению, либо хочет оценить его сложность в сравнении с другими вариантами.

Актуальность задачи также возросла летом 2023 года после того, как фирма 1С начала бесплатно раздавать лицензию для разработчиков (комьюнити лицензия), которая позволяет каждому тестировать свой код на настоящем сервере или изучать технологические вопросы.

Предполагается, что читатель немного подготовлен и уже научился устанавливать простые дистрибутивы типа Ubuntu, Mint, Астра и т.д. с графическим окружением, а также смог установить и успешно запустить клиента 1С.

Базовая установка Arch Linux (только консоль)

Инструкция будет "по верхам", раскрывающая отклонения от установки по умочанию. Рекомендую для начала потренироваться в виртуальном окружении, для этого установите QEMU/KVM и virt-manager. Подробный порядок установки QEMU/KVM для своего дистрибутива вы легко найдете в сети, ничего сложного там нет. При выборе железа для виртуального сервера установите контроллер VirtIO SCSI и диск типа SCSI, сетевая карта тоже VirtIO. Удалите ненужные для сервера устройства "Планшет" и "Звук":


В боевом окружении вы скорее всего будете использовать несколько дисков и партиций, особенно для СУБД Postgres, но в данной статье всё будет на одном небольшом диске тренировочной машины.

В дистрибутив Arch включён скрипт установки, значительно снижающий порог вхождения в данный дистрибутив, т.е. не требуется сидеть часами и настраивать по длинной инструкции в вики. После загрузки с установочного образа сразу запускаем скрипт установщика:

# archinstall

Список того что я поменял:

  • Mirror region указал Russia (зеркало репозиториев, необязательно)
  • Выбрал локаль ru_RU.UTF8
  • Разметку диска автоматически на ext4
  • Поменял Hostname на server2
  • Добавил пользователя user1 и дал ему права sudo
  • Выбрал профиль Server, включил sshd
  • Выбрал ядро linux-zen вместо стокового (если политика ИБ требует, то hardened)
  • Дополнительные пакеты mc и base-devel (необязательно, можно установить и позже если надо)
  • Настроил сетевую карту Manual configuration - DHCP
  • Установил Timezone на московское время

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

Конечно можно еще установить и настроить firewall, включить selinux, шифрование дисков, настроить очередь дисков, энергосбережение cpupower, сделать много других усовершенствований и оптимизаций, но это тема отдельных больших статей и касаться здесь этих тем я не буду.

Для выяснения адреса тут же в графической консоли virt-manager логинимся на сервер созданным при установке пользователем user1 и набираем команду ip address:

Теперь окно virt-manager можно закрыть и в дальнейшем работа с сервером осуществляется только через удаленную консоль ssh. Наберите в консоли своего рабочего компьютера следующую команду (при первом заходе набираем yes) и далее пароль для user1:

$ ssh user1@10.1.0.230

Установка сервера 1С 8.3.22 (1С 8.3.23, 1С 8.3.24)

Скачайте и распакуйте у себя на компьютере полный дистрибутив платформы x64 для Linux. Чтобы копировать файлы с линукса на линукс никакие серверы samba или ftp поднимать и настраивать не требуется, просто зайдите на своем компе в каталог с требуемым файлом и воспользуйтесь командой scp:

$ scp setup-full-8.3.22.2143-x86_64.run user1@10.1.0.230:/home/user1

Файл будет скопирован через протокол ssh в домашний каталог пользователя user1 на сервере. Заходим на сервер с помощью ssh и запускаем установщик с привилегией sudo:

$ cd /home/user1
$ sudo ./setup-full-8.3.22.2143-x86_64.run

Нам нужно установить только сервер, веб-расширение (если требуется), и обязательно администрирование, нажимая в ответ на вопросы 'y' или 'n':

[user1@server2 ~]$ sudo ./setup-full-8.3.22.2143-x86_64.run 
Выбор языка
    
Пожалуйста, выберите язык установки
[1] Arabic - العربية
[2] Azerbaijani - Azərbaycan
[3] Bulgarian - български език
[4] German - Deutsch
[5] Greek - [7;_5;_5;_1;_7;_3;_4;^0;
[6] English - English
[7] Spanish - Español
[8] French - Français
[9] Hungarian - Magyar
[10] Italian - Italiano
[11] Kazakh - u9;азаu9; тілі
[12] Lithuanian - lietuvi%1; kalba
[13] Latvian - Latvijas
[14] Polish - Polski
[15] Romanian - Română
[16] Russian - Русский
[17] Turkmen - Türkmençe
[18] Turkish - Türkçe
[19] Ukrainian - українська
[20] Vietnamese - TiN71;ng ViN79;t
[21] Simplified Chinese - 简体中文
 Пожалуйста, выберите опцию [16] : 16
----------------------------------------------------------------------------
Добро пожаловать в установку 1С:Предприятие.
    
----------------------------------------------------------------------------
Выберите компоненты
    
1С:Предприятие [Y/n] :n
    
1С:Предприятие - Тонкий клиент [y/N] : n
    
1С:Предприятие - Тонкий клиент, файловый вариант [y/N] : n
    
Сервер 1С:Предприятия 8 [y/N] : y
    
Модули расширения веб-сервера [y/N] : y
    
Администрирование сервера 1С:Предприятия [y/N] : y
    
Интерфейсы на различных языках : Y (Cannot be edited)
    
...далее жмём Enter на все вопросы
    
Верно ли выбранное выше? [Y/n]: 
    
----------------------------------------------------------------------------
Программа готова к установке 1С:Предприятие на ваш компьютер.
    
Вы хотите продолжить? [Y/n]: 
    
----------------------------------------------------------------------------
Пожалуйста, подождите пока программа установит 1С:Предприятие на ваш компьютер.
    
 Установка
 0% ______________ 50% ______________ 100%
 #########################################
    
----------------------------------------------------------------------------
Завершена установка 1С:Предприятие на ваш компьютер.

После завершения все необходимые файлы установились в каталог /opt/1cv8. Это основной каталог программ 1С в Linux, аналог C:\Program Files\1cv8, для изменения файлов в нём требуются административные права, в Linux это команда sudo.

Для запуска агента сервера 1С в качестве службы необходимо провести нижеследующие манипуляции.

Настройка запуска сервера 1С как службы

Копируем файл описания службы в системный каталог с новым именем, с этим именем и будет запускаться служба (в команде версия платформы указывается актуальная, в данном случае это 8.3.22.2143), имя службы у нас будет srv1cv8:

$ sudo cp /opt/1cv8/x86_64/8.3.22.2143/srv1cv8-8.3.22.2143@.service /usr/lib/systemd/system/srv1cv8.service

Update: Начиная с версии платформы 8.3.23 файл srv1cv8.service может создаваться автоматически при установке платформы, тогда копировать не требуется. Но это не точно.

Если требуется режим отладки то редактируем скопированный файл (редактор nano не был установлен, поэтому сначала установим его):

$ sudo pacman -S nano
$ sudo nano /usr/lib/systemd/system/srv1cv8.service

Находим следующую строчку и дописываем в конец -debug либо в кавычках "-debug -http"

Environment=SRV1CV8_DEBUG=-debug

Также поменяем строчку:

Environment=SRV1CV8_KEYTAB=/home/usr1cv8/usr1cv8.keytab

Жмем Ctrl-O, Enter, Ctrl-X для выхода из редактора. Разрешаем автозапуск службы командой:

$ sudo systemctl enable srv1cv8
Created symlink /etc/systemd/system/multi-user.target.wants/srv1cv8.service /usr/lib/systemd/system/srv1cv8.service.

Если отсутствует домашний каталог /home/usr1cv8, то необходимо создать его вручную и дать права владельца пользователю usr1cv8 и группе grp1cv8.

$ sudo mkdir /home/usr1cv8
$ sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8

Также чтобы не было проблем с соединениями необходимо прописать имя сервера в /etc/hosts самого сервера с локальным адресом 127.0.0.1:

127.0.0.1 localhost server2

По аналогии с установкой клиента необходимо удалить конфликтующую версию библиотеки libstdc++, если она установилась вместе с клиенской частью:

$ sudo rm /opt/1cv8/x86_64/8.3.22.2143/libstdc++.so.6
// + начиная с версии 8.3.24.1467:
$ sudo rm /opt/1cv8/x86_64/8.3.24.1567/libgcc_s.so.1
$ sudo rm /opt/1cv8/common/libgcc_s.so.1    

Вот теперь можно запускать:

$ sudo systemctl start srv1cv8

Проверяем статус службы:

[user1@server2 ~]$ systemctl status srv1cv8
    srv1cv8.service - 1C:Enterprise Server 8.3 (8.3.22.2143) ()
     Loaded: loaded (/usr/lib/systemd/system/srv1cv8.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2023-07-21 09:14:19 MSK; 1s ago
   Main PID: 1325 (ragent)
      Tasks: 82 (limit: 4687)
     Memory: 59.2M
        CPU: 245ms
     CGroup: /system.slice/srv1cv8.service
             /opt/1cv8/x86_64/8.3.22.2143/ragent -d /home/usr1cv8/.1cv8/1C/1cv8 -port 1540 -regport 1541 -range 1560:1591 -seclev 0 
             /opt/1cv8/x86_64/8.3.22.2143/rmngr -port 1541 -host server2 -range 1560:1591 -d /home/usr1cv8/.1cv8/1C/1cv8/ -debug -tcp>

Если у вас такой же вывод, то поздравляю! Сервер 1С запущен и работает. Но этого нам недостаточно, ведь еще нужно администрировать кластер, а в среде линукс это можно делать только с помощью службы ras.

Настройка запуска службы администрирования 1C RAS

Создайте с помощью nano или mc новый файл конфигурации службы /usr/lib/systemd/system/srv1cv8-ras.service и введите в него следующее содержание:

[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target
Requires=network.target
[Service]
Type=simple
ExecStart=/opt/1cv8/x86_64/8.3.22.2143/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8
[Install]
WantedBy=multi-user.target

При необходимости поменяйте порт на другой номер, отличный от 1545.

Включим, запустим и проверим статус службы:

user1@server2 ~]$ sudo systemctl enable srv1cv8-ras
Created symlink /etc/systemd/system/multi-user.target.wants/srv1cv8-ras.service /usr/lib/systemd/system/srv1cv8-ras.service.
[user1@server2 ~]$ sudo systemctl start srv1cv8-ras
[user1@server2 ~]$ sudo systemctl status srv1cv8-ras
srv1cv8-ras.service - 1C:Enterprise Remote Administration Service
     Loaded: loaded (/usr/lib/systemd/system/srv1cv8-ras.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2023-07-21 10:30:53 MSK; 5s ago
   Main PID: 24467 (ras)
      Tasks: 12 (limit: 4687)
     Memory: 17.3M
        CPU: 21ms
     CGroup: /system.slice/srv1cv8-ras.service
             /opt/1cv8/x86_64/8.3.21.1393/ras cluster --port=1545

июл 21 10:30:53 server2 systemd[1]: Started 1C:Enterprise Remote Administration Service.
июл 21 10:30:53 server2 ras[24467]: 1C:Enterprise 8.3 (x86-64)  (8.3.22.2143) Remote Administration Server started. Ctrl+C to exit.
[user1@server2 ~]$

После всех настроек на всякий случай перезагрузим весь сервер и снова проверим статус всех служб. Также проверим какие порты слушает наш сервер:

[root@server2 user1]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      345/sshd: /usr/bin/ 
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      337/systemd-resolve 
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      337/systemd-resolve 
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN      337/systemd-resolve 
tcp        0      0 0.0.0.0:1560            0.0.0.0:*               LISTEN      843/rphost          
tcp        0      0 0.0.0.0:1541            0.0.0.0:*               LISTEN      373/rmngr           
tcp        0      0 0.0.0.0:1540            0.0.0.0:*               LISTEN      344/ragent          
tcp        0      0 0.0.0.0:1545            0.0.0.0:*               LISTEN      343/ras             
tcp6       0      0 :::22                   :::*                    LISTEN      345/sshd: /usr/bin/ 
tcp6       0      0 :::5355                 :::*                    LISTEN      337/systemd-resolve 
tcp6       0      0 :::1560                 :::*                    LISTEN      843/rphost          
tcp6       0      0 :::1541                 :::*                    LISTEN      373/rmngr           
tcp6       0      0 :::1540                 :::*                    LISTEN      344/ragent          
udp        0      0 0.0.0.0:5355            0.0.0.0:*                           337/systemd-resolve 
udp        0      0 0.0.0.0:1541            0.0.0.0:*                           373/rmngr           
udp        0      0 0.0.0.0:1560            0.0.0.0:*                           843/rphost          
udp        0      0 0.0.0.0:34357           0.0.0.0:*                           344/ragent          
udp        0      0 127.0.0.54:53           0.0.0.0:*                           337/systemd-resolve 
udp        0      0 127.0.0.53:53           0.0.0.0:*                           337/systemd-resolve 
udp        0      0 10.1.0.230:68           0.0.0.0:*                           264/systemd-network 
udp6       0      0 :::37989                :::*                                843/rphost          
udp6       0      0 :::5355                 :::*                                337/systemd-resolve 
udp6       0      0 :::1541                 :::*                                373/rmngr           
udp6       0      0 :::1560                 :::*                                843/rphost          
udp6       0      0 :::57572                :::*                                344/ragent          
[root@server2 user1]#

Для администрирования кластера создаем у себя на компьютере с помощью конфигуратора новую пустую файловую базу 1С и открываем его тонким клиентом, необходимо включить Функции для технического специалиста и найти обработку Управление серверами


Готово! Осталось лицензировать сервер и уже можно работать.

Добавление #1: как использовать лицензию разработчика на локальном компьютере без серверной лицензии

Подробнее о лицензии разработчика расписано в отдельной статье. Здесь кратко о типичной проблеме.

Локальный сервер не будет видеть комьюнити лицензию, если вы сначала установите клиента, активируете лицензию разработчика, и потом вдогонку решите установить серверные компоненты. Дело в том, что в отсутствие сервера лицензия установится в каталог текущего пользователя ~/.1cv8/1C/1cv8/conf/[номер лицензии].lic, и естественно служба сервера под учёткой usr1cv8 его не увидит.

Во избежание проблем с сервером, сразу же устанавливайте серверные компоненты и настройте запуск службы агента. И только потом активируйте лицензию разработчика! В этом случае файл лицензии установится в каталог /var/1C/licenses. В случае если сервер всё ещё не видит лицензию - проверьте права на каталог и файл лицензии, дайте право записи и чтения всем.

Если всё же сервер был установлен после получения лицензии, то нужно перенести файл лицензии разработчика в каталог /var/1C/licenses из профайла пользователя. Причём именно перенести, а не скопировать - иначе платформа увидит две копии лицензии и немедленно заблокирует её.

Добавление #2: не удаляется база из кластера при использовании обработки "Управление серверами"

Причина скорее всего в существующем соединении с базой. Даже если перезагрузить службу сервера 1С и попытаться снова - удаления не происходит. Обойти проблему можно при помощи консольной утилиты rac.

Сперва нужно узнать идентификатор кластера:

[root@server2 user1]# /opt/1cv8/x86_64/[версия платформы]/rac cluster list
cluster                       : 080629af-ef97-4c26-922c-96584e6e61c2
host                          : server2
port                          : 1541
name                          : "Локальный кластер"
...

Далее нужно получить идентификатор удаляемой базы:

[root@server2 user1]# /opt/1cv8/x86_64/[версия платформы]/rac infobase --cluster=080629af-ef97-4c26-922c-96584e6e61c2 summary list
infobase : a217935e-2152-4497-86e7-b3a147b83713
name     : test_base
descr    :

Полная команда для удаления:

[root@server2 user1]# /opt/1cv8/x86_64/[версия платформы]/rac infobase --cluster="080629af-ef97-4c26-922c-96584e6e61c2" drop --infobase-user="Админ базы" --infobase-pwd="пароль админа" --infobase="a217935e-2152-4497-86e7-b3a147b83713"

Связанные материалы

Как установить клиента 1С:Предприятия 8.3.22, 8.3.23 и 8.3.24 на Arch

Как установить PostgreSQL 14 и 15 с патчами 1С на сервер Arch Linux

Как установить и запустить PostgresPro-1C версии 15 или 16 в контейнере podman

Комьюнити-лицензия разработчика 1С: полное руководство по получению, установке, решению проблем