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

Публикация № 1118799

Администрирование - Администрирование данных 1С

Сервер Взаимодействия 1C Linux

21
В статье описан пошаговый процесс установки Сервера взаимодействия 1C на Linux CentOS 7.6.

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

Прошёлся по всем пунктам и получил работающий сервер.

 

Что будем использовать и устанавливать.

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

Для начальной инициализации сервера 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)  для регистрации информационной базы на Сервере взаимодействия

 

Получилось много букв и картинок, но зато подробно.

21

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. sytkosa 119 08.09.19 19:27 Сейчас в теме
(0) А как лицензировать данную установку ?
asg.aleks; +1 Ответить
2. sytkosa 119 17.09.19 21:14 Сейчас в теме
(0) одно уточнение
и добавляем в него две строки в начало файла, где cs имя базы , cs_user имя пользователя.
local   cs              cs_user                       password
host    cs              cs_user          127.0.0.1/32 password
иначе авторизация будет не проходить.
3. B3avi5 18.09.19 10:35 Сейчас в теме
curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs\", \"username\" : \"cs_user\", \"password\" : \"cs_user_pwd\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/bucket_server
curl: (7) Failed connect to =localhost:8087; В соединении отказано

что могло пойти не так?
4. sytkosa 119 18.09.19 10:47 Сейчас в теме
(3) Если все делать по инструкции на чистом CentOS, то все работает.
Судя по ошибке или фаервол не настроен и не пускает или ошибся в параметрах <имя базы> <имя пользователя> или <пароль пользователя>
Также обрати на мой предыдущий пост без этого уточнения авторизация по паролю может не проходить.
5. KlSergey 22 18.09.19 11:05 Сейчас в теме
В реальном запросе вот здесь
(3)
\"password\" : \"cs_user_pwd\"

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