Как установить 1C на Linux-сервер в облаке
Разбираем по шагам весь процесс от создания виртуально машины с 1С до установки Apache для веб-доступа.
Практически каждая компания использует 1С, когда ей нужно автоматизировать учет и бизнес-процессы, а также вовремя сдавать отчетность. Платформу можно запустить на разных операционных системах: Windows, macOS и других. Однако многие специалисты избегают Linux, потому что в нем нет графической оболочки и он кажется сложным для работы. В статье хочу убедить вас, что на самом деле это просто. Для этого мы установим 1С на сервер Linux в облаке своими руками.
Создание ВМ в панели управления
Сначала нам надо определиться, куда будем устанавливать 1С. Выбор сервера зависит от нескольких факторов: варианта использования (продакшен или тест), профиля нагрузки и других. В нашем примере мы возьмем облачный сервер Selectel.
Чтобы создать новый сервер, заходим в панель управления → Облачные серверы и нажимаем на кнопку Создать сервер. В открывшейся форме указываем имя, регион, пул, операционную систему Ubuntu и подходящую конфигурацию. Для теста достаточно выбрать 2 vCPU, 4 ГБ RAM и 32 ГБ SSD-диска.

Далее выбираем новый публичный адрес, группы безопасности и добавляем SSH-ключ. Если у вас еще нет пары SSH-ключей, сгенерируйте ее локально с помощью команды ssh-keygen.
ssh-keygen -t rsa
Публичный ключ (содержимое файла ~/.ssh/id_rsa.pub) нужно добавить в соответствующее поле при создании сервера. После нажимаем на кнопку Создать сервер.

Установка сервера 1С
Теперь нужно скачать дистрибутив 1С на официальном сайте. Подойдет последняя версия 8.3.27.2074 Сервер 1С:Предприятия (64-bit) для DEB-based Linux-систем.
Перед установкой давайте обновим пакеты и установим необходимые зависимости.
# Обновление репозиториев и уже установленных пакетов
apt update && apt upgrade
# Установка недостающих пакетов
apt install -y \
locales \
unzip \
libwebkit2gtk-4.1-0 \
openjdk-11-jre
Командой scp из локальной консоли копируем скачанный ранее файл с сервером 1С на удаленный хост. Затем уже в консоли сервера распаковываем и устанавливаем пакеты.
# Копируем файл с локального компьютера на сервер
scp ./deb64_8_3_27_2074.zip root@<ip>:/root/
# На сервере распаковываем и устанавливаем пакеты
unzip deb64_8_3_27_2074.zip -d srv
dpkg -i ./srv/*.deb
После установки было бы неплохо прибраться за собой. Давайте удалим скачанные и распакованные файлы — они нам больше не пригодятся.
# Очистка
rm -rf srv/
rm -f deb64_8_3_27_2074.zip
Далее с помощью утилиты systemctl включим службу сервера 1С.
#Регистрация и запуск службы 1с
systemctl link /opt/1cv8/x86_64/8.3.27.2074/srv1cv8-8.3.27.2074@.service
systemctl enable srv1cv8-8.3.27.2074@.default
systemctl start srv1cv8-8.3.27.2074@.default
Недостаточно установить сервер, им нужно еще управлять. В Windows администраторы используют консоль кластера 1С. В Linux его нет, поэтому необходимо взаимодействовать с командной строкой.
Чтобы управлять нашим сервером, давайте зарегистрируем и включим службу ras — remote administration server.
#Регистрация и запуск службы ras
systemctl link /opt/1cv8/x86_64/8.3.27.2074/ras-8.3.27.2074.service
systemctl enable ras-8.3.27.2074.service
systemctl start ras-8.3.27.2074.service
Активация лицензии
Мы установили сервер, но без лицензии он работать не будет. Необходимо скачать утилиту лицензирования 1С: Предприятия для Linux (64 bit) на официальном сайте. С ее помощью мы можем администрировать программные лицензии 1С: контролировать их, активировать и валидировать.
Далее копируем скачанный файл на удаленный хост утилитой scp, распаковываем его командой tar и устанавливаем ring.
# Создаем на сервере папку ring
mkdir ring
# Копируем с локального компьютера скачанный файл на сервер
scp ./1c_enterprise_license_tools_0.15.0_2_linux_x86_64.tar.gz root@<ip>:/root/ring/
# На сервере распаковываем и устанавливаем утилиту ring
cd ring && tar -xvf ring/1c_enterprise_license_tools_0.15.0_2_linux_x86_64.tar.gz
./1ce-installer-cli install --ignore-signature-warnings
# И по традиции удаляем папку ринг, она больше не нужна
cd ../ && rm -rf ring/
Далее необходимо перейти в директорию с установленной утилитой и активировать лицензии. Нам понадобятся серверная лицензия и как минимум одна клиентская.
cd /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/
./ring license activate --company "your_company" --town "your_town" --country "RU" --zip-code "123456" --street "your_street" --house "1" --email "email@email.ru" --serial "1111111111" --pin "XXX-XXX-XXX-XXX-XXX"
Необязательно проходить весь этот путь — вы можете развернуть 1С в готовом облаке Selectel. Готовое облако 1С решает вопросы, связанные с обслуживанием и настройкой инфраструктуры. Вам не придется настраивать ОС и политику безопасности, администрировать сервер-приложение 1С или вручную резервировать данные.
Также вы можете использовать как свои лицензии 1С, так и арендовать у нас в рамках дополнительной услуги. В Selectel нет ограничений по рабочим местам.
Доступ к PostgreSQL
Как вы знаете, 1С может работать в файловом и клиент-серверном варианте. Поскольку в настоящий момент мы устанавливаем серверный вариант, то будем использовать сервер СУБД.
Платформа 1С поддерживает четыре СУБД: MS SQL, PostgreSQL, Oracle DB и IBM BD. Самая популярная — MS SQL, но она работает только на Windows. Вторая по популярности — PostgreSQL, ее и будем использовать.
Чтобы получить бесплатную сборку Postgres Pro для 1С, заходим на сайт 1c.postgres.ru и проходим опросник. На почту придет письмо с инструкцией по установке сборки.

Устанавливаем сервер по инструкции и добавляем роль usr1cv8 для создания базы данных.
# Вернемся в директорию root
cd /root
# Скачаем и выполним скрипт
wget --quiet -O - https://repo.postgrespro.ru/1c/1c-16/keys/pgpro-repo-add.sh | bash
# Установим PostgresPro
apt install -y postgrespro-1c-16
# Проверим, что служба запущена
systemctl status postgrespro-1c-16
# Создание роли в PostgreSQL. В реальном проекте используйте генерацию пароля и переменные окружения
sudo -u postgres psql -c "CREATE ROLE usr1cv8 WITH LOGIN SUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD 'usr1cv8';"
Создание информационной базы
Мы установили серверы 1С и СУБД, но этого недостаточно — пользователи работают с 1С именно в информационных базах. Давайте создадим новую информационную базу и загрузим в нее дамп нашей конфигурации.
По сути, это можно сделать в интерактивном режиме. Но во-первых, мы, линуксоиды, не любим тыкать мышкой. Во-вторых, все эти команды потом можно собрать в единый скрипт и использовать при развертывании инфраструктуры с помощью Terraform.
Для удобства добавим путь до директории с сервером 1С в переменную PATH.
export PATH="$PATH:/opt/1cv8/x86_64/8.3.27.2074/"
Совет: чтобы не добавлять путь вручную при каждом входе, пропишите его в файл ~/.bashrc:
echo 'export PATH="$PATH:/opt/1cv8/x86_64/8.3.27.2074/"' >> ~/.bashrc
source ~/.bashrc
Далее создаем информационную базу с помощью утилиты rac. Так как для каждой команды rac нужно указывать uid кластера 1С, удобно сразу сохранить его в переменную CLUSTER_UID.
Также необходимо указать параметры новой информационной базы: имя, описание, тип СУБД, адрес сервера СУБД, имя базы данных, язык, имя пользователя и пароль, который мы создали ранее.
CLUSTER_UID=$(rac cluster list | awk '$1 == "cluster" {print $3}' | tr -d '\r\n')
rac infobase create \
--cluster="$CLUSTER_UID" \
--name="ib_name" \
--descr="ib_name" \
--dbms=PostgreSQL \
--db-server="localhost" \
--db-name="db_name" \
--locale="RU_ru" \
--db-user="usr1cv8" \
--db-pwd="usr1cv8" \
--create-database \
--license-distribution="true"
С помощью утилиты ibcmd загружаем дамп в новую информационную базу. Утилита позволяет взаимодействовать с информационными базами 1С. Практически вся современная автоматизация строится именно на ней. Она уже входит в состав сервера 1С.
Как и в предыдущем шаге, здесь нужно указать путь к временной директории, тип СУБД, адрес сервера СУБД, имя базы данных, язык, имя пользователя СУБД и пароль.
# Опять же скопируем с локального компьютера дамп нашей ИБ
scp ./1Cv8_demo.dt root@<ip>:/root/
# Для работы автономного сервера нужна временная директория, создадим ее
ibcmd infobase restore \
--data /tmp/data \
--dbms=PostgreSQL \
--db-server=localhost \
--db-user=usr1cv8 \
--db-pwd=usr1cv8 \
--db-name=db_name \
1Cv8_demo.dt
Установка Apache для веб-доступа
Чтобы пользователи могли подключаться к базе через тонкий клиент или браузер, настроим веб-сервер и опубликуем нашу базу.
Устанавливаем веб-сервер Apache:
sudo apt install -y apache2
Публикуем базу данных с помощью утилиты webinst, которая находится в каталоге установленной платформы 1С. В параметре -connstr указываем адрес сервера 1С и имя базы на сервере PostgreSQL.
webinst -publish -apache24 -wsdir ib_name -dir /var/www/ib_name -connstr "Srvr=localhost;Ref=ib_name;" -confpath /etc/apache2/apache2.conf
# Перезапустим службу apache
systemctl reload apache2.service
Отлично, мы завершили настройку! Сервер 1С с настроенной СУБД и веб-публикацией готов к работе. Пользователи могут подключаться к базе через тонкий клиент или браузер по адресу http://<ваш_ip_адрес>/ib_name.

Заключение
Мы проделали полный путь — от создания виртуальной машины до готового к работе сервера 1С на Linux. Как видите, здесь нет никакой магии, только последовательное выполнение команд.
Конечно, в «боевой» среде необходимо уделить внимание тонкой настройке производительности, безопасности и резервному копированию. Однако фундамент, который заложили в этой статье, абсолютно надежен для работы с 1С.