ВАЖНО: Читайте обновлённое руководство по установке сервера 1С под Linux в статье «От экспертов „1С‑Рарус“: Российские дистрибутивы Linux и установка в них сервера 1С» (январь 2023).
Информация о руководстве
Руководство рассчитано на технических специалистов с опытом установки операционных систем семейства Windows. После изучения материалов статьи вы сможете установить серверную часть 1С в ОС GNU/Linux для эксплуатации на больших и маленьких проектах.
В руководстве описывается установка и настройка серверной системы на базе ОС GNU/Linux, а именно дистрибутива Ubuntu 18.04 с сервером 1С:Предприятия 8.3. Система включает следующие компоненты: сервер 1С, сервер СУБД PostgreSQL, менеджер лицензий платформы, сервер лицензирования СЛК, веб-сервер Apache.
Данное руководство по установке 1С в Linux рассчитано под версии:
- Ubuntu-18.04.-server-amd64.
- PostgreSQL 1C 12.8.1 от компании PostgresPro.
- Apache 2.4.
- Сервера 1С 8.3.16.1973, 8.3.17.2306, 8.3.18.1616, 8.3.19.1264.
Но также может быть адаптировано и под другие версии.
Оглавление
- Термины
- Установка ОС Ubuntu (серверный вариант)
- Удаленное управление GNU/Linux сервером
- Установка и настройка сервера 1С
- Установка PostgreSQL для 1С
- Оптимизация параметров PostgreSQL
- Установка драйверов HASP
- Управление кластером 1С
- Установка и настройка веб-сервера
- Установка сервера лицензирования СЛК
- Заключение
- Ссылки
1. Термины
- Пакеты (deb— пакет для ОС Debian/Ubuntu; rpm — пакет для ОС RedHat/Centos) — формат предоставления программного обеспечения в виде пакетов, содержащих помимо дистрибутива программного обеспечения, набор определённых метаданных, которые могут включать в себя полное имя пакета, номер версии, описание пакета, имя разработчика, контрольную сумму, зависимости с другими пакетами.
- tar — формат файла архива, а также название традиционной для Unix (ru.wikipedia.org/wiki/Unix) программы для работы с такими архивами.
- Локаль (locale) — региональные настройки.
- Репозиторий, хранилище — место, где хранятся и поддерживаются какие-либо данные, необходимые для обновлений/установки приложений/пакетов.
- Менеджер пакетов (apt — debian, rpm — RedHat) — система управления пакетами с программным обеспечением, занимается корректной установкой/удалением пакетов разрешает зависимости, а также ведет базу установленного ПО, например, rpm и dpkg, можно сказать, что это аналог msi из мира Windows.
- Зависимости — одна из важнейших сфер деятельности менеджера пакетов. Менеджер пакетов отслеживает зависимости между пакетами, что значительно облегчает задачи администратора. Зависимости возникают в тех случаях, когда работоспособность ПО из одного пакета зависит от ПО, входящего в состав другого пакета.
- sudo — команда для запуска приложений от имени другого пользователя, по умолчанию от пользователя root.
2. Установка ОС Ubuntu (серверный вариант)
Существует множество дистрибутивов ОС GNU/Linux, многие из них специализированные для каких-то конкретных задач, а есть и дистрибутивы общего назначения. С кратким описанием каждого и выбором по параметрам можно ознакомиться на сайте distrowatch.com.
Так как мы выбираем ОС для установки сервера «1С:Предприятие», то логично использовать ОС из списка поддерживаемых операционных систем (v8.1c.ru/tekhnologii/sistemnye-trebovaniya-1s-predpriyatiya-8/), а именно:
- Astra Linux:
- Common Edition, версии 1.11, 2.12.
- Special Edition, версии 1.4, 1.5, 1.6.
- CentOS 7.
- Debian, версии 8 и 9.
- Mint, версии 18 и 19.
- Red Hat Enterprise Linux 7.
- Ubuntu, версии 14.04 LTS, 16.04 LTS и 18.04 LTS.
- Альт Линукс: версии 6.0 СПТ, 7.0 СПТ, Рабочая станция 7, Рабочая станция 8, Рабочая станция К 8, Сервер 7, Сервер 8, Образование 8, Альт Альт 8 СП.
Все поддерживаемые дистрибутивы можно сразу разделить на 2 категории.
RPM-based
Red Hat Enterprise Linux (RHEL)
Коммерческий дистрибутив от компании Red Hat, для использования в продуктивной среде необходима подписка, в целях разработки существует возможность бесплатного использования.
CentOS
Ранее дистрибутив поддерживался сообществом и позиционировался как полностью бинарно совместимый с Red Hat Enterprise Linux для тех, кому не нужна корпоративная поддержка со стороны Red Hat, но, после того как CentOS ушла под крыло Red Hat, были пересмотрены цели дистрибутива, и теперь он будет развиваться как роллинг дистрибутив CentOS Stream, на базе срезов которого, будут формироваться сборки Red Hat Enterprise Linux.
Поддержка CentOS 8, вместо 10 лет, сократилась до 2,5 лет и будет прекращена 31 декабря 2021 года. Поддержку CentOS 7 сохранили до 24 июня 2024 года, т. к. фаза основной поддержки уже закончилась в 4 квартале 2020 года, а устранение критических уязвимостей уже не отнимает так много сил. На фоне таких веяний доверие к дистрибутиву было подорвано, появилось несколько дистрибутивов, заменяющих CentOS, но т. к. все они молодые, пока доверия к ним нет.
Бинарно совместим значит, что собран из точно тех же исходных кодов теми же инструментами, и, соответственно, если в каком-либо софте заявляется гарантированная работа в RHEL, то данный софт без переборки заработает и в CentOS.
Роллинг — это постоянно обновляющаяся система без выпуска дистрибутивов с замороженными версиями софта.
Альт Линукс
Пакеты rpm, но менеджер пакетов apt, более присущий дистрибутивам на базе deb пакетов.
DEB-dased
Debian
Один из старейших дистрибутивов GNU/Linux на базе deb, в большинстве случаев deb‑based дистрибутивы основаны на его пакетной базе.
Ubuntu
Дистрибутив от компании Canonical, ввиду огромного сообщества и популяризации его силами компании, наверное, самый распространенный дистрибутив GNU/Linux.
Linux Mint
Дистрибутив, основанный на базе Ubuntu, в серверной части мало чем отличается от Ubuntu, т. к. использует репозитории Ubuntu.
Astra Linux
Российская производная Debian GNU/Linux.
Выбираем и устанавливаем Ubuntu 18.04 LTS
Мы будем использовать дистрибутив Ubuntu 18.04 LTS, потому что:
- С CentOS происходят изменения и его дальнейшая судьба не совсем ясна.
- Поддержка Debian 9 версии заканчивается в 2022 году.
- Поддержка дистрибутивов Ubuntu расширена с 5 лет до 10 лет для серверных дистрибутивов.
Дистрибутив Ubuntu можно взять на официальном сайте (releases.ubuntu.com/18.04.5/). Для этого понадобится ISO-файл (releases.ubuntu.com/18.04.5/ubuntu-18.04.5-live-server-amd64.iso) серверного образа для платформы х64 PC (AMD64). Для развертывания сервера можно использовать как платформы виртуализации так и развертывать непосредственно на железе. Для виртуализации подойдет практически любая платформа:
- Hyper-V (ru.wikipedia.org/wiki/Hyper-V),
- VmWare ESXi (www.vmware.com/ru/products/esxi-and-esx.html),
- Citrix XenServer (www.citrix.com/ru-ru/products/citrix-hypervisor/),
- Proxmox (www.proxmox.com/en/proxmox-ve),
- oVirt (www.ovirt.org),
- и другие.
Сравнение систем виртуализации может оказаться очень обширным и выходит за рамки данной статьи.
Для установки дистрибутива на физический сервер можно воспользоваться разными способами. Например, подготовить загрузочную флешку с помощью Rufus (rufus.ie), использовать мультизагрузочные флешки EasyToBoot (easy2boot.xyz) или Ventoy (www.ventoy.net). Системы виртуализации могут подключать iso образ к виртуальному CD\DVD приводу.
После запуска с загрузочного носителя нас приветствует стандартное меню установки Ubuntu Server.
Выбираем 2 пункт, т. к. будет использовано более новое ядро Linux 5.4. от Ubuntu 20.04.
Далее выбираем язык и раскладки клавиатуры системы которую будем устанавливать.
Далее раздел настройки сети. Можно сразу настроить сеть, но иногда это сразу невозможно, или сервер будет переносится потом в другую сеть, поэтому оставим настройки по умолчанию, далее после установки поменяем их.
Далее разметка диска. Рекомендуется выбрать пункт с созданием LVM (ru.wikipedia.org/wiki/LVM), что в последующем позволит более гибко управлять дисковым пространством. Если у вас несколько дисков или аппаратных RAID (Redundant Array of Independent Disks) массивов, то можно настроить разметку диска вручную. Стоит создать отдельные разделы для /var и /home, и для /var использовать самый быстрый диск, следующий по скорости для /home и самый небольшой под корневой раздел /.
Далее создаем пользователя в системе, под которым и будем заходить на сервер. Это необходимо сделать, т. к. в Ubuntu по умолчанию root отключен, после установки можно будет создать еще пользователей.
На следующем экране поставить галку для установки сервера OpenSSH, чтобы можно было управлять сервером удаленно. Если вы про нее забыли, ничего страшного, его можно будет установить позже.
Далее предоставляется выбор установки пакетов SNAP, ни один из них нам не нужен для сервера 1С, поэтому ничего не выбираем.
Далее происходит установка системы, после установки подсветится пункт Reboot Now, его и нажимаем для загрузки в установленную систему.
После перезагрузки вводим логин и пароль и попадаем в shell свежеустановленной системы.
Если вы устанавливали систему в виртуальной машине, то скорее всего так же была установлена система cloud-init, которая предназначена для автоматической конфигурации виртуальной машины, но если вы её не используете, то проще всего ее удалить, т. к. она замедляет загрузку сервера.
sudo apt purge cloud-init
sudo rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/
Далее необходимо настроить временную зону, сгенерировать локали, настроить сеть, если это не было сделано во время установки. Поставить минимум необходимого софта с которым удобнее работать.
Настраиваем временную зону
Посмотреть текущие настройки временной зоны:
timedatectl show
Посмотреть список зон:
timedatectl list-timezones
Установить временную зону:
timedatectl set-timezone Europe/Moscow
Настраиваем локали
sudo dpkg-reconfigure locales
Напротив необходимых локалей ставим пробелом звездочку, после чего по tab переходим на пункт OK и сохраняем список.
Рекомендуется также добавить локаль ru_RU.CP1251, если на сервере планируется использовать программный продукт КриптоПРО для работы с электронным документооборотом из 1С:Предприятия.
После выбора локали по умолчанию и подтверждения настроек будут подготовлены выбранные локали.
Важно выбрать локаль по умолчанию ru_RU.UTF-8, т. к. это повлияет на правильную установку PostgreSql.
Настройка сети
Примеры конфигурационных файлов можно посмотреть в установленной системе в каталоге /usr/share/doc/netplan/examples. Мы будем настраивать статический ip-адрес:
Для этого удаляем предыдущую конфигурацию что бы ничего нам не мешало:
sudo rm /etc/netplan/*
Копируем пример со статической конфигурацией:
sudo cp /usr/share/doc/netplan/examples/static.yaml /etc/netplan/00-static.yaml
Узнаем название интерфейса, т. к. имя нам понадобится для правки конфигурации:
ip link
Нам нужны физические Ethernet-интерфейсы, они могут иметь название, начинающееся на en. Расшифровка префиксов обозначения интерфейсов:
- en — Ethernet,
- ib — InfiniBand,
- sl — serial line IP (slip),
- wl — wlan,
- ww — wwan,
- lo — loopback.
И исправляем пример под свою конфигурацию:
sudo nano /etc/netplan/00-static.yaml
После исправления, применяем конфигурацию:
sudo netplan try
После применения конфигурации, проверим что адрес соответствует нашим настройкам:
ip addr
После чего обновляем список пакетов и устанавливаем обновления на систему:
sudo apt update && sudo apt dist-upgrade -y
Устанавливаем софт для более удобной работы и мониторинга в реальном времени:
sudo apt install tmux mc htop iftop iotop
tmux — мультиплексор терминалов предоставляющий доступ к нескольким терминалам в рамках одного экрана, так же при отключении от экрана продолжает работать в фоновом режиме, что позволит подключится к своему сеансу при обрыве соединения или если просто необходимо временно отключиться.
mc — удобный двухпанельный менеджер файлов наподобие Norton Commander.
htop — интерактивный диспетчер процессов.
iftop — утилита для мониторинга сетевой активности.
iotop — утилита для мониторинга дисковой активности.
После чего перезагружаем сервер и переходим к следующему этапу.
3. Удаленное управление GNU/Linux сервером
Если вы ранее не работали с системами GNU/Linux, а работали только с системами Windows, то навыки традиционных способов управления системами как RDP или RSAT не подойдут для этого. Но для управления GNU/Linux-серверами есть много различных инструментов и способов.
Например, web-панель webmin (www.webmin.com), позволяющая настроить различные аспекты операционной системы и служб. Или специализированные интерфейсы от программных продуктов, а также программы управления системой в различных графических оболочках (gnome, kde, xfce и другие).
В большинстве своем все эти программы занимаются одним и тем же, а именно правкой конфигурационных файлов, что иногда бывает достаточно удобно. В случае возникновения аварий или нештатных ситуаций может не хватить предлагаемых сервисов и потребуется использование прямого редактирования. Поэтому традиционно для администрирования GNU/Linux серверов используется текстовый терминал, для удаленного подключения к нему протокол Secure Shell — ssh, а для передачи файлов протоколы scp и sftp.
В современных операционных системах Windows, а именно Windows 10 начиная с релиза 1809 и Windows Server 2019 клиент ssh уже встроен и ничего дополнительно устанавливать не нужно. На GNU/Linux машинах клиент ssh предустановлен или установить его не составляет проблемы, т. к. он содержится в стандартных репозиториях системы.
Как в Windows, так и в GNU/Linux в качестве реализации протокола используется набор программ OpenSSH, поэтому далее будет рассматриваться только данный набор программ, использование которого будет одинаковым под разными операционными системами. Для более старых версий Windows рекомендуется использовать клиент putty (www.chiark.greenend.org.uk/~sgtatham/putty/latest.html), в состав которого входят клиенты для передачи файлов pscp и psftp, аналоги программ scp и sftp из пакета OpenSSH.
Если при установке ОС вы пропустили шаг установки сервера OpenSSH, это можно сделать командой:
sudo apt install ssh
Проверим сервис:
systemctl status ssh
Если сервис не запущен или отключён, то включим его и запустим:
sudo systemctl enable ssh && systemctl start ssh
Теперь, когда разобрались с инструментами, подключимся к серверу и проверим что все работает.
На своей машине запустим терминал. В случае с Windows это может быть оболочка PowerShell или cmd, под GNU/Linux может быть любая оболочка, зачастую во многих дистрибутивах используется по умолчанию bash. Подключимся к серверу.
ssh [имя пользователя]@[имя или IP адрес узла]
При первом подключении ssh клиент выведет предупреждение о том, что отпечаток удаленного узла неизвестен и предложит добавить его в список известных узлов, набрав yes.
ssh rarus@192.168.12.112
The authenticity of host '192.168.12.112 (192.168.12.112)' can't be established.
ED25519 key fingerprint is SHA256:v+3nekSSM8XFNHRurBPJLFYPWBbmMMZ7Xm8jJ60On+c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.12.112' (ED25519) to the list of known hosts
Данный механизм предназначен для предотвращения подмены узла. Если внезапно для уже сохраненных узлов у вас появится такое предупреждение, то, возможно, кто-то пытается завладеть вашими учетными данными и стоит все перепроверить прежде, чем вводить свои пароли.
Так же и для упрощения и большей защищенности стоит использовать ключи.
Сгенерировать ключи просто, нужно запустить программу ssh-keygen:
ssh-keygen
Далее скопировать публичный ключ на сервер.
C клиента на Windows из cmd:
type %UserProfile%\.ssh\id_rsa.pub | ssh rarus@192.168.12.112 "cat > ~/.ssh/authorized_keys_tmp && umask 0177 && cat ~/.ssh/authorized_keys_tmp >> ~/.ssh/authorized_keys && rm ~/.ssh/authorized_keys_tmp"
или из PowerShell:
type env:UserProfile\.ssh\id_rsa.pub | ssh rarus@192.168.12.112 "cat > ~/.ssh/authorized_keys_tmp && umask 0177 && cat ~/.ssh/authorized_keys_tmp >> ~/.ssh/authorized_keys && rm ~/.ssh/authorized_keys_tmp"
C клиента на GNU/Linux:
ssh-copy-id rarus@192.168.12.112
После чего уже можно подключаться с использованием ключа
ssh rarus@192.168.12.112
Более подробно ознакомиться с документацией по OpenSSH можно на сайте проекта (openssh.com/manual.html).
Так же рекомендуется длительные операции запускать через мультиплексор терминалов tmux или screen. Это даст возможность оставлять запущенные программы в окне терминала и отключаться от терминала, а также при случайном обрыве соединения ваши приложения не закрываются, поэтому подключившись к серверу снова можно вернуться к своему прошлому сеансу и продолжить работу. Также tmux позволяет разделять одно окно терминала на несколько окон и рабочих областей.
Подключиться к своему прошлому сеансу можно командой tmux attach, а отключиться комбинацией клавиш ctrl+b d.
4. Установка и настройка сервера 1С
Сервер у нас подготовлен и мы научились к нему подключаться. Настало время установить на него сервера 1С:Предприятия.
Установка серверов 1С
Несколько серверов 1С установим непосредственно в операционную систему. Также возможно упаковать каждый дистрибутив в отдельный контейнер docker и запускать из контейнеров, но такой вариант установки будет рассмотрен в будущих статьях.
Будем устанавливать 4 платформы разных версий — последние на момент написания статьи — 8.3.16.1973, 8.3.17.2306, 8.3.18.1616, 8.3.19.1264.
Для начала скачиваем необходимые дистрибутивы с сайта «1С» (releases.1c.ru/project/Platform83) на свой компьютер. Т.к. мы используем сервер на платформе x86_64 на базе deb, то соответственно и дистрибутивы будем скачивать «Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем».
Откроем командную строку в каталоге со скачанными файлами. В нашем случае все дистрибутивы сохранены в каталог 1C-Server расположенном в папке Downloads. Копируем файлы дистрибутива на сервер командой:
scp -r ./1C-Server rarus@192.168.12.112:~/distr/
Далее подключаемся к серверу по ssh:
ssh rarus@192.168.12.112
Проверим, что файлы скопировались:
ls distr
Должен отобразиться список всех файлов, что мы скопировали. Если все нормально, приступим к установке пакетов необходимых для сервера 1С:
sudo apt install fontconfig unixodbc ttf-mscorefonts-installer libgsf-1-114
Теперь займемся дистрибутивами сервера 1С. Т. к. с 18 релиза поменялось расположение файлов сервера и клиента 1С, то стоит привести их всех к одному виду, поэтому перепакуем пакеты старых релизов 16 и 17 и приведем их по структуре к новым. Так же это даст нам возможность ставить несколько версий сервера 1С старых релизов из пакетов.
Скрипт для перепаковки:
Сохраняем данный скрипт в файл ~/distr/1c-enterprise83-server-repack.sh и делаем его исполняемым:
chmod +x ~/distr/1c-enterprise83-server-repack.sh
Переходим в каталог со скопированными дистрибутивами для их распаковки:
cd distr
Далее создаем отдельный каталог для каждой платформы и распаковываем дистрибутивы:
mkdir 8.3.16.1973
cd 8.3.16.1973
tar -xzvf ../deb64_8_3_16_1973.tar.gz
И дистрибутивы 8.3.16 и 8.3.17 перепаковываем под новый формат:
sudo ../1c-enterprise83-server-repack.sh amd64
После чего вместо старых deb пакетов в каталоге будут новые пакеты.
Сразу их и установим:
sudo dpkg -i ./*.deb
С остальными дистрибутивами поступаем так же, за исключением того, что новые релизы 18 и 19 перепаковывать не надо.
mkdir ../8.3.17.2306
cd ../8.3.17.2306
tar -xzvf ../deb64_8_3_17_2306.tar.gz
sudo ../1c-enterprise83-server-repack.sh amd64
sudo dpkg -i ./*.deb
mkdir ../8.3.18.1616
cd ../8.3.18.1616
tar -xzvf ../deb64_8_3_18_1616.tar.gz
sudo dpkg -i ./*.deb
mkdir 8.3.19.1264
cd ../8.3.19.1264
tar -xzvf ../deb64_8_3_19_1264.tar.gz
sudo dpkg -i ./*.deb
На этом установка сервера закончена, и можно переходить к настройке сервисов.
Настройка серверов 1С
Т. к. мы будем одновременно запускать несколько версий сервера 1С, то необходимо разнести сервера на разные порты, чтобы не было конфликта. По умолчанию сервер 1С использует порты 1540-1541,1560-1691.
Мы перепаковали старые дистрибутивы, поэтому будем все сервисы настраивать по новому. Будем настраивать по следующей схеме:
- 8.3.16.1973 — порты 1540-1541,1560-1691, имя службы srv1cv83-1540;
- 8.3.17.2306 — порты 2540-2541,2560-2691, имя службы srv1cv83-2540;
- 8.3.18.1616 — порты 3540-3541,3560-3691, имя службы srv1cv83-3540;
- 8.3.19.1264 — порты 4540-4541,4560-4691, имя службы srv1cv83-4540.
Копируем init файл из каталога установленного сервиса в каталог /etc/init.d:
sudo cp /opt/1cv8/x86_64/8.3.16.1973/srv1cv83 /etc/init.d/srv1cv83-1540
И файл конфигурации в каталог /etc/default:
sudo cp /opt/1cv8/x86_64/8.3.16.1973/srv1cv83.conf /etc/default/srv1cv83-1540
После чего изменяем конфигурационный файл:
sudo nano /etc/default/srv1cv83-1540
Нужно раскомментировать и поменять значение следующих параметров:
SRV1CV8_PORT=1540
SRV1CV8_REGPORT=1541
SRV1CV8_RANGE=1560:1691
SRV1CV8_DEBUG=1
SRV1CV8_DATA=/home/usr1cv8/.1cv8/srv1cv83-1540
Чтобы системный менеджер увидел новые файлы, необходимо их перечитать:
sudo systemctl daemon-reload
Затем включить сервис и запустить его:
sudo systemctl enable srv1cv83-1540
sudo systemctl start srv1cv83-1540
И проверим статус сервера:
sudo systemctl status srv1cv83-1540
Если все нормально, то продолжаем и копируем аналогично файлы для других служб:
sudo cp /opt/1cv8/x86_64/8.3.17.2306/srv1cv83 /etc/init.d/srv1cv83-2540
sudo cp /opt/1cv8/x86_64/8.3.17.2306/srv1cv83.conf /etc/default/srv1cv83-2540
sudo cp /opt/1cv8/x86_64/8.3.18.1616/srv1cv83 /etc/init.d/srv1cv83-3540
sudo cp /opt/1cv8/x86_64/8.3.18.1616/srv1cv83.conf /etc/default/srv1cv83-3540
sudo cp /opt/1cv8/x86_64/8.3.19.1264/srv1cv83 /etc/init.d/srv1cv83-4540
sudo cp /opt/1cv8/x86_64/8.3.19.1264/srv1cv83.conf /etc/default/srv1cv83-4540
Далее будем править конфигурационные файлы для сервиса srv1cv83-2540:
sudo nano /etc/default/srv1cv83-2540
Нужно раскомментировать и поменять значение следующих параметров:
SRV1CV8_PORT=2540
SRV1CV8_REGPORT=2541
SRV1CV8_RANGE=2560:2691
SRV1CV8_DEBUG=1
SRV1CV8_DATA=/home/usr1cv8/.1cv8/srv1cv83-2540
Аналогично правим конфигурационные файлы остальных сервисов.
Приведем тут только измененные строки:
grep -v '^$\|^\s*\#' /etc/default/srv1cv83-3540
SRV1CV8_PORT=3540
SRV1CV8_REGPORT=3541
SRV1CV8_RANGE=3560:3691
SRV1CV8_DEBUG=1
SRV1CV8_DATA=/home/usr1cv8/.1cv8/srv1cv83-3540
grep -v '^$\|^\s*\#' /etc/default/srv1cv83-4540
SRV1CV8_PORT=4540
SRV1CV8_REGPORT=4541
SRV1CV8_RANGE=4560:4691
SRV1CV8_DEBUG=1
SRV1CV8_DATA=/home/usr1cv8/.1cv8/srv1cv83-4540
После опять перечитываем список сервисов, включаем и запускаем необходимые службы:
sudo systemctl daemon-reload
sudo systemctl enable srv1cv83-2540
sudo systemctl start srv1cv83-2540
sudo systemctl enable srv1cv83-3540
sudo systemctl start srv1cv83-3540
sudo systemctl enable srv1cv83-4540
sudo systemctl start srv1cv83-4540
Сервис Remote Administration Service (RAS)
Далее настроим сервисы Remote Administration Service (RAS) для каждого из созданных кластеров 1С.
Также, как и сервера 1С, распределим сервисы RAS по портам:
- 8.3.16.1973 — порт 1545, имя службы ras-srv1cv83-1540;
- 8.3.17.2306 — порт 2545, имя службы ras-srv1cv83-2540;
- 8.3.18.1616 — порт 3545, имя службы ras-srv1cv83-3540;
- 8.3.19.1264 — порт 4545, имя службы ras-srv1cv83-4540.
Компания «1С» не предоставляет init файлов для создания сервисов RAS, поэтому создадим их сами:
sudo nano /etc/systemd/system/ras-srv1cv83-1540.service
Со следующим содержимым:
[Unit]
Description=1C Remote Access Service srv1cv83-1540
After=syslog.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/1cv8/x86_64/8.3.16.1973/
User=usr1cv8
Group=grp1cv8
OOMScoreAdjust=-100
ExecStart=/opt/1cv8/x86_64/8.3.16.1973/ras cluster --daemon -p 1545 127.0.0.1:1540
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutSec=300
Restart=always
[Install]
WantedBy=multi-user.target
Аналогичные файлы создаем и для оставшихся служб меняя пути к платформе и порты. Скопируем и исправим файлы служб с помошью sed:
sed -e "s/8.3.16.1973/8.3.17.2306/; s/1545/2545/; s/1540/2540/" /etc/systemd/system/ras-srv1cv83-1540.service | sudo tee /etc/systemd/system/ras-srv1cv83-2540.service
sed -e "s/8.3.16.1973/8.3.18.1616/; s/1545/3545/; s/1540/3540/" /etc/systemd/system/ras-srv1cv83-1540.service | sudo tee /etc/systemd/system/ras-srv1cv83-3540.service
sed -e "s/8.3.16.1973/8.3.19.1264/; s/1545/4545/; s/1540/4540/" /etc/systemd/system/ras-srv1cv83-1540.service | sudo tee /etc/systemd/system/ras-srv1cv83-4540.service
Далее, как уже ранее научились, перечитываем список сервисов, включаем и запускаем службы, т. к. службы однотипные и отличаются только одной цифрой, удобно для этого воспользоваться циклом:
sudo systemctl daemon-reload
for i in {1..4}; do sudo systemctl enable ras-srv1cv83-$i\540; done
for i in {1..4}; do sudo systemctl start ras-srv1cv83-$i\540; done
Проверяем статус запущенных служб:
for i in {1..4}; do sudo systemctl status ras-srv1cv83-$i\540; done
Дальше проверим подключение к кластеру с помощью утилиты Remote Administration Client (rac):
/opt/1cv8/x86_64/8.3.16.1973/rac cluster list localhost:1545
Утилита rac не так сильно привязана к версии сервера и поэтому можно с помощью неё же и проверить и остальные кластеры:
/opt/1cv8/x86_64/8.3.16.1973/rac cluster list localhost:2545
/opt/1cv8/x86_64/8.3.16.1973/rac cluster list localhost:3545
/opt/1cv8/x86_64/8.3.16.1973/rac cluster list localhost:4545
Сервер хранилища конфигураций
Настройка сервера хранилища конфигураций не сильно отличается от настройки сервиса RAS. Юнит файл для запуска будет примерно таким же, отличаться только названием и командой запуска сервиса, но тут стоит поменять схему выбора портов для хранилищ. Тут подходим к выбору порта от версии платформ и, чтобы не пересекаться с уже запущенными сервисами, будем использовать порты выше 10000. Соответственно схема выбора порта будет 1xxxx, где xxxx — последние 4 цифры билда платформы:
- 8.3.16.1973 — порт 11973, имя службы crserver-16.1973.
- 8.3.17.2306 — порт 12306, имя службы crserver-17.2306.
- 8.3.18.1616 — порт 11616, имя службы crserver-18.1616.
- 8.3.19.1264 — порт 11264, имя службы crserver-19.1264.
Каталог с хранилищами будет один для всех, и разместим его в каталоге /var/opt/1C/crserver.
Для начала создадим каталог для хранилища:
sudo mkdir -p /var/opt/1C/crserver
И изменим владельца каталога:
sudo chown usr1cv8:grp1cv8 /var/opt/1C/crserver
Создаем Unit файл для сервиса:
sudo nano /etc/systemd/system/crserver-16.1973.service
[Unit]
Description=1C Configuration Storage Service 8.3.16.1973
After=syslog.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/1cv8/x86_64/8.3.16.1973/
User=usr1cv8
Group=grp1cv8
OOMScoreAdjust=-100
ExecStart=/opt/1cv8/x86_64/8.3.16.1973/crserver -daemon -port 11973 -d /var/opt/1C/crserver
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutSec=300
Restart=always
[Install]
WantedBy=multi-user.target
Так же копируем Unit файлы под другие сервисы с помощью sed заменяем параметры:
sed -e "s/8.3.16.1973/8.3.17.2306/; s/11973/12306/" /etc/systemd/system/crserver-16.1973.service | sudo tee /etc/systemd/system/crserver-17.2306.service
sed -e "s/8.3.16.1973/8.3.18.1616/; s/11973/11616/" /etc/systemd/system/crserver-16.1973.service | sudo tee /etc/systemd/system/crserver-18.1616.service
sed -e "s/8.3.16.1973/8.3.19.1264/; s/11973/11264/" /etc/systemd/system/crserver-16.1973.service | sudo tee /etc/systemd/system/crserver-19.1264.service
После перечитываем списки сервисов, включаем и запускаем их:
sudo systemctl daemon-reload
for f in /etc/systemd/system/crserver-*; do sudo systemctl enable ${f##*/} ; done
for f in /etc/systemd/system/crserver-*; do sudo systemctl start ${f##*/} ; done
Так же проверяем статус запуска:
for f in /etc/systemd/system/crserver-*; do sudo systemctl status ${f##*/} ; done
На этом установка и настройка сервисов 1С закончены.
5. Установка PostgreSQL для 1С
Теперь дошло дело до установки и настройки сервера баз данных PostgreSQL. Сначала сверимся со списком совместимоcти версий PostgreSQL для 1С на сайте «1С»: v8.1c.ru/tekhnologii/postgrespro/ и v8.1c.ru/tekhnologii/sistemnye-trebovaniya-1s-predpriyatiya-8/. В списках совместимости самая последняя версия 12.7.1 совместимая со всеми выше указанными версиями сервера 1С, а 13 версия совместима только начиная с релиза 8.3.20.
Версия 12.7.1 протестирована «1С» на совместимость, но т. к. в пределах крупных выпусков не делается изменений, меняющих работу сервера, а исправляются только ошибки и закрываются дыры в безопасности, можно ставить и более свежую версию.
Ввиду того что компания «1С» не готовила новых выпусков сервера Postgres после 12.7.1, будем ставить версию 12.8.1 от компании Postgres Pro. Ее версии сервера postgres-1c так же, как и от компании «1С», построены на чистом коде оригинального проекта с патчами 1С.
Пройдем короткий опросник на сайте 1c.postgres.ru, и на почту придут инструкции по установке данной сборки.
Перейдем в каталог с дистрибутивами и создадим в нем каталог postgres:
cd ~/distr/
mkdir postgres
cd postgres
Далее действуем по присланной инструкции, скачиваем скрипт, которой добавит apt репозиторий и публичный ключ подписи пакетов в систему, и выполним его:
curl -o apt-repo-add.sh https://repo.postgrespro.ru/pg1c-12/keys/apt-repo-add.sh
sudo sh apt-repo-add.sh
Далее устанавливаем сам сервер:
sudo apt install postgrespro-1c-12
После установки сервер должен сам запустится, проверим это:
systemctl status postgrespro-1c-12
Далее необходимо установить пароль пользователя postgres и создать пользователя для 1С - usr1cv8:
sudo -u postgres psql
\password
Вводим 2 раза пароль для пользователя postgres:
Создаем пользователя usr1cv8:
CREATE ROLE usr1cv8 WITH LOGIN SUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD 'veryhardpassword';
Проверим создался ли пользователь:
\du
Также можно создать отдельные табличные пространства, которые 1С будет автоматически использовать:
- v81c_data — для данных;
- v81c_index — для индексов.
create tablespace v81c_index location <Имя папки>;
create tablespace v81c_data location <Имя папки>;
После чего выходим из утилиты psql:
\q
6. Оптимизация параметров PostgreSQL
Рекомендации «1С» по настройке postgresql можно посмотреть на сайте ИТС (its.1c.ru/db/metod8dev#content:3788:hdoc). Большая их часть уже учтена в сборке от PostgresPro, и даже проведены оптимизации под железо по памяти и количеству ядер процессора. Но не учитывается дисковая подсистема, поэтому стоит оптимизировать эти параметры: random_page_cost и effective_io_concurrency. Для этого воспользуемся сервисом pgtune.leopard.in.ua.
На странице сервиса необходимо указать параметры настраиваемой системы и сервера:
- Версии нашей СУБД = 12.
- Тип ОС = Linux.
- Количество ОЗУ.
- Количество процессоров.
- Количество подключений к базе (оптимально максимально возможное значение).
- Тип жесткого диска (HDD/SSD/NAS).
Нажать Generate и скопировать данные из правого окна в конец конфигурационного файла расположенного по адресу /var/lib/pgpro/1c-12/data/postgresql.conf:
sudo nano /var/lib/pgpro/1c-12/data/postgresql.conf
После сохранения конфигурационного файла нужно перезапустить сервер postgres командой:
sudo systemctl restart postgrespro-1c-12
Теперь можно озаботится более удобным управлением сервером БД. Хоть управление через psql может покрыть все потребности и подходит для скриптования, но зачастую визуальное представление данных проще и удобнее. Поэтому установим на сервер средство для визуальной настройки и управления postgresql — PGAdmin 4.
На сайте проекта PGAdmin (pgadmin.org/download/pgadmin-4-apt/) приведена простая инструкция по установке системы.
Скачиваем публичный ключ репозитория проекта и добавляем в доверенные ключи apt:
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
Далее добавляем репозиторий проекта в менеджер пакетов apt и обновляем список доступных пакетов:
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
Далее устанавливаем вариант PGAdmin с WEB-интерфейсом, т. к. на сервере у нас нет графической подсистемы.
Ставить будем с небольшим отличием от оригинальной инструкции. В команду установки необходимо добавить --no-install-recommends, чтобы не ставились рекомендованные пакеты из зависимостей, а именно postgresql-client и postgresql-client-10, т. к. postgresql-client-10 будет конфликтовать с установленным у нас клиентом postgresql 12:
sudo apt --no-install-recommends install pgadmin4-web
В процессе установки по зависимостям так же будет установлен и WEB-сервер Apache.
После установки запускаем мастер настройки системы, в котором надо будет создать первую учетную запись PGAdmin и указать какой веб-сервер будет использоваться:
sudo /usr/pgadmin4/bin/setup-web.sh
Далее перейдем по указанному в мастере URL заменив только адрес 127.0.0.1 на адрес или имя сервера, в нашем случае http://192.168.12.112/pgadmin4, где авторизуемся под только что созданной учетной записью.
После входа, попадаем на главную страницу программы, где необходимо добавить обслуживаемый сервер.
Нажимаем Save, после чего сервер добавится в интерфейс.
7. Установка драйверов HASP
Т.к. на текущий момент все новые лицензии предоставляются как программные лицензии, данный шаг не обязателен, но если вы используете для лицензирования HASP-ключи, то необходимо установить драйвер и менеджер лицензий HASP.
Скачиваем дистрибутив Sentinel SDK Runtime (thales-sentinel.ru/helpdesk/download-space/) для Linux. Копируем его на сервер со своего компьютера:
scp -r ./Sentinel_LDK_Linux_Run-time_Installer_script.tar.gz rarus@192.168.12.112:~/distr/
Далее уже на сервере, распаковываем дистрибутив и устанавливаем:
cd ~/distr
tar -xzvf Sentinel_LDK_Linux_Run-time_Installer_script.tar.gz
cd Sentinel_LDK_Linux_Run-time_Installer_script
tar -xzvf aksusbd-8.23.1.tar.gz
cd aksusbd-8.23.1
sudo ./dinst
Будет установлено 2 службы — aksusbd (драйвер HASP) и hasplmd (Hasp License Manager).
Проверим, что они работают:
sudo systemctl status hasplmd
sudo systemctl status aksusbd
Разрешаем подключение к консоли hasplm не только с локалхост:
echo "accremote = 1" | sudo tee /etc/hasplm/hasplm.ini
sudo systemctl restart hasplmd
Теперь можно через браузер зайти по адресу http://192.168.12.112:1947/ и настроить сервис на странице конфигурации. Не забудьте поставить пароль на доступ к Sentinel ACC.
8. Управление кластером 1С
Управление кластером 1С под Linux ничем не отличается от такого же установленного на Windows, поэтому удобнее всего воспользоваться консолью mmc для Windows. Так же создавать базы можно из стандартного мастера добавления базы клиента 1С, но для правильной работы клиента, должен работать резолвинг имен. Поэтому если у вас нет DNS-сервера для разрешения имен, то для правильной работы на клиентском компьютере необходимо добавить запись в файл %WINDIR%\System32\drivers\etc\hosts в формате IPAddress HostName. После чего, можно подключаться клиентом к серверу с базами.
Но также можно управлять кластером 1С и из консоли GNU/Linux сервера с помощью утилиты Remote Administration Client (RAC). Для этой возможности мы и настраивали в 3 разделе статьи сервис RAS. Управлять сервером с помощью этой утилиты можно локально и удаленно с машин под Windows и Linux.
Утилита rac совместима с серверами ras и не привязана к версии с релиза платформы 8.3.9, поэтому для управления, например, сервером на платформе 8.3.19 можно пользоваться клиентом версии 8.3.9 и наоборот. Исключение составляют только те функции и возможности, которые появились в более поздних релизах, соответственно этими функциями можно управлять утилитой той версии, в которой они появились или выше.
В 3 разделе мы уже воспользовались утилитой rac для проверки работоспособности сервера. Теперь с помощью этой же утилиты создадим базу данных.
Перейдем в каталог с установленной платформой:
cd /opt/1cv8/x86_64/8.3.19.1264/
И запустим утилиту rac без аргументов, чтобы посмотреть краткую справку по использованию:
./rac
Для того чтобы создать базу, нам необходимо узнать UUID кластера. Узнаем uuid кластера 8.3.19. Как и планировали в начале статьи RAS для данного кластера работает на порту 4545.
./rac cluster list localhost:4545
Создадим базу данных testdb:
./rac infobase create --create-database --name=testdb --dbms=PostgreSQL --db-server=localhost --db-name=testdb --db-user=usr1cv8 --db-pwd=veryhardpassword --cluster=2cde3bed-f766-458d-919f-611c995bbaa7 localhost:4545
В ответ утилита сообщит uuid созданной базы:
Теперь выведем список баз в кластере:
./rac infobase summary list --cluster=2cde3bed-f766-458d-919f-611c995bbaa7 localhost:4545
Получить краткую справку по аргументам каждого из режимов работы можно запустив утилиту только с указанием режима работы, например, ./rac infobase или ./rac connection.
Утилита позволяет полностью администрировать функции кластера 1С, аналогично консоли mmc.
9. Установка и настройка веб-сервера
Apache — популярный тип веб-сервера и является веб-сервером по умолчанию для многих операционных систем, доступен в стандартном репозитории Ubuntu.
Устанавливаем и запускаем Apache2
Мы уже установили сервер apache2, когда разворачивали PGAdmin, но он был установлен как зависимость к PGAdmin. В случае, если PGAdmin будет удален, и затем будет выполнена рекомендованная команда удаления более неиспользуемых пакетов, то и apache2 будет удален. А нам этого не нужно, поэтому переведем пакет в режим установки вручную командой:
sudo apt install apache2
У нас установлено 4 платформы и сложность публикации баз разных релизов 1С, в том, что сервер может загрузить только 1 модуль wsapi. Соответственно 1 экземпляр сервера apache2 сможет работать только с 1 платформой, модуль которой загрузит первым.
Выходом из данной ситуации будет поднятие отдельного инстанса apache2 для каждой платформы 1С, отдельного инстанса для PGAdmin и еще одного инстанса для обратного прокси, чтобы давать доступ к базам на стандартных для web портах.
Основной каталог с конфигурацией Apache2 мы будем использовать как шаблон для остальных экземпляров сервера. Также остановим и выключим основную службу Apache2. Исправлять будем производные конфигурации. Инструкция по работе с такой конфигурацией есть в составе сервера и расположена в файле /usr/share/doc/apache2/README.multiple-instances, прочитать ее можно командой:
less /usr/share/doc/apache2/README.multiple-instances
Для начала создадим 1 экземпляр сервера с названием web, который и будет у нас отвечать на стандартном 80 порту:
sudo sh /usr/share/doc/apache2/examples/setup-instance web
Теперь отключим конфигурацию PGAdmin в стандартном шаблоне, что бы она не открывалась во все наши новые экземпляры:
sudo a2disconf pgadmin4
После чего остановим этот экземпляр сервера и отключим его:
sudo systemctl stop apache2 && sudo systemctl disable apache2
Включим и запустим наш первый созданный экземпляр web и проверим что он работает, а PGAdmin у нас открывается, как и раньше:
sudo systemctl enable apache2@web && sudo systemctl start apache2@web
Проверим, что служба запустилась и её статус:
systemctl status apache2@web
Служба запущена и работает. Откроем в браузере адрес pgadmin и чтобы убедиться что он работает http://192.168.12.112/pgadmin4.
Теперь создадим еще 4 экземпляра сервера и добавим к ним суффикс, также как и к именам серверов 1С, то есть у нас будут экземпляры работающие на портах:
- 1540 — port 8140.
- 2540 — port 8240.
- 3540 — port 8340.
- 4540 — port 8440.
sudo sh /usr/share/doc/apache2/examples/setup-instance 1540
sudo sh /usr/share/doc/apache2/examples/setup-instance 2540
sudo sh /usr/share/doc/apache2/examples/setup-instance 3540
sudo sh /usr/share/doc/apache2/examples/setup-instance 4540
Настройка Apache2 для 1С
Перейдем к настройкам. Для удобства можно воспользоваться двухпанельным файловым менеджером Midnight Commander или просто mc. Запустим его от имени root, чтобы свободно перемещаться по файловой системе и править конфигурации сервера:
sudo mc
Перейдем в каталог конфигурации, который будет использоваться для публикации конфигураций кластера 1С 1540, и откроем файл ports.conf на изменение клавишей F4.
Исправим порт, на котором будет слушать наш сервер, а остальное закомментируем.
Должно получиться следующее содержимое:
Сохраняем по клавише F2 наши изменения и по ESC выходим из редактора mcedit.
Теперь включим и запустим этот экземпляр, проверим, что он работает и отвечает на порту 8140. Чтобы переключится в режим командной строки нажимаем комбинацию клавиш Ctr+O, после чего вводим команды. Стоит обратить внимание, что теперь sudo мы не используем, т. к. и так все будет запущено от имени пользователя root:
systemctl enable apache2@1540 && systemctl start apache2@1540; systemctl status apache2@1540
Так же проверим браузером, что по данному порту открывается стандартная страница web-сервера Apache2. По адресу http://192.168.12.112:8140/, должна отобразиться следующая страница:
Аналогично правим остальные конфигурации и запускаем сервера через mc. Или можно воспользоваться следующей конструкцией, чтобы быстро обновить конфигурации и запустить все:
for i in {2..4}; do sed 's/8140/8'$i'40/' /etc/apache2-1540/ports.conf > /etc/apache2-$i\540/ports.conf && systemctl enable apache2@$i\540 && systemctl start apache2@$i\540 && systemctl --no-pager status apache2@$i\540; done
Далее опубликуем базу, что мы создавали в предыдущем разделе. Хоть она и пустая — для теста подойдет.
Для публикации конфигурации необходимо сначала создать файл, куда утилита добавит конфигурацию, иначе утилита сообщит, что сервер apache2 не установлен. Скорее всего подразумевалось, что будет указываться основной конфигурационный файл сервера, но такой подход не очень удобен, особенно если в одном файле будет очень много публикаций. У нас все будет разложено по полочкам и можно достаточно быстро все найти, а при необходимости отключить и подключить какую-либо публикацию. Создаем конфигурационный файл:
touch /etc/apache2-4540/conf-available/testbd.conf
И запускаем утилиту webinst соответствующей версии:
/opt/1cv8/x86_64/8.3.19.1264/webinst -apache24 -wsdir 4540/testdb -dir /var/www/1c/4540/testdb -connstr 'Srvr="localhost:4541";Ref="testdb";' -confPath /etc/apache2-4540/conf-available/testbd.conf
Теперь включим созданную конфигурацию и попросим Apache2 перечитать конфиги:
a2enconf-4540 testbd.conf
systemctl reload apache2@4540.service
Теперь проверим, что отвечает по адресу нашей публикации:
curl http://192.168.12.112:8440/4540/testdb/
А также проверим из браузера:
Публикация работает.
Далее настроим обратный прокси, чтобы наша публикация открывалась на стандартном 80 порту.
Для начала включим модули proxy и headers для экземпляра apache2-web:
a2enmod-web headers
a2enmod-web proxy
a2enmod-web proxy_http
Далее создаем файл /etc/apache2-web/conf-available/proxy.conf:
nano /etc/apache2-web/conf-available/proxy.conf
Со следующим содержимым:
<Proxy *>
Order Allow,Deny
Allow from all
</Proxy>
<Location /1540>
ProxyPreserveHost On
ProxyAddHeaders On
ProxyPass http://localhost:8140/1540
ProxyPassReverse http://localhost:8140/1540
</Location>
<Location /2540>
ProxyPreserveHost On
ProxyAddHeaders On
ProxyPass http://localhost:8240/2540
ProxyPassReverse http://localhost:8140/2540
</Location>
<Location /3540>
ProxyPreserveHost On
ProxyAddHeaders On
ProxyPass http://localhost:8340/3540
ProxyPassReverse http://localhhost:8340/3540
</Location>
<Location /4540>
ProxyPreserveHost On
ProxyAddHeaders On
ProxyPass http://localhost:8440/4540
ProxyPassReverse http://localhost:8440/4540
</Location>
После чего перезапускаем apache2-web и проверяем, работает ли по пути http://192.168.12.112/4540/testdb/ наша публикация:
systemctl restart apache2@web.service
curl http://192.168.12.112/4540/testdb/
И из браузера:
Публикация работает. По аналогии можно опубликовать и другие базы.
Включаем SSL
Теперь для защиты подключения к серверу настроим шифрование и перенаправление при подключении по не зашифрованному каналу на защищенный.
Сначало необходимо приобрести сертификат или получить бесплатный сертификат Let's Encrypt (letsencrypt.org) или ZeroSSL (zerossl.com).
Мы будем использовать wildcard сертификат Let's Encrypt полученный для всех узлов в домене lan.rarus.ru и rarus.ru.
Важным условием работы сервера по защищенному каналу является настроенная служба DNS, которая выдаст IP-адрес по имени сервера или наличие в файле hosts FQDN имени сервера и его IP.
Скопируем с рабочей машины закрытый ключ и цепочку доверия сертификатов на сервер.
scp fullchain.pem rarus@ubuntu-1c:~/distr/
scp privkey.pem rarus@ubuntu-1c:~/distr/
Теперь на сервере перенесем ключи и сертификат в свои каталоги — fullchain.pem в каталог /etc/ssl/certs, а закрытый ключ privkey.pem в /etc/ssl/private. Назовем их так, чтобы было понятно, что это за сертификаты и ключи:
sudo mv ~/distr/fullchain.pem /etc/ssl/certs/rarus.ru.cert.pem
sudo mv ~/distr/privkey.pem /etc/ssl/private/rarus.ru.key.pem
Исправим права и владельца этих файлов, особенно это касается закрытого ключа:
sudo chown root:root /etc/ssl/certs/rarus.ru.cert.pem
sudo chmod 644 /etc/ssl/certs/rarus.ru.cert.pem
sudo chown root:ssl-cert /etc/ssl/private/rarus.ru.key.pem
sudo chmod 640 /etc/ssl/private/rarus.ru.key.pem
После чего исправим конфигурацию инстанса web:
sudo nano /etc/apache2-web/sites-available/000-default.conf
И добавим в него следующее содержимое после строки <VirtualHost *:80>:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Сохраняем и правим следующий конфигурационный файл /etc/apache2-web/sites-available/default-ssl.conf:
sudo nano /etc/apache2-web/sites-available/default-ssl.conf
В строчках SSLCertificateFile и SSLCertificateKeyFile прописываем пути к нашим скопированным файлам. После чего включаем модуль ssl, для защищенного соединения, модуль rewrite, что бы работало перенаправление, и сайт default-ssl, после чего перезапускаем apache:
sudo a2enmod-web ssl
sudo a2enmod-web rewrite
sudo a2ensite-web default-ssl
systemctl restart apache2@web.service
Теперь проверим работает ли у нас все через защищенное соединение. Переходим по адресу http://FQDN_имя_сервера/4540/testdb/, нас автоматически перенаправит на https://FQDN_имя_сервера/4540/testdb/ и откроется база:
Теперь для публикации базы в интернете можно пробросить порт 443 с роутера на сервер и пользоваться базами из интернета, главное не забыть правильно настроить DNS.
Также опубликовать базы в интернете можно выделив серверу отдельный белый IP (не забыв настроить файрвол) или настроить отдельный сервер публикации, на котором не будет самих серверов 1С и баз данных, или настроить на отдельном сервере обратный прокси для перенаправления запросов на данный сервер.
10. Установка сервера лицензирования СЛК
Для некоторых решений на платформе 1С могут потребоваться лицензии от этих решений, использующие систему лицензирования и защиты конфигураций 1С.
Зайдем на сайт prom.licencecenter.ru, выберем последний комплект сервера для конечного пользователя, скопируем ссылку на загрузку в буфер обмена. Загружать и распаковывать дистрибутив будем непосредственно на сервере. Для загрузки файлов по http и ftp в GNU/Linux есть утилита wget.
Перейдем в наш каталог с дистрибутивами:
cd ~/distr
Создадим каталог для дистрибутива СЛК и перейдем в него:
mkdir SLK && cd SLK
Скачаем дистрибутив по скопированной ссылке:
wget https://licencecenter.com/downloads/licence/3.0/licence-3.0.26.9524-eu.zip
Распакуем дистрибутивы:
unzip licence-3.0.26.9524-eu.zip && unzip licenceserver-3.0.26.9524.zip
После распаковки установим, как и делали ранее:
sudo dpkg -i licenceserver-3.0.26-9524.amd64.deb
Сервер установлен и запущен, проверим статус сервиса:
systemctl status licenceserver
Так же со своего компьютера зайдем на страничку управления сервером на порту 9099 — http://192.168.12.112:9099. Логин и пароль по умолчанию admin, рекомендуется его сменить.
11. Заключение
Наш сервер настроен и сконфигурирован, ничего сложного и пугающего. Остается немного: настроить бэкапы и сетевой экран под ваши потребности.
12. Ссылки
Дистрибутивы:
- Ubuntu server 18.04.5 (releases.ubuntu.com/18.04.5/)
- Postgrepro 1C (1c.postgres.ru)
- Apache 2.4 (httpd.apache.org/download.cgi)
- Дистрибутивы 1С (releases.1c.ru/project/Platform83)
- PgAdmin (pgadmin.org)
- Сервер СЛК (prom.licencecenter.ru)
Документация:
- Документация по Ubuntu Server (help.ubuntu.ru/wiki/руководство_по_ubuntu_server)
- Документация по файлуsrv1cv83 (its.1c.ru/db/v8316doc#bookmark:adm:TI000000418)
- Документация по postgresql pro (postgrespro.ru/docs/postgresql/12/index)
- Оптимизация postgresql (pgtune.leopard.in.ua/#/)
- Документация по Apache(eng) (httpd.apache.org/docs/2.2/)
- Команды консоли Ubuntu (help.ubuntu.ru/wiki/командная_строка)
- Tmux (tmuxguide.readthedocs.io/en/latest/tmux/tmux.html#help)
- OpenSSH (man.openbsd.org/ssh)
ВАЖНО: Читайте обновлённое руководство по установке сервера 1С под Linux в статье «От экспертов „1С‑Рарус“: Российские дистрибутивы Linux и установка в них сервера 1С» (январь 2023).
От экспертов «1С-Рарус»