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