0

1c linux

Единый дистрибутив 1С:Предприятие для Linux. Установка сервера

05.02.2023
edinyy-distributiv-1c-linux-server-000.png

Продолжаем изучать работу с единым дистрибутивом платформы 1С:Предприятие для Linux, который появился в версии 8.3.20. В прошлой статье мы рассмотрели установку клиентских приложений, а сегодня уделим внимание серверу 1С:Предприятия и серверным компонентам. Основной целью выпуска единого дистрибутива было заявлено упрощение процессов установки и сопровождения системы. Что касается клиентской части, то здесь мы полностью согласимся, но в отношении серверов такое упрощение не всегда идет на пользу. Обо всем этом в нашей статье.

Долгое время поставка 1С:Предприятие для Linux производилась в виде привычных DEB или RPM-пакетов, которые затем устанавливались с помощью пакетного менеджера системы. Это привычный и понятный системным администраторам механизм, позволяющий полностью контролировать и автоматизировать процесс развертывания, при наличии такой необходимости.

Новый способ предусматривает поставку в виде универсального run-файла, который содержит клиентскую и серверную часть, дополнительные компоненты и подходит как для RPM, так и для DEB-систем. Установка при этом производится в обход пакетного менеджера и слабо поддается контролю со стороны администратора. Если для клиентских систем это несущественно, то на серверах многие админы предпочитают держать руку на пульсе любых изменений системы.

Но единый дистрибутив – это закономерный итог текущей политики разработки 1С. Вместо следования философии UNIX-систем, когда каждая программа делает свое дело и делает его хорошо, сборки 1С постоянно собирались с жесткими зависимостями от определенных версий библиотек, что вызывало постоянные проблемы при разрешении зависимостей и требовало подключать сторонние репозитории, либо скачивать недостающие пакеты руками. Хотя это касалось в большей мере только клиентского приложения.

В дальнейшем 1С стала следовать принципу “все свое ношу с собой”, постепенно включив в состав дистрибутива почти все библиотеки основных зависимостей. Единый дистрибутив – апофеоз этого процесса. Но нравится нам это или нет, 1С:Предприятие является ведущей платформой для построения учетных систем, поэтому давайте учиться жить и работать в новых условиях.

В нашем примере мы будем устанавливать сервер 1С:Предприятие на Ubuntu 20.04 LTS и Debian 10, однако данная инструкция одинаково пригодна для любого поддерживаемого платформой Linux-дистрибутива с поправками на работу с пакетным менеджером. Все приведенные ниже команды следует выполнять с правами суперпользователя.

Для установка на ОС семейства Альт воспользуйтесь следующим материалом: Установка сервера 1C:Предприятие, PostgreSQL и Apache2 на Альт Сервер 10

Установка платформы 1С:Предприятие

Начнем с установки требуемых зависимостей. Их немного, это набор шрифтов Microsoft True Type Core Fonts и библиотека UnixODBC, для работы через одноименный интерфейс.

В Debian для этого следует подключить репозитории с несвободным ПО, для этого откройте /etc/apt/sources.list и добавьте после main в каждую строку contrib и non-free.

edinyy-distributiv-1c-linux-server-001.png

В Debain 11 нужно также добавить репозиторий от предыдущего выпуска для установки библиотеки libenchant1c2a:

echo "deb http://ftp.ru.debian.org/debian buster main" > /etc/apt/sources.list.d/buster.list

Обновим список пакетов и установим зависимости:

apt update
apt install ttf-mscorefonts-installer libodbc1

Затем скачаем с официального сайта архив с единым дистрибутивом, после чего любым удобным способом передадим его на сервер. Будем считать, что вы разместили его в домашней директории текущего пользователя. Перейдем туда и распакуем архив:

cd ~
tar -xzf server64_8_3_20_1549.tar.gz

В нашем случае используется выпуск платформы с единым дистрибутивом 8.3.20.1549.

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

В контексте серверного применения нам могут быть интересны:

  • server – кластер серверов 1С:Предприятия
  • server_admin – сервер администрирования кластера серверов 1С:Предприятия
  • liberica_jre – Java Runtime Environment (JRE)
  • config_storage_server – сервер хранилища конфигураций
  • ws – модули расширения веб-сервера

С полным списком опции можно ознакомиться в официальной документации.

Допустим, мы хотим установить кластер серверов 1С:Предприятие и модуль расширения веб-сервера, для этого запустим инсталлятор со следующими ключами:

./setup-full-8.3.20.1549-x86_64.run --mode unattended --enable-components server,ws

Где –mode unattended – обозначает использование пакетного режима, а после –enable-components через запятую перечисляются требуемые компоненты. Если не указано иного, то устанавливаются русский и английский языки. Во время установки никаких сообщений не выводится, а сама она может занять продолжительное время.

Настройка автозапуска службы для платформы 8.3.20

Начиная с платформы 8.3.18, когда появилась возможность одновременной установки нескольких версий на платформе Linux инсталлятор не производит автоматическую регистрацию службы. Это нужно сделать самостоятельно. Для этого скопируем, точнее сделаем символические ссылки для скрипта запуска и файла конфигурации. В настоящий момент 1С:Предприятие продолжает использовать подсистему инициализации init, переход на systemd выполнен в платформе 8.3.21.

ln -s /opt/1cv8/x86_64/8.3.20.1549/srv1cv83 /etc/init.d/srv1cv83
ln -s /opt/1cv8/x86_64/8.3.20.1549/srv1cv83.conf /etc/default/srv1cv83

Затем добавим ее в автозагрузку:

update-rc.d srv1cv83 defaults

Управлять службой можно как “по старинке”:

service srv1cv83 start|stop|restart|status

Так и через systemd:

systemctl start|stop|restart|status srv1cv83
edinyy-distributiv-1c-linux-server-002.png

Настройка автозапуска службы для платформы 8.3.21 и новее

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

systemctl link /opt/1cv8/x86_64/8.3.21.1302/srv1cv8-8.3.21.1302@.service

Обратите внимание, что следует использовать абсолютный путь и он включает в себя версию установленной платформы, в нашем случае это 8.3.21.1302.

Затем добавим сервис в автозагрузку:

systemctl enable srv1cv8-8.3.21.1302@

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

systemctl start|stop|restart|status srv1cv8-8.3.21.1302@default

В данном случае при обращении к службе следует использовать кроме ее имени также имя конкретного экземпляра, т.к. systemd позволяет запускать несколько экземпляров одной службы, по умолчанию имя экземпляра – default.

Дополнительные действия для платформы 8.3.20

На этом установку сервера 1С:Предприятие вроде бы можно считать оконченной, но есть один неприятный сюрприз. Перезагрузив сервер, вы неожиданно увидите приглашение ко входу в графическую оболочку. При этом сама оболочка будет установлена в весьма ограниченном варианте, даже терминала нет. Зато есть ярлыки 1С:Предприятие.

С одной стороны, мешать она никому не мешает и многие вообще могут не заметить ее появления, особенно если ходят на сервер сугубо по SSH. Но любое дополнительное ПО тратит ресурсы сервера и предоставляет дополнительную поверхность атаки, поэтому давайте удалим оболочку Gnome, тем более что для работы сервера 1С:Предприятие она не нужна:

apt purge gnome-shell gnome-control-center gnome-keyring
apt autoremove

Как вы уже догадались, оболочку на сервер устанавливает единый дистрибутив 1С:Предприятия и пока нет возможности воспрепятствовать этому, а следовательно указанные выше действия нужно будет выполнять после каждого запуска единого дистрибутива. Начиная с 8.3.21 этот недостаток исправлен.

Удаление платформы 1С:Предприятие

Так как новые версии платформы предусматривают одновременную установку сразу нескольких экземпляров, то обновление уже установленной системы будет сводиться к действиям по удалению старой платформы и установке новой.

Прежде всего остановим службу и удалим ее из автозагрузки, для платформы 8.3.20 выполним:

systemctl stop srv1cv83
update-rc.d -f srv1cv83 remove

Для платформы 8.3.21:

systemctl stop srv1cv8-8.3.21.1302@default
systemctl disable srv1cv8-8.3.21.1302@

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

/opt/1cv8/x86_64/8.3.21.1302/uninstaller-full

Таким образом для обновления сервера 1С:Предприятия вам понадобится:

  • Остановить службу
  • Выключить ее автозагрузку
  • Удалить старую платформу
  • Установить новую платформу
  • Включить службу в автозагрузку
  • Запустить службу

Как видим, особых сложностей с использованием единого дистрибутива 1:Предприятия для Linux нет. Но есть некоторые особенности и некорректное поведение инсталлятора, пытающегося установить на сервер графическую оболочку. Все это нужно учитывать при планировании развертывания. И если нам понравилось использование единого дистрибутива при установке клиентского приложения, то сказать тоже самое про сервер мы не можем. Но увы, альтернативы у нас нет, остается только надеяться, что разработчики 1С прислушаются к мнению сообщества и единый дистрибутив будет серьезно доработан и переработан.

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:380 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(837): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(417): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 380