Преамбула: холивары на тему "Арч в продакшн" попрошу изливать в специализированные темы на форуме. Данная статья никоим образом не призывает использовать указанный дистрибутив, но написана исключительно для тех, кто взвесив все "за" и "против" самостоятельно пришёл к такому решению, либо хочет оценить его сложность в сравнении с другими вариантами.
Предполагается, что читатель немного подготовлен и уже научился устанавливать простые дистрибутивы типа 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.21
Скачайте и распакуйте у себя на компьютере полный дистрибутив платформы x64 для Linux. Чтобы копировать файлы с линукса на линукс никакие серверы samba или ftp поднимать и настраивать не требуется, просто зайдите на своем компе в каталог с требуемым файлом и воспользуйтесь командой scp:
$ scp setup-full-8.3.21.1393-x86_64.run user1@10.1.0.230:/home/user1
Файл будет скопирован через протокол ssh в домашний каталог пользователя user1 на сервере. Заходим на сервер с помощью ssh и запускаем установщик с привилегией sudo:
$ cd /home/user1
$ sudo ./setup-full-8.3.21.1393-x86_64.run
Нам нужно установить только сервер, веб-расширение (если требуется), и обязательно администрирование, нажимая в ответ на вопросы 'y' или 'n':
После завершения все необходимые файлы установились в каталог /opt/1cv8. Это основной каталог программ 1С в Linux, аналог C:\Program Files\1cv8, для изменения файлов в нём требуются административные права, в Linux это команда sudo.
Для запуска агента сервера 1С в качестве службы необходимо провести несложные манипуляции.
Копируем файл описания службы в системный каталог с новым именем, с этим именем и будет запускаться служба (в команде версия платформы указывается актуальная, в данном случае это 8.3.21.1393), имя службы у нас будет srv1cv8:
$ sudo cp /opt/1cv8/x86_64/8.3.21.1393/srv1cv8-8.3.21.1393@.service /usr/lib/systemd/system/srv1cv8.service
Если требуется режим отладки то редактируем скопированный файл (редактор nano не был установлен, поэтому сначала установим его):
$ sudo pacman -S nano
$ sudo nano /usr/lib/systemd/system/srv1cv8.service
Находим следующую строчку и дописываем в конец -debug
Environment=SRV1CV8_DEBUG=-debug
Жмем Ctrl-O, Enter, Ctrl-X для выхода из редактора. Разрешаем автозапуск службы командой:
$ sudo systemctl enable srv1cv8
Created symlink /etc/systemd/system/multi-user.target.wants/srv1cv8.service U94; /usr/lib/systemd/system/srv1cv8.service.
Запускаем:
$ sudo systemctl start srv1cv8
Проверяем статус службы:
[user1@server2 ~]$ systemctl status srv1cv8
`79; srv1cv8.service - 1C:Enterprise Server 8.3 (8.3.21.1393) ()
Loaded: loaded (/usr/lib/systemd/system/srv1cv8.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-07-08 15:14:19 MSK; 1s ago
Main PID: 1325 (ragent)
Tasks: 82 (limit: 4687)
Memory: 59.2M
CPU: 245ms
CGroup: /system.slice/srv1cv8.service
_00;^72;1325 /opt/1cv8/x86_64/8.3.21.1393/ragent -d /home/usr1cv8/.1cv8/1C/1cv8 -port 1540 -regport 1541 -range 1560:1591 -seclev 0 ->
^92;^72;1338 /opt/1cv8/x86_64/8.3.21.1393/rmngr -port 1541 -host server2 -range 1560:1591 -d /home/usr1cv8/.1cv8/1C/1cv8/ -debug -tcp>
Если у вас такой же вывод, то поздравляю! Сервер 1С запущен и работает. Но этого нам недостаточно, ведь еще нужно администрировать кластер, а в среде линукс это можно делать только с помощью службы 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.21.1393/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 U94; /usr/lib/systemd/system/srv1cv8-ras.service.
[user1@server2 ~]$ sudo systemctl start srv1cv8-ras
[user1@server2 ~]$ sudo systemctl status srv1cv8-ras
`79; 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 2022-07-08 15:30:53 MSK; 5s ago
Main PID: 24467 (ras)
Tasks: 12 (limit: 4687)
Memory: 17.3M
CPU: 21ms
CGroup: /system.slice/srv1cv8-ras.service
^92;^72;24467 /opt/1cv8/x86_64/8.3.21.1393/ras cluster --port=1545
июл 08 15:30:53 server2 systemd[1]: Started 1C:Enterprise Remote Administration Service.
июл 08 15:30:53 server2 ras[24467]: 1C:Enterprise 8.3 (x86-64) (8.3.21.1393) 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С и открываем его тонким клиентом, необходимо включить Функкции для технического специалиста и найти обработку Управление серверами
Готово! Уже можно работать с отдельным сервером СУБД.
Во второй части будет установка Postgresql 14 на этот же сервер.