1С:Сервер взаимодействия и медиасервер. Настройка. Часть 1.

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

Основные ситочники:

https://its.1c.ru/db/cs20doc#bookmark:cs:TI000000003

https://its.1c.ru/db/metod8dev#content:5988:hdoc

https://infostart.ru/1c/articles/1118799/

Подготовка Linux CentOS

Скачал дистрибутив CentOS-7-x86_64-Minimal-2009.iso с оф. сайта: http://isoredirect.centos.org/centos/7/isos/x86_64/

Не забываем при установке настроить сеть

По моему потом были работы с установкой sudo. Это нужно делать локально, где установлено ОС под root ом.

Используйте команду adduser, чтобы добавить нового пользователя в систему. Далее по тексту username — это имя вашего пользователя.

adduser username

Дадим новому пользователю новый пароль

passwd username

Используя команду usermod, чтобы добавить пользователя в группу wheel. В системе CentOS все пользователи, состоящие в группе wheel, имеют права sudo

usermod -aG wheel username

Если все правильно настроили, то протестируем вход, перейдя в сессию нового системного пользователя

su - username
sudo ls -la /root

Если успешно, то супер. Не забываем как минимум как создать нового пользователя в системе и двигаемся дальше.

Кстати, есть еще один способ добавления пользователя в sudo. Это при помощи редактирования фала. Чтобы отредактировать файл /etc/sudoers, используйте команду visudo. Эта команда проверяет файл на наличие синтаксических ошибок при его сохранении.

Прокрутите вниз до конца файла и добавьте следующую строку:

username ALL=(ALL) NOPASSWD:ALL

Другой распространенный пример — позволить пользователю запускать только определенные команды через sudo. Например, чтобы разрешить использовать только команды du и ping: username ALL=(ALL) NOPASSWD:/usr/bin/du,/usr/bin/ping
Вместо того, чтобы редактировать файл sudoers, вы можете добиться того же, создав новый файл с правилами авторизации в каталоге /etc/sudoers.d. Добавьте то же правило, что и в файл sudoers: echo «username ALL=(ALL) NOPASSWD:ALL» | sudo tee /etc/sudoers.d/username
Такой подход делает управление привилегиями sudo более понятным. Название файла не важно. Это обычная практика, когда имя файла совпадает с именем пользователя.

У меня опять возникли проблемы с DNS на одном из компьютеров.

Чтобы не забыть пропишу сюда как решать:
Находим файл с названием своего сетевого интерфейса тут: /etc/sysconfig/network-scripts
узнать его можно при помощи команды: ip addr

Редактируем файл добавляем DNS или меняем параметры:

# vi /etc/sysconfig/network-scripts/ifcfg-eno1 
NAME="eno1"
ONBOOT=yes
BOOTPROTO=static
HWADDR="ac:1f:6b:f6:3b:7e"
IPADDR="82.148.21.50"
NETMASK="255.255.255.0"
GATEWAY="82.148.21.1"
TYPE=Ethernet
DNS1="82.148.21.1"

Перезагружаем: systemctl restart network

DNS должен появится в файле /etc/resolv.conf

# grep "nameserver" /etc/resolv.conf nameserver ”82.148.21.1”

Мне понравилось как это все описано на этой странице: _https://selectel.ru/blog/setup-network-centos-7/

Сетевые настройки CentOS

Отключаем ipv6.

Добавляем в файл /etc/sysctl.conf две строки

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Настраиваем файрвол.

Проверяем работу файрвола. По умолчанию должен быть установлен firewalld

systemctl status firewalld

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

systemctl stop firewalld
systemctl disable firewalld

Потом можно его включить и настроить.
Посмотрим, что разрешено постоянно: firewall-cmd —permanent —list-all
Так как мы отключили ipv6, можно убрать правило: firewall-cmd —permanent —zone=public —remove-service=dhcpv6-client
Добавляем: firewall-cmd —permanent —zone=public —add-port=9094/tcp
Перезагружаем: firewall-cmd —reload
Смотрим: firewall-cmd —permanent —list-all

Установить Java

по инструкции:
https://bell-sw.com/pages/repositories/#yum

Выбираем установку репозитария: YUM Repository (.rpm-based Linux Distributions)

echo | sudo tee /etc/yum.repos.d/bellsoft.repo > /dev/null << EOF
[BellSoft]
name=BellSoft Repository
baseurl=https://yum.bell-sw.com
enabled=1
gpgcheck=1
gpgkey=https://download.bell-sw.com/pki/GPG-KEY-bellsoft
priority=1
EOF

Обновляйте репозитории и устанавливайте пакеты

sudo yum update
sudo yum install bellsoft-java11

Скачка дистрибутивов

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

Я себе скачал:
Сам сервер взаимодействия: 1c_cs_12.0.24_linux_x86_64.tar.gz
Сервер баз данных: postgresql_14.4_1.1C_x86_64_rpm.tar.bz2
Аддоны к серверу базы: postgresql_14.4_1.1C_x86_64_addon_rpm.tar.bz2

На Линухе кладем в свой домашний каталог. я использую загрузку по sftp.

Распаковываем. Желательно создать внутри отдельный каталог и туда уже распаковать.

mkdir 1c_cs
mv xvzf 1c_cs_12.0.24_linux_x86_64.tar.gz ./1c_cs
mv xvjf postgresql_14.4_1.1C_x86_64_rpm.tar.bz2 ./1c_cs
mv postgresql_14.4_1.1C_x86_64_addon_rpm.tar.bz2 ./1c_cs
mv tar xvzf centos_7.7.1908.x64.tar.gz ./1c_cs
cd ./1c_cs

tar xvzf 1c_cs_12.0.24_linux_x86_64.tar.gz
tar xvjf postgresql_14.4_1.1C_x86_64_rpm.tar.bz2
tar xvjf postgresql_14.4_1.1C_x86_64_addon_rpm.tar.bz2
tar xvzf centos_7.7.1908.x64.tar.gz

Если не удалось распаковать, копируем ошибку и в интернете смотрим, какой пакет нужно установить.

Мне нужно было установить bzip2

Установка сервера взаимодействия.

Проверку цифровой подписи можно отключить указав параметр «—ignore-signature-warnings».

sudo ./1ce-installer-cli install
или
sudo ./1ce-installer-cli install --ignore-signature-warnings".

Параметры можно посмотреть тут:
https://its.1c.ru/db/inst10doc/content/10024/hdoc

Установка PostgreSQL

sudo yum install libpython3.6m.so.1.0

cd "centos 7.7.1908.x64"/
cd "libs for PostgreSQL 14"/
sudo rpm -ihv libicu-50.2-3.el7.x86_64.rpm libxslt-1.1.28-5.el7.x86_64.rpm
cd ..
cd ..
cd postgresql-14.4-1.1C_x86_64_rpm/

sudo rpm -ihv postgresql14-1c-14.4-1.el7.x86_64.rpm postgresql14-1c-libs-14.4-1.el7.x86_64.rpm postgresql14-1c-contrib-14.4-1.el7.x86_64.rpm  postgresql14-1c-server-14.4-1.el7.x86_64.rpm

Задать пароль “postgres” пользователю postgres

sudo passwd postgres
su postgres
/usr/pgsql-14/bin/initdb -D /var/lib/pgsql/14/data
exit

Запускаем:
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

Проверяем что запущено:
sudo systemctl status postgresql-14

Далее:
su postgres
psql

Мы в базе postgres=#. Выполняем команды базы.
CREATE DATABASE cs_db;
\c cs_db
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
\q

Выходим из базы и перезапускаем

exit
sudo systemctl restart postgresql-14

Установим PgAdmin

Скачиваем от сюда: https://www.pgadmin.org/

Если возникают ошибки подключения, тогда нужно разрешить подключение на сервере. Открываем на редактирование файл sudo vi /var/lib/pgsql/14/data/postgresql.conf

Изменяем настройку на: listen_addresses = ‘*’

Далее на сервере PG добавляем, с каких компьютерах или сетей, можно будет подключаться:

sudo vi /var/lib/pgsql/14/data/pg_hba.conf

В моем случае нужно был добавить строку:

host  all  all  192.168.0.0/24  trust

Продолжаем установку

Перейдем в root режим. Нужно установить переменную JAVA_HOME.

su -l (я использую: sudo -i)
export JAVA_HOME=/usr/lib/jvm/bellsoft-java11.x86_64/

Установка сервера взаимодействия

$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 --java-home $JAVA_HOME --stopped

Установка инстанс Hazelcast

$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 —java-home $JAVA_HOME —stopped

Установка инстанс Elasticsearch

$ useradd elastic_user
$ mkdir -p /var/cs/elastic_instance
$ chown elastic_user:elastic_user /var/cs/elastic_instance
$ ring elasticsearch instance create --dir /var/cs/elastic_instance --owner elastic_user
$ ring elasticsearch --instance elastic_instance service create --username elastic_user --java-home $JAVA_HOME --stopped

Настройка JDBC

$ 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 postgres
$ ring cs --instance cs_instance jdbc pools --name common set-params --password postgres
$ 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 postgres
$ ring cs --instance cs_instance jdbc pools --name privileged set-params --password postgres

Настройка WebSocket.
cs_host — имя или IP-адрес компьютера, на котором установлен сервер взаимодействия и к которому будет подключаться клиентское приложение системы взаимодействия (система «1С:Предприятие»).
9094 — порт, на на который нужно будет подключаться

$ ring cs --instance cs_instance websocket set-params --hostname cs_host
$ ring cs --instance cs_instance websocket set-params --port 9094

Стартуем

$ ring hazelcast --instance hc_instance service start
$ ring elasticsearch --instance elastic_instance service start
$ ring cs --instance cs_instance service start

Проверим все ли запустилось

$ curl http://localhost:8087/rs/health

Должно выйти что то подобное: {«status»:»UP»,»mainDbOk»:true,»allShardsOk»:true,»hazelcast»:{«available»:true,»members»:[«127.0.0.1:5701″]},»elasticsearchOk»:true,»mediaClusterOk»:false,»mediaServers»:{},»pushOk»:false,»services»:{«available»:true,»unsatisfied»:[]}}

Если что то не так, логи в помощь:
/var/cs/cs_instance/logs/
/var/cs/hc_instance/logs/
/var/cs/elastic_instance/logs/

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

$ curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs_db\", \"username\" : \"postgres\", \"password\" : \"postgres\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/bucket_server

Если все удачно получилось то ответ должен быть таким: {«id»:»b844212d-9744-4cb0-9e2a-8377185d8222″,»url»:»jdbc:postgresql://localhost:5432/cs_db»,»username»:»postgres»,»password»:»postgres»,»lastUsedAt»:null,»enabled»:true,»deleted»:false}

Если мы включили файервол, тогда нужно открыть порты:

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

Ну теперь вы должны зарегистрировать сервер взаимодействия в 1С: Предприятие. Запустите обработку входящую в поставку сервера взаимодействия укажите адрес ws://имя вашего СВ:9094.

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

Подключение медиа сервера как добавление файлов в переписку, будет описано в следующей части. Часть 2. Ожидайте.

Добавить комментарий