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

Установка на новый сервер сервер.

Обновить сервер и установить vmware-tools если у вас виртуальная машина.

Установка VMware Tools на Centos

Руководство по установке Liberica JDK 11.0.11+9

Устанавливаем необходимые пакеты.

#yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
#yum install readline libtermcap krb5-libs openssl libicu50 libicu-devel net-tools mc wget tcl bzip2 unzip zip bind-utils llvm5.0-devel centos-release-scl llvm-toolset-7 -y

Так как этот сервер у нас за NAT отключаем файрволл

#systemctl stop firewalld
#systemctl disable firewalld
#systemctl status firewalld

Отключаем Selinux

#sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux 
#sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

Отключаем ipv6 как рекомендует фирма 1С
Добавляем в файл две строки

#mcedit /etc/sysctl.conf 

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

Скачиваем с сайта 1С PostgreSQL и 1С:Сервер взаимодействия все заливаем на сервер.

PostgreSQL12

Поднимем PostgreSQL12 с дистрибутива 1С.

Распаковка архивов

#tar -xvf postgresql_12.7_1.1C_x86_64_rpm.tar.bz2 
#tar -xvf postgresql_12.7_1.1C_x86_64_addon_rpm.tar.bz2

Установка PostgresSQL

#cd postgresql-12.7-1.1C_x86_64_rpm 
#yum localinstall -y *.rpm

Установка дополнений

#cd /root/postgresql-12.7-1.1C_x86_64_addon_rpm/ 
#yum localinstall -y *.rpm

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

#mkdir /home/pgsql

дадим права на эту папку

#chown -R postgres:postgres /home/pgsql 
#su - postgres -c "/usr/pgsql-12/bin/initdb -D /home/pgsql/" 
#mcedit /usr/lib/systemd/system/postgresql-12.service

находим в файле
Environment=PGDATA=/var/lib/pgsql/10/data/ и меняем на свое значение Environment=PGDATA=/home/pgsql/
Чтобы изменения применились, перезапускаем

#systemctl daemon-reload

После перезагрузки запустим вручную и добавим в автозагрузку

#systemctl start postgresql-12 
#systemctl enable postgresql-12 
#systemctl status postgresql-12

Задаем пароль для пользователя postgres:

#passwd postgres

Заходим в систему под данной учетной записью:

su - postgres
Подключаемся к сервису:
-bash-4.2$ psql

Создаём пользователя (cs_user) для Сервера взаимодействия

CREATE USER db_user WITH PASSWORD 'password';

и создаём базу (cs_db) для Сервера взаимодействия, делаем ранее созданного пользователя её владельцем

CREATE DATABASE cs_db OWNER db_user;

Подключаемся к созданной базе

\c cs_db

Подключаем расширение uuid-ossp

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Выходим из оболочки psql и отключаемся от системы пользователем postgres:

\q
exit

Для работы Сервера взаимодействия, сервер PostgreSQL должен поддерживать аутентификацию по паролю.

Настраиваем. Найдём где находятся файлы конфигурации PostgreSQL
ps aux | grep postgres | grep — -D
или #su — postgres -c «psql -t -P format=unaligned -c ‘show hba_file’;»

Открываем файл

#mcedit /home/pgsql/pg_hba.conf

и добавляем в него две строки, где cs_db имя базы , db_user имя пользователя. Желательно в начале всех разрешений.

local cs_db db_user password
host cs_db db_user 127.0.0.1/32 password

Перегружаем PostgreSQL

#systemctl restart postgresql-12

Проверяем

#psql -Udb_user cs_db

Система должна спросить пароль ( вводим тот что указали при создании пользователя db_user) и пустить в оболочку

Выходим из оболочки psql

\q

Пропишем Java в переменные среды в PATH и JAVA_HOME

Для этого в начале проверим все ли соответствует действительности.

#which java 

если у нас выводит

/usr/bin/which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

То значит нужно прописать создадим файл

#mcedit /etc/profile.d/java.sh

и пропишем в нем следующее:

#!/bin/bash
JAVA_HOME=/usr/java/default/
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME
export PATH=$PATH:/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64
export CLASSPATH=.

далее делаем этот файл исполняемым

#chmod +x /etc/profile.d/java.sh

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

#ln -s /usr/lib/jvm/bellsoft-java11.x86_64 /usr/java/default

если не будет каких то каталогов то создаем.

Перезапускаем файл с нашими параметрами.

#source /etc/profile.d/java.sh

Проверяем

#echo $JAVA_HOME

/usr/java/default/

#which java

/usr/java/default/bin/java

#export

Должно присутствовать среди прочего.
Переменная окружения JAVA_HOME

declare -x JAVA_HOME=»/usr/java/default»

В переменной окружения PATH каталог с установленной утилитой ring.

declare -x PATH=»/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/1C/1CE/components:/root/bin»

Переходим к установке компонентов самого сервера взаимодействия

Перед установкой лучше перезагрузить сервер!!!

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

#tar -xvf 1c_cs_10.0.47_linux_x86_64.tar.gz 

запустим установку

#sudo ./1ce-installer-cli install
Установка продукта началась:
  > 1С:Сервер взаимодействия (10.0.47)
  > (c) 1C-Soft LLC, 2021. Все права защищены.

  - Копирование файлов компонента Hazelcast для 1С:Сервера взаимодействия.
  - Копирование файлов компонента 1С:Предприятие - Сервер взаимодействия.
  - Копирование файлов компонента Elasticsearch для 1С:Сервера взаимодействия.
  - Копирование файлов компонента Утилита командной строки Ring.
Установка продукта завершена успешно.

Hazelcast
Для начальной инициализации сервера Hazelcast необходимо выполнить следующие действия:

#sudo useradd hc_user
#sudo mkdir -p /var/cs/hc_instance
#sudo 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

В данном примере: ● ‑ название экземпляра Hazelcast.
● ‑ имя пользователя, от имени которого будет функционировать сервер Hazelcast.

Elastisearch
Для начальной инициализации сервера Elasticsearch необходимо выполнить следующие действия:

#sudo useradd elastic_user
#sudo mkdir -p /var/cs/elastic_instance
#sudo 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 --stopped

В данном примере: ● ‑ название экземпляра Elasticsearch.
● ‑ имя пользователя, от имени которого будет функционировать сервер Elasticsearch.

Сервер взаимодействия
Для начальной инициализации сервера взаимодействия необходимо выполнить следующие действия:

#sudo useradd cs_user
#sudo mkdir -p /var/cs/cs_instance
#sudo 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

В данном примере: ● ‑ название экземпляра сервера взаимодействия.
● ‑ имя пользователя, от имени которого будет функционировать сервер взаимодействия.

Настройка базы данных

Необходимо выполнить настройку параметров JDBC-драйверов PostgreSQL:

#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 ******
#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 *******

Настройка WebSocket

Для взаимодействия сервера взаимодействия и клиентского приложения используется протокол WebSocket. Для настройки работы этого протокола следует выполнить следующие действия:

#ring cs --instance cs_instance websocket set-params --hostname 1cCommunication.kompromiss.loc
#ring cs --instance cs_instance websocket set-params --port 8181

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

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

«Не могу найти библиотеку JVM»

После долгих мытарств я дошел до самих служб hazelcast, elasticsearch и cs. Можно посмотреть что они умеют.

#ring hazelcast help
#ring elasticsearch help
#ring cs help

Короче они не видят явно параметры JAVA_HOME. Делаем следующее:

#ring hazelcast --instance hc_instance service java-home set /usr/java/default
#ring elasticsearch --instance elastic_instance service java-home set /usr/java/default
#ring cs --instance cs_instance service java-home set /usr/java/default

Запуск необходимых сервисов
После окончания настройки необходимо запустить настроенные сервисы:

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

Инициализация ICE-сервера

Для использования видеоконференций необходимо выполнить настройку базы данных для использования протокола ICE, который необходим для использования WebRTC. Это действие необходимо выполнять только в том случае, если предполагается совершать видеозвонки, участники которых будут расположены за разными NAT-ами или будут использованы брандмауэры, которые настроены на запрет входящих соединений.

Для выполнения настройки базы данных необходимо выполнить POST-запрос:

curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/<cs_db>\", \"username\" : \"<db_user>\", \"password\" : \"<db_user_pwd>\", \"enabled\" : true }" -u <ia_name>:<ia_password> http://localhost:8087/<ia_name>/bucket_server

В данном примере:

  • cs_db ‑ имя базы данных сервера взаимодействия,
  • db_user ‑ имя пользователя, от имени которого сервер взаимодействия подключается к СУБД.
  • db_user_pwd ‑ пароль этого пользователя.
  • ia_name ‑ имя администратора ICE-сервера.
  • ia_password ‑ пароль администратора ICE-сервера.

У нас команда будет выглядеть так:

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

{«id»:»1912d8d7-fc2c-4c5e-a7a6-44386980e45f»,»url»:»jdbc:postgresql://localhost:5432/cs_db»,»username»:»db_user»,»password»:»»,»lastUsedAt»:null,»enabled»:true,»deleted»:false}

Проверим

Настройка 1С:Сервера взаимодействия :: Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8

#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}

Проверим порты

#netstat -tpln

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9700 0.0.0.0:* LISTEN 3055/launcher
tcp 0 0 0.0.0.0:9701 0.0.0.0:* LISTEN 3055/launcher
tcp 0 0 0.0.0.0:5701 0.0.0.0:* LISTEN 2891/launcher
tcp 0 0 127.0.0.1:9200 0.0.0.0:* LISTEN 2988/launcher
tcp 0 0 127.0.0.1:9300 0.0.0.0:* LISTEN 2988/launcher
tcp 0 0 192.168.**.**:8181 0.0.0.0:* LISTEN 3055/launcher
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1188/sshd
tcp 0 0 127.0.0.1:8087 0.0.0.0:* LISTEN 3055/launcher
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 1198/postmaster
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 3055/launcher
tcp6 0 0 :::22 :::* LISTEN 1188/sshd
tcp6 0 0 :::5432 :::* LISTEN 1198/postmaster

Получить настройки конкретного экземпляра сервера взаимодействия (включая параметры подключения) можно с помощью команды:

#ring cs --instance cs_instance websocket list-params