Как установить 1C на Linux-сервер в облаке  - Академия Selectel

Как установить 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 и проходим опросник. На почту придет письмо с инструкцией по установке сборки. 

Скриншот письма с инструкцией по установке PostgreSQL.
Письмо с инструкцией по установке сборки. 

Устанавливаем сервер по инструкции и добавляем роль 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С.