Установка 1С: Сервера взаимодействия на CentOS 7, CentOS 8, RedOS 7.3. Заметки на полях

от автора

Нюансы установки 1С: Сервера взаимодействия в рабочем контуре на примере CentOS 7, CentOS 8, RedOS 7.3

Украли американские шпионы чертежи МИГ-29.
Собрали у себя, получается паровоз.Снова собрали-опять паровоз!
Ничего понять не могут. Решили сознаваться.
На нашем заводе собирают-стоит МиГ-29!
Спрашивают рабочего:»Как же ты его собрал, по чертежам?»
Он им отвечает:»Внизу, мелкими буквами написано:
«После сборки-обработать напильником!».

©анекдот времен СССР

Руководств как установить 1С: Сервер взаимодействия превеликое множество, как на официальном ресурсе ИТС, так и профильных сайтах.

Однако и эта статья имеет место быть. Поясню почему.

Есть простой вопрос: Вовочке дали два яблока, одно он отдал Машеньке, сколько яблок осталось у Вовочки?

Ответ: одно яблоко, может дать только гуманитарий, технарь ответит, что неизвестно, сколько яблок у Вовочки было изначально.

Так и язык инструкций, либо неизвестно начальное состояние системы, либо затеряется сноска мелким шрифтом, из-за которой затеряется ваш рабочий день.

Инструкции сайта ИТС методически грамотные и приятные глазу, в них единый стиль именования, если хотите культура кода и однозначно, они обязательны к прочтению.

Про них можно сказать уверенно — по ним вы точно не соберете работающий сервер с первого раза.

Есть еще академический язык, отличный курс от преподавателя УЦ 1С Арутюнова Сергея Рафаэльевича.

Там вы закопаетесь в кроличью нору максимально глубоко, однако на промышленную систему из нее не выйдете, уткнувшись в философскую фразу: Здесь вам не курсы по Linux.

К тому же академическое обучение в течении восьми часов дается нелегко.

Как и любое академическое образование, курс в первую очередь учит вас думать, а не только шашкой махать. По возможности запишитесь и посмотрите.

На это уйдет три дня по 8+ часов.

Но большинству не хочется такого длинного пути, хочется

немного подумать, немного скопипастить и чтобы все взлетело, отсюда все остальные опусы и мой в том числе.

В части просмотренных мной статей автор то запустит службы из-под рута, по брандмауэр отключит.

В это время грустит один сотрудник службы безопасности, если она есть в вашей компании или совесть, если накатывают воспоминания Win9x.CIH…

Зато радуются +100500 хацкеров. Напрасно думать, что в корпоративной сети их нет. Вы просто не представляете, на что способны скучающие менеджеры по продажам. Если кто не в курсе, то пароль пользователя БД в текущей версии 1С: Сервера взаимодействия лежит в текстовом файле и если это postgres, то безопасности хана.

А хочется, чтобы и быстро и хорошо. Поэтому и пишу эти строки.

Кратко:

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

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

Все ссылки внизу статьи.

Установка 1С: Сервер взаимодействия 24 идет на CentOS 7, CentOS 8, RedOS 7.3 облачных серверов одинаковой конфигурации

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

В каталоге /install лежат установочные пакеты сервера взаимодействия и java загруженные с сайта ИТС

  • CentOS 7 — классика, у кого есть доступ на kb.1c.ru, найдет там взятые с боевых контуров инструкции установки, которые сработают, но год выпуска наводит на размышления
  • CentOS 8 — уже теплее, но актуальным ядром может похвастаться наш родной
  • RedOS 7.3. Не буду здесь разводить дискуссий про отечественного производителя. Его кстати каждый может увидеть в зеркале. Кто не разу не прибивал в печатной форме хардкодом ФИО главного бухгалтера, может кинуть в меня камнем.

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

Те, кто не любит читать буквы, может посмотреть видео

Полный листинг установки:

#осмотреться в отсеках   uname -a ip addr # или кто к нему привык ifconfig  #при установке из образа dvd вариант сервер без графической оболочки его не будет #устанавливаем yum install net-tools -y  hostname  #+CentOS 8 cd /etc/yum.repos.d/ sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* #-CentOS 8 yum update -y #обновляемся  yum install mc -y #пригодится, если он вам не нужен, то зачем вы читаете эти строки? #отключаем ipv6 #+CentOS 8, RedOS 7.3 nmtui #-CentOS 8, RedOS 7.3 #+CentOS 7 echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf #-CentOS 7  #установка java cd /install yum install *.rpm -y #установка сервера взаимодействия tar xvzf *.tar.gz ./1ce-installer-cli install --ignore-signature-warnings  #установка postgresql  #+CentOS 8 dnf module list postgresql dnf module enable postgresql:12 #-CentOS 8 yum install postgresql-server -y yum install postgresql-contrib -y  postgresql-setup initdb systemctl enable postgresql.service --now systemctl status postgresql.service --now  #+CentOS 7 yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm  yum list -y postgre*-server* yum install postgresql12-server postgresql12-contrib -y  postgresql-12-setup initdb systemctl enable postgresql-12.service --now systemctl status postgresql-12.service #-CentOS 7  #создание базы postgresql  passwd postgres su postgres psql ALTER USER postgres WITH PASSWORD '123456'; CREATE USER db_user WITH PASSWORD '123456'; CREATE DATABASE cs_db OWNER db_user; \c cs_db CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; \q exit  #переключаем ident на md5 для postgresql cat /var/lib/pgsql/data/pg_hba.conf perl -i.orig -pE 's/(^host.*127.0.0.1\/32\s+)ident/$1 md5/i' /var/lib/pgsql/data/pg_hba.conf cat /var/lib/pgsql/data/pg_hba.conf  systemctl restart postgresql.service systemctl status postgresql.service --no-pager  #+CentOS 7 cat /var/lib/pgsql/12/data/pg_hba.conf perl -i.orig -pE 's/(^host.*127.0.0.1\/32\s+)ident/$1 md5/i' /var/lib/pgsql/12/data/pg_hba.conf cat /var/lib/pgsql/12/data/pg_hba.conf  systemctl restart postgresql-12.service systemctl status postgresql-12.service --no-pager #-CentOS 7  #в этой точке, чтобы была видна утилита ring желателен  reboot  #но можно  bash source ~/.bashrc  #или  mc  #проверяем существование и устанавливаем переменную JAVA_HOME ls /usr/lib/jvm/bellsoft-java11-full.x86_64/ export JAVA_HOME=/usr/lib/jvm/bellsoft-java11-full.x86_64/  #создаем сервисы useradd hc_user mkdir -p /var/cs/hc_instance chown hc_user:hc_user /var/cs/hc_instance ring hazelcast instance create --dir /var/cs/hc_instance --owner hc_user ring hazelcast --instance hc_instance service create --username hc_user --stopped --java-home $JAVA_HOME  useradd es_user mkdir -p /var/cs/es_instance chown es_user:es_user /var/cs/es_instance ring elasticsearch instance create --dir /var/cs/es_instance --owner es_user ring elasticsearch --instance es_instance service create --username es_user --stopped --java-home $JAVA_HOME  useradd cs_user mkdir -p /var/cs/cs_instance chown cs_user:cs_user /var/cs/cs_instance ring cs instance create --dir /var/cs/cs_instance --owner cs_user ring cs --instance cs_instance service create --username cs_user --stopped --java-home $JAVA_HOME  #прописываем настройки БД ring cs --instance cs_instance jdbc pools --name common set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public ring cs --instance cs_instance jdbc pools --name common set-params --username db_user ring cs --instance cs_instance jdbc pools --name common set-params --password '123456' ring cs --instance cs_instance jdbc pools --name privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public ring cs --instance cs_instance jdbc pools --name privileged set-params --username db_user ring cs --instance cs_instance jdbc pools --name privileged set-params --password '123456'  #прописываем настройки веб-сокета ring cs --instance cs_instance websocket set-params --hostname <ваше_имя или IP> ring cs --instance cs_instance websocket set-params --port 9094  ring -l trace -x hazelcast --instance hc_instance service start ring -l trace -x hazelcast --instance hc_instance service status   #стартуем  #в этой точке если вы нигде не ошиблись при копипасте в CentOS 7 сервис запустится, а в CentOS 8 и RedOS 7.3 нет #посмотреть ошибки journalctl -xe --no-pager #проверяем настройки selinux getenforse #может отсутствовать sestatus #если selinux включен, временно отключаем его setenforce 0  #стартуем еще раз systemctl start 1ce-cs_instance  systemctl start 1ce-hc_instance  systemctl start 1ce-es_instance   #проверяем что все запустилось systemctl status 1ce-cs_instance --no-pager systemctl status 1ce-hc_instance --no-pager systemctl status 1ce-es_instance --no-pager  curl http://localhost:8087/rs/health  #если все хорошо то переходим к настройке selinux, понадобится audit2allow, ищем в каком она пакете  #+CentOS 8, RedOS 7.3 setenforce 1  yum provides audit2allow  yum install policycoreutils-python-ххх.ххх -y  systemctl restart 1ce-hc_instance  #создаем правила selinux на основе записей лога  cd /var/cs/cs_instance grep systemd /var/log/audit/audit.log | audit2allow -M my-systemd #как вариант ausearch -c 'systemd' --raw | audit2allow -M my-systemd  #применяем созданные правила semodule -i my-systemd.pp semodule -R  #проверяем что все запустилось при включенном selinux systemctl restart 1ce-hc_instance  systemctl restart 1ce-es_instance  systemctl restart 1ce-cs_instance  curl http://localhost:8087/rs/health #-CentOS 8, RedOS 7.3  #инициализируем БД curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs_db\", \"username\" : \"db_user\", \"password\" : \"123456\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/bucket_server  #добавляем  правила в firewall firewall-cmd --zone=public --add-port=9000/tcp --permanent firewall-cmd --reload  #можно подключаться из баз 1С и штатно работать  #бонус 1 - включение wss #создаем хранилище keystore java mkdir /var/cs/cs_instance/data/security cd mkdir /var/cs/cs_instance/data/security keytool -keystore /var/cs/cs_instance/data/security/websocket-keystore.jks -genkey -alias RedOS-7.3.local #экспорт приватного ключа из keystore java keytool -importkeystore -srckeystore /var/cs/cs_instance/data/security/websocket-keystore.jks -srcstorepass 123456 -srckeypass 123456 -srcalias RedOS-7.3.local -destalias RedOS-7.3.local -destkeystore identity.p12 -deststoretype PKCS12 -deststorepass 123456 -destkeypass 123456 openssl pkcs12 -in identity.p12 -nodes -nocerts -out private_key.pem openssl pkcs12 -in identity.p12 -nokeys -out cert.pem  ring cs --instance <cs_instance> websocket set-params --wss true ring cs --instance <cs_instance> websocket set-params --keystore-path /var/cs/cs_instance/data/security/websocket-keystore.jks ring cs --instance <cs_instance> websocket set-params --keystore-password 123456 ring cs --instance <cs_instance> websocket set-params --keystore-format JKS  systemctl restart 1ce-cs_instance   #бонус 2 - приятная глазу утилита мониторинга в замену top yum install epel-release -y yum install glances -y  glances 

Купила группа РеноНиссан завод АвтоВАЗ.
Перенастроили производство, запускают конвейер.На выходе Жигули!
Демонтируют оборудование, пригнали новое из Японии.Снова Жигули!
Привозят работников из Франции.- Жигули!
Около завода холм, на нём отдыхают бывшие гл. инженер и директор завода.
Инженер директору:
— А я тебе говорил — место проклятое. А ты всё — руки не оттуда растут…
©анекдот.ру

Нюансы установки

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

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

Создаем отдельного пользователя БД postgres.

su postgres
psql
ALTER USER postgres WITH PASSWORD '123456';
CREATE USER db_user WITH PASSWORD '123456';
CREATE DATABASE cs_db OWNER db_user;

\c cs_db
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
\q
exit

Перед установкой сервисов 1С: Сервера взаимодействия проверяем существование каталога и устанавливаем переменную JAVA_HOME:

export JAVA_HOME=/usr/lib/jvm/bellsoft-java11-full.x86_64/

Далее ее используем в строке создания сервисов.

ring hazelcast --instance hc_instance service create --username hc_user --stopped --java-home $JAVA_HOME

ring elasticsearch --instance es_instance service create --username es_user --stopped --java-home $JAVA_HOME

ring cs --instance cs_instance service create --username cs_user --stopped --java-home $JAVA_HOME

На корпоративе к программисту подошла симпатичная бухгалтерша и предложила:
— Может быть мы уединимся и займемся непозволительным?
-Ух ты! Будем делить на ноль!
обрадовался программист
©анекдот.ру

Можно конечно запустить все службы с правами суперпользователя, отключить брандмауэр, отключить встроенные средства безопасности ОС, для верности записать пароли в текстовый файл и ждать пока мимо проплывет зарплата премию…

Да еще пароль везде использовать 123456 🙂

Не забудьте поменять его на надежный при копипасте из листинга публикации!

При включенном selinux сервисы 1С: Сервера взаимодействия запустятся только в CentOS 7, в его старших (младших?) братьях будет таймаут запуска с не совсем информативным сообщением ошибки.

Это отрабатывает selinux.

Если безопасность вам не важна то идем в cd /etc/selinux изменяем в файле config
SELINUX=enforcing на SELINUX=disabled или SELINUX=permissive
.

Если здоровье и рассудок вам дороги, то не отключаем selinux, а создаем правила для него.

Понадобится утилита audit2allow.

С ее помощью можно легко преобразовать записи лога файла аудита в правила selinux:

ausearch -c 'systemd' --raw | audit2allow -M my-systemd — так рекомендуют разработчики CentOS.

grep systemd /var/log/audit/audit.log | audit2allow -M my-systemd — такой пример на сайте RedHat и на мой взгляд он отрабатывает лучше.

Остается только применить и перечитать правила:

semodule -i my-systemd.pp

semodule -R

После этого все сервисы запустятся при включенном selinux:

С брандмауэром еще проще:

firewall-cmd --permanent --zone=public --add-port=9094/tcp

firewall-cmd --reload

Для полного фен-шуя остается переключиться на защищенный канал, к тому же, если для доступа к базе 1С используется веб-клиент по HTTPS, то сервер взаимодействия должен использовать протокол WSS в обязательном порядке.

Некоторая проблема в том что админы, откликающиеся на системных, привыкли и будут просить закрытый ключ сгенерированный openssl, а хранилище ключей у вас keystore java, управляемое утилитой keytool.

Сработает такой путь:

Cоздаем хранилище:

mkdir /var/cs/cs_instance/data/security

cd mkdir /var/cs/cs_instance/data/security

keytool -keystore /var/cs/cs_instance/data/security/websocket-keystore.jks -genkey -alias RedOS-7.3.local

RedOS-7.3.local — нужно заменить на ваш алиас, путь к хранилищу — рекомендованный 1С.

Экспортируем и конвертируем закрытый ключ:

keytool -importkeystore -srckeystore /var/cs/cs_instance/data/security/websocket-keystore.jks -srcstorepass 123456 -srckeypass 123456 -srcalias RedOS-7.3.local -destalias RedOS-7.3.local -destkeystore identity.p12 -deststoretype PKCS12 -deststorepass 123456 -destkeypass 123456

openssl pkcs12 -in identity.p12 -nodes -nocerts -out private_key.pem

openssl pkcs12 -in identity.p12 -nokeys -out cert.pem

Любезнейше прошу извинить, за допущенные опечатки.

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

Огромная благодарность облачному провайдеру © Serverspace за предоставленное оборудование, без них видео не получилось бы записать.

Желающие проверить/разобраться во всем самостоятельно, вам предлагается список ссылок:

Надеюсь, статья вам сэкономит больше времени, чем вы потратите на ее прочтение.

И останется минутка поставить плюс или минус.


ссылка на оригинал статьи https://habr.com/ru/articles/766824/