Установка 1С:Предприятие в Linux контейнер

Если поднимать вопрос о разворачивании 1С:Предприятие на Linux, то официальные системные требования для узла под СУБД и для узла с собственно сервером 1С:Предприятие несколько отличаются, и разработчиками (видимо) предполагается использование различных серверов для сервера СУБД и собственно сервера 1С:Предприятие. С учётом современных тенденций к консолидации и виртуализации вычислительных ресурсов, для объединения этих систем на одном физическом сервере вполне логичным является желание использовать какое либо из средств виртуализации. Традиционные средства виртуализации, такие как VMware ESX, Xen, Microsoft Virtual PC, Oracle VM VirtualBox достаточно популярны и хорошо изучены, но, в сравнении с контейнерной виртуализацией, имеют существенно большие накладные расходы. 

Учитывая тот факт, что 1С:Предприятие существует только для Windows и Linux, выбор средст контейнерной виртулизации ограничивается только LXC, но мне почему-то не попалось информации по разворачиванию 1С в контейнерах.

LXC, как и классические средства виртуализации, предоставляет возможность запуска в контейнерах дистрибутивы отличающиеся от основной системы, также существует возможность запуска 32-х битных контейнеров на 64-х битной системе, что, например, позволяет использовать 64-х битный контейнер для СУБД и, если это необходимо по каким-то причинам, 32-х битный контейнер для сервера 1С:Предприятие.

В качестве стенда были взяты:

  • Debian GNU/Linux 8 (Jessie)
  • 1С:Предприятие 8.3.7.1845
  • Релиз PostgreSQL 9.4.2 от компании 1С

Помятуя о возникших проблемах с разворачиванием PostgreSQL 9.3.4 на Ubutu 14.04 LTS, для разворачивания СУБД создаём 64-х битный контейнер c Debian:

lxc-create -n db1c -t debian -B zfs -f /etc/lxc/lxc.container.conf -- -r jessie

Для корректной работы 1С в полученном контейнере добавляем поддержку локализации ru_RU.UTF-8:

dpkg-reconfigure locales

В пакетах PostgreSQL 9.4.2 от 1С, в отличие от 9.3.4, нет отдельной копии библиотек из пакета libicu48, но этот пакет необходим для корректной работы PostgreSQL. Поэтому делаем немного некорректную вещь - подключаем репозиторий от предыдущего выпуска Debian, дописав в /etc/apt/sources.list:

deb http://http.debian.net/debian wheezy main

После устанавливаем необходимые пакеты:

apt-get update
apt-get install vim-tiny libldap-2.4-2 ssl-cert ucf libxml2 libxslt1.1 libicu48

Строго говоря vim-tiny не является необходимым для PostgreSQL, но будет полезен для выполнения дальнейших шагов.

После чего устанавливаем PostgreSQL от 1С:

tar xf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2
dpkg -i libpq5_9.4.2-1.1C_amd64.deb postgresql-client-common_154.1.1C_all.deb \
  postgresql-client-9.4_9.4.2-1.1C_amd64.deb postgresql-common_154.1.1C_all.deb \
  postgresql-9.4_9.4.2-1.1C_amd64.deb postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb

Не смотря на суффикс .tar.bz2 у скачанного с сайта 1С файла, он не сжат bzip2 и является просто архивом tar. Видимо кто-то в 1С забыл указать ключик j при вызове tar cf.

Всю необходимую работу по инициализации СУБД пакет сделает сам, но необходимо внести как минимум одно изменение в /etc/postgresql/9.4/main/postgresql.conf:

standard_conforming_strings = off

Запускаем сервер:

service postgresql start

И устанавливаем пароль пользователя postgres:

su - postgres -c psql <<EOF
ALTER USER postgres ENCRYPTED PASSWORD 'verylongrandompassword';
EOF

На чём настройку контейнера для СУБД можно считать законченной и можно создать контейнер под собственно 1С:Предприятие:

lxc-create -n srv1c -t debian -B zfs -f /etc/lxc/lxc.container.conf -- -r jessie

И тоже выполняем настройку локализации.

Также обращу внимание, что для корректной работы сервера 1С:Предприятие неходимо, чтобы имя узла резолвилось в IP через /etc/hosts или службу DNS. В противном случае сервис будет рапортовать OK, но из трёх необходимых для работы демонов будет запущен только один.

Для установки необходимых пакетов потребуется внести следующее изменение в /etc/apt/sources.list:

deb http://http.debian.net/debian jessie main contrib non-free

Устанавливаем пакеты:

apt-get update
apt-get install vim-tiny libwebkitgtk-1.0-0 xauth ttf-mscorefonts-installer \
  libmagickwand-6.q16-2 file cups-daemon cups-browsed cups-bsd

В зависимостях пакетов 1С указан только libwebkitgtk-1.0-0, а вот пакеты libmagickwand-6.q16-2 и file были найдены методом проб и ошибок. Причины, по которым они не указаны в зависимостях, для меня являются тайной.

Теперь можно устанавливать сервер 1С и толстого клиента:

tar xfz deb64.tar.gz
tar xfz client.deb64.tar.gz
dpkg -i \
  1c-enterprise83-common_8.3.7-1845_amd64.deb \
  1c-enterprise83-common-nls_8.3.7-1845_amd64.deb \
  1c-enterprise83-server_8.3.7-1845_amd64.deb \
  1c-enterprise83-server-nls_8.3.7-1845_amd64.deb \
  1c-enterprise83-ws_8.3.7-1845_amd64.deb \
  1c-enterprise83-ws-nls_8.3.7-1845_amd64.deb \
  1c-enterprise83-client_8.3.7-1845_amd64.deb \
  1c-enterprise83-client-nls_8.3.7-1845_amd64.deb

Запускаем сервер 1С:

service srv1cv83 start

Наш сервер 1С:Предприятие готов к работе!

 

Коротко о себе:

Работаю в компании Tune-IT и ассистентом кафедры Вычислительной техники в СПбГУИТМО.

Очень люблю команду cat и ставить core solaris.