Данная инструкция не претендует на истину в последней инстанции, а скорее всего предназначена для тех кто не хочет вдаваться в подробности.
Прошёлся по всем пунктам и получил работающий сервер.
Что будем использовать и устанавливать.
CentOS Linux release 7.6.1810 x64
СУБД PostgreSQL (9.5)
Java 8 (64-разрядная) (1.8) (https://www.java.com/ru/download/manual.jsp
Linux x64 RPM jre-8u221-linux-x64.rpm)
Сервер взаимодействия версии 5.0.37
В составе
Сам сервер взаимодействия 1ce_cs_server_5.0.37_1.x86_64.rpm
Распределенное хранилище Hazelcast. В нем хранятся сессии пользователей, подписки на с события, очереди. 1ce_cs_hazelcast_3.9.3_6.x86_64.rpm
Поисковый кластер Elasticsearch. Используется для подбора пользователей и полнотекстового поиска. 1ce_cs_elasticsearch_2.3.5_47.x86_64.rpm
Утилита ring 1c_enterprise_ring_0.8.2_1.x86_64.rpm
Обработка для регистрации информационной базы на Сервере взаимодействия CollaborationSystemRegister.epf
Скачиваем всё что нужно.
Все rpm я просто сложил в одну из папок на Linux машине.
Меняем некоторые настройки системы.
Отключаем 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
И открываем порт 8181 (его будем используем для настройки WebSocket и впоследствии для подключения к серверу , можете выбрать другой порт, какой Вам нравится)
firewall-cmd --permanent --zone=public —add-port=8181/tcp
Перегружаем и проверяем
firewall-cmd —reload
firewall-cmd --permanent —list-all
Устанавливаем JAVA и 1C RING.
yum localinstall jre-8u221-linux-x64.rpm
yum localinstall 1c_enterprise_ring_0.8.2_1.x86_64.rpm
После установки
Необходимо задать переменную окружения JAVA_HOME так, чтобы она указывала на установленную версию Java
И добавить каталог с установленной утилитой ring в переменную окружения PATH.
В конце файла /etc/profile добавляем две строки (соответственно если у Вас другие пути указывайте свои)
export JAVA_HOME=/usr/java/default
export PATH=$PATH:/opt/1C/1CE/x86_64/ring
Можно приступить к установке и настройке PostgreSQL
В этой версии CentOS в репозитории PostgreSQL 9.2 нам нужен минимум PostgreSQL 9.5
Добавляем репозиторий PostgreSQL.
yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7.6-x86_64/pgdg-centos95-9.5-3.noarch.rpm
И устанавливаем PostgreSQL 9.5.
(Вы можете добавить репозиторий, а затем установить и 10 и 11 я ставил 9.5)
yum install postgresql95-server
Также нам понадобится расширение uuid-ossp
что бы его потом подключить ставим postgresql95-contrib.x86_64
yum install postgresql95-contrib.x86_64
Настраиваем PostgreSQL.
Инициализируем базу.
/usr/pgsql-9.5/bin/postgresql95-setup initdb
Добавляем в автостарт и запускаем сервис
systemctl enable postgresql-9.5
systemctl start postgresql-9.5
Задаем пароль для пользователя postgres:
passwd postgres
Заходим в систему под данной учетной записью:
su - postgres
Подключаемся к сервису:
psql
Создаём пользователя (cs_user) для Сервера взаимодействия
CREATE USER cs_user WITH PASSWORD 'myPassword';
и создаём базу (cs) для Сервера взаимодействия,
делаем ранее созданного пользователя её владельцем
CREATE DATABASE cs OWNER cs_user;
Подключаемся к созданной базе
\c cs
Подключаем расширение uuid-ossp
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Выходим из оболочки psql и отключаемся от системы пользователем postgres:
\q
exit
Для работы Сервера взаимодействия, сервер PostgreSQL должен поддерживать аутентификацию по паролю.
Настраиваем. Найдём где находятся файлы конфигурации PostgreSQL
ps aux | grep postgres | grep -- -D
Открываем файл /var/lib/pgsql/9.5/data/pg_hba.conf
и добавляем в него две строки, где cs имя базы , cs_user имя пользователя.
local cs cs_user password
host cs cs_user 127.0.0.1/32 password
Перегружаем PostgreSQL
systemctl restart postgresql-9.5
Проверяем
psql -Ucs_user cs
Система должна спросить пароль ( вводим тот что указали при создании пользователя cs_user)
и пустить в оболочку
Выходим из оболочки psql
\q
Мы добрались до установки непосредственно сервера взаимодействия.
В данном месте систему лучше перегрузить.
После перезагрузки проверяем переменные окружения
export
Должно присутствовать среди прочего.
Переменная окружения JAVA_HOME
В переменной окружения PATH каталог с установленной утилитой ring.
Устанавливаем компоненты сервера взаимодействий
yum localinstall 1ce_cs_server_5.0.37_1.x86_64.rpm
yum localinstall 1ce_cs_hazelcast_3.9.3_6.x86_64.rpm
yum localinstall 1ce_cs_elasticsearch_2.3.5_47.x86_64.rpm
Дальше инициализация компонентов всё как в учебнике ИТС.
Для начальной инициализации сервера взаимодействия необходимо выполнить следующие действия:
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> --java-home $JAVA_HOME --stopped
В данном примере:
<cs_instance> – название экземпляра сервера взаимодействия.
<cs_user> – имя пользователя, от имени которого будет функционировать сервер взаимодействия.
Для начальной инициализации сервера 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> --java-home $JAVA_HOME --stopped
В данном примере:
<hc_instance> – название экземпляра Hazelcast.
<hc_user> – имя пользователя, от имени которого будет функционировать сервер 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> --java-home $JAVA_HOME --stopped
В данном примере:
<elastic_instance> – название экземпляра Elasticsearch.
<elastic_user> – имя пользователя, от имени которого будет функционировать сервер Elasticsearch.
Необходимо выполнить настройку параметров JDBC-драйверов PostgreSQL:
ring cs --instance <cs_instance> jdbc set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance <cs_instance> jdbc set-params --username db_user
ring cs --instance <cs_instance> jdbc set-params --password db_user_pwd
ring cs --instance <cs_instance> jdbc-privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance <cs_instance> jdbc-privileged set-params --username db_user
ring cs --instance <cs_instance> jdbc-privileged set-params --password db_user_pwd
И настроить WebSocket
Для взаимодействия сервера взаимодействия и клиентского приложения используется протокол WebSocket. Для настройки работы этого протокола следует выполнить следующие действия:
ring cs --instance <cs_instance> websocket set-params --hostname <cs_host>
ring cs --instance <cs_instance> websocket set-params --port <cs_port>
<cs_host> – имя или IP-адрес компьютера, на котором установлен сервер взаимодействия и к которому будет подключаться клиентское приложение системы взаимодействия (система «1С:Предприятие»).
<cs_port> – IP-порт, который будет использован для подключения к серверу взаимодействия клиентского приложения системы взаимодействия (системы «1С:Предприятие»). Здесь нужно указать тот порт который открывали в фаэрволе. В моём примере 8181.
Запускаем сервисы
ring hazelcast --instance <hc_instance> service start ring elasticsearch --instance <elastic_instance> service start ring cs --instance <cs_instance> service start
По ИТС проверить работоспособность сервера взаимодействия можно с помощью обращения по адресу http://localhost:8087/rs/health
Но у нас на сервере только консоль , а порт 8087 слушается только с localhost.
Что можно посмотреть
netstat -tpln
(если в системе нет netstat установите yum install net-tools)
Есть консольные браузеры но мы пойдём другим путём.
Можно проверить используя возможности PuTTY.
Здесь всё понятно
Дальше Connection-SSH-Tunnels
И жмём кнопку Add
Возвращаемся на Session и жмём Save
Подключаемся к серверу используя PuTTY через настроенное соединение. (на картинках это 1C-CS)
PuTTY в таком режиме слушает локальный порт 8087 и транслирует
всё в него приходящее на порт 8087 удалённой машины.
Дальше в любом браузере получаем вот такой ответ
Работает.
Последний штрих
Для выполнения завершающих настроек необходимо использовать утилиту curl.
Опять всё по ИТС
Команда инициализации выглядит следующим образом:
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 admin:admin http://localhost:8087/admin/bucket_server
В данном примере:
cs_db – имя базы данных сервера взаимодействия,
db_user – имя пользователя, от имени которого сервер взаимодействия подключается к СУБД.
db_user_pwd – пароль этого пользователя.
Всё
Можно пробовать подключатся к серверу используя обработку ( CollaborationSystemRegister.epf) для регистрации информационной базы на Сервере взаимодействия
Получилось много букв и картинок, но зато подробно.
PS
Небольшое дополнение для тех кто захочет перенести СерверВзаимодействия с одного сервера на другой.
1. Версии Postgres и СервераВзаимодействия должны быть одинаковы.
2. Я переносил с Windows на Linux некоторые тонкости. (у меня были PSQL 11, СВ 7.0.25)
Строка создания бекапа на Windows (имя базы 1ce-cs)
pg_dump -h localhost -U postgres --encoding=utf8 -F p -c --if-exists -f C:\BackUp\CS\1ce-cs.bakup 1ce-cs
"--encoding=utf8" Это перекодирует базу.
Бекап в текстовом виде "-F p"
Строка восстановления бекапа на Linux
psql -Ucs 1ce-cs < /home/1ce-cs.backup
И ещё тонкость. Имя базы , учётка доступа в postgres и её пароль должны совпадать на новом и старом сервере,
эти данные хранятся в базе. Если у Вас они будут разные не заработает.
Порядок действия такой
1. Отключаем обработкой базу 1C от сервера Взаимодействия
2. Белаем бекап базы и восстановление его на новом сервере.
3. Подключаем базу 1C к новому серверу.
У меня вся переписка при этом сохранилась.
И Спасибо
"?transport=websocket&version=6"Насколько я понял её можно применять когда платформа 1С не совсем совместима с версией СервераВзаимодействия.
С помощью этой строки я подключил 18 платформу к северу взаимодействия 7.0.25 иначе ругалось на версию
протокола.