
Украли американские шпионы чертежи МИГ-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_HOMEring elasticsearch --instance es_instance service create --username es_user --stopped --java-home $JAVA_HOMEring 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.localRedOS-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 за предоставленное оборудование, без них видео не получилось бы записать.
Желающие проверить/разобраться во всем самостоятельно, вам предлагается список ссылок:
- 1С: Сервер взаимодействия 24. Тестовая версия Глава 4. Настройка и конфигурирование
- УЦ №1 Курс Администрирование 1С: Предприятия на линукс. Сервер взаимодействия
- Настройка 1С: Сервера взаимодействия и медиасервера
- Руководство для начинающих по SELinux
- keytool — Key and Certificate Management Tool
Надеюсь, статья вам сэкономит больше времени, чем вы потратите на ее прочтение.
И останется минутка поставить плюс или минус.
