Технологические вопросы крупных внедрений
10.07.2023
Минимальный размер оперативной памяти – 4 Гб.
Для выбора версии сервера рекомендуем воспользоваться таблицей
Версия 1С:Сервера взаимодействия | Версия платформы 1С:Предприятие |
---|---|
10.0.47 | 8.3.19 |
9.0.34 | 8.3.18 |
Установочный образ:
http://isoredirect.centos.org/centos/7/isos/x86_64
Сервер взаимодействия:
https://releases.1c.ru/version_file?nick=CollaborationSystem&ver=10.0.47&path=CollaborationSystem\10_0_47\1c_cs_10.0.47_linux_x86_64.tar.gz
PostgreSQL:
https://releases.1c.ru/version_file?nick=AddCompPostgre&ver=11.5-19.1C&path=AddCompPostgre\11_5_19_1C\postgresql_11.5_19.1C_x86_64_rpm.tar.bz2
https://releases.1c.ru/additional_file?nick=AddCompPostgre&path=AddCompPostgre\Extrafiles\centos_7.7.1908.x64.tar.gz
$ tar xvzf 1c_cs_10.0.47_linux_x86_64.tar.gz
$ tar xvjf postgresql_11.5_19.1C_x86_64_rpm.tar.bz2
$ sudo ./1ce-installer-cli install
$ sudo rpm -ihv libicu-50.2-3.el7.x86_64.rpm libxslt-1.1.28-5.el7.x86_64.rpm
$ sudo rpm -ihv postgresql11-1c-11.5-19.el7.x86_64.rpm postgresql11-1c-libs-11.5-19.el7.x86_64.rpm postgresql11-1c-contrib-11.5-19.el7.x86_64.rpm postgresql11-1c-server-11.5-19.el7.x86_64.rpm
$ sudo passwd postgres
$ su postgres
$ /usr/pgsql-11/bin/initdb -D /var/lib/pgsql/11/data
$ psql
postgres=# CREATE DATABASE cs_db;
postgres=# \c cs_db
postgres=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
postgres=# \q
$ exit
$ sudo systemctl enable postgresql-11
$ sudo systemctl start postgresql-11
$ su -l
# 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
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs instance create --dir /var/cs/cs_instance --owner cs_user
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance service create --username cs_user --java-home $JAVA_HOME --stopped
# useradd hc_user
# mkdir -p /var/cs/hc_instance
# chown hc_user:hc_user /var/cs/hc_instance
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring hazelcast instance create --dir /var/cs/hc_instance --owner hc_user
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring hazelcast --instance hc_instance service create --username hc_user --java-home $JAVA_HOME --stopped
# useradd elastic_user
# mkdir -p /var/cs/elastic_instance
# chown elastic_user:elastic_user /var/cs/elastic_instance
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring elasticsearch instance create --dir /var/cs/elastic_instance --owner elastic_user
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring elasticsearch --instance elastic_instance service create --username elastic_user --java-home $JAVA_HOME --stopped
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance jdbc pools --name common set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance jdbc pools --name common set-params --username postgres
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance jdbc pools --name common set-params --password postgres
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance jdbc pools --name privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance jdbc pools --name privileged set-params --username postgres
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance jdbc pools --name privileged set-params --password postgres
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance websocket set-params --hostname <сs_host>
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring cs --instance cs_instance websocket set-params --port 9094
<cs_host> - имя или IP-адрес компьютера, на котором установлен сервер взаимодействия и к которому будет подключаться клиентское приложение системы взаимодействия (система «1С:Предприятие»).
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring hazelcast --instance hc_instance service start
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring elasticsearch --instance elastic_instance service start
# /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/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
Для обмена файлами в системе взаимодействия необходимо подключиться на сервере взаимодействия к хранилищу файлов. Хранилище должно поддерживать протокол S3 (V2 или V4).
Можно развернуть собственное хранилище:
Или подключиться к существующим:
Необходимо выбрать только один вариант использования хранилища файлов:
$ sudo mkdir -p /opt/minio
$ sudo chown user:user /opt/minio
$ sudo mkdir -p /var/minio
$ sudo chown user:user /var/minio
$ cd /opt/minio
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
$ sudo chmod +x minio
$ sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
$ sudo firewall-cmd --reload
$ sudo vi /etc/default/minio
Копировать в буфер обменаMINIO_VOLUMES="/var/minio/"
MINIO_ACCESS_KEY=minio
MINIO_SECRET_KEY=minio123
$ sudo vi /etc/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/opt/minio/minio
[Service]
WorkingDirectory=/usr/local/
User=user
Group=user
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/opt/minio/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable minio.service
$ sudo systemctl start minio.service
$ curl -Sf -X POST -H 'Content-Type: application/json' -d '{ "apiType": "AMAZON", "storageType": "DEFAULT", "baseUrl": "http://ИМЯ СЕРВЕРА ИЛИ IP:9000", "containerUrl": "http://ИМЯ СЕРВЕРА ИЛИ IP:9000/${container_name}", "containerName": "cs-bucket", "region": "eu-west-1", "accessKeyId": "minio", "secretKey": "minio123", "signatureVersion": "V2", "uploadLimit": 1073741824, "downloadLimit": 1073741824, "fileSizeLimit": 104857600, "bytesToKeep": 104857600, "daysToKeep": 31, "pathStyleAccessEnabled": true }' -u admin:admin http://localhost:8087/admin/storage_server
В данном примере будет использоваться хранилище Amazon
Если вы планируете работать в web-клиенте, то необходимо настроить CORS:
$ curl -Sf -X POST -H 'Content-Type: application/json' -d '{ "type": "AMAZON", "baseUrl": "https://s3.amazonaws.com", "containerUrl": "https://${container_name}.s3.${region}.amazonaws.com", "containerName": "Имя хранилища", "region": "eu-west-1", "accessKeyId": "Access Key ID", "secretKey": "Secret Access Key", "signatureVersion": "V4", "uploadLimit": 1073741824, "downloadLimit": 1073741824, "fileSizeLimit": 104857600, "bytesToKeep": 104857600, "daysToKeep": 31, "pathStyleAccessEnabled": false }' -u admin:admin http://localhost:8087/admin/storage_server
Для подключения информационной базы необходимо использовать обработку:
https://releases.1c.ru/version_file?nick=CollaborationSystem&ver=10.0.47&path=CollaborationSystem\10_0_47\CollaborationSystemRegister.epf
$ sudo yum install git
$ mkdir ~/distr
$ cd ~/distr
$ sudo yum install epel-release
$ sudo yum install wget ninja-build meson jansson-devel openssl-devel libsrtp-devel sofia-sip-devel glib2-devel opus-devel libogg-devel libcurl-devel pkgconfig gengetopt libconfig-devel libtool autoconf automake cmake
$ sudo yum groupinstall 'Development Tools'
$ cd ~/distr
$ git clone https://gitlab.freedesktop.org/libnice/libnice.git
$ cd libnice
$ meson --prefix=/usr build && ninja -C build && sudo ninja -C build install
$ wget http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.59.tar.gz
$ tar xvf libmicrohttpd-0.9.59.tar.gz
$ cd libmicrohttpd-0.9.59
$ ./configure --libdir=/usr/lib64
$ make
$ sudo make install
$ sudo ldconfig
$ cd ~/distr
$ wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz
$ tar xfv v2.2.0.tar.gz
$ cd libsrtp-2.2.0
$ ./configure --prefix=/usr --enable-openssl --libdir=/usr/lib64
$ make shared_library && sudo make install
$ cd ~/distr
$ git clone https://libwebsockets.org/repo/libwebsockets
$ cd libwebsockets
$ mkdir build
$ cd build
$ cmake -DLWS_MAX_SMP=1 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" -DLIB_SUFFIX=64 ..
$ make && sudo make install
$ cd ~/distr
$ git clone https://github.com/1C-Company/janus-gateway
$ cd janus-gateway
$ sh autogen.sh
$ ./configure --disable-data-channels --disable-rabbitmq --disable-mqtt --prefix=/opt/janus --libdir=/usr/lib64
$ make
$ sudo make install
$ cd /opt/janus/etc/janus
$ sudo cp janus.eventhandler.gelfevh.jcfg.sample janus.eventhandler.gelfevh.jcfg
$ sudo cp janus.eventhandler.sampleevh.jcfg.sample janus.eventhandler.sampleevh.jcfg
$ sudo cp janus.eventhandler.wsevh.jcfg.sample janus.eventhandler.wsevh.jcfg
$ sudo cp janus.jcfg.sample janus.jcfg
$ sudo cp janus.plugin.audiobridge.jcfg.sample janus.plugin.audiobridge.jcfg
$ sudo cp janus.plugin.echotest.jcfg.sample janus.plugin.echotest.jcfg
$ sudo cp janus.plugin.nosip.jcfg.sample janus.plugin.nosip.jcfg
$ sudo cp janus.plugin.recordplay.jcfg.sample janus.plugin.recordplay.jcfg
$ sudo cp janus.plugin.streaming.jcfg.sample janus.plugin.streaming.jcfg
$ sudo cp janus.plugin.textroom.jcfg.sample janus.plugin.textroom.jcfg
$ sudo cp janus.plugin.videocall.jcfg.sample janus.plugin.videocall.jcfg
$ sudo cp janus.plugin.videoroom.jcfg.sample janus.plugin.videoroom.jcfg
$ sudo cp janus.plugin.voicemail.jcfg.sample janus.plugin.voicemail.jcfg
$ sudo cp janus.transport.http.jcfg.sample janus.transport.http.jcfg
$ sudo cp janus.transport.pfunix.jcfg.sample janus.transport.pfunix.jcfg
$ sudo mkdir /var/log/janus
$ sudo vi /opt/janus/etc/janus/janus.jcfg
admin_secret = пароль администратора
event_loops = количество ядер
no_media_timer = 2
min_nack_queue = 500
opaqueid_in_api = true
ignore_mdns = true # если не нужны подключения по локальной сети
log_to_stdout = false
log_lo_file = /var/log/janus/janus.log
$ sudo vi /opt/janus/etc/janus/janus.plugin.videoroom.jcfg
Копировать в буфер обменаstring_ids = true
$ sudo vi /etc/systemd/system/janus.service
[Unit]
Description=Janus WebRTC Server
After=network.target
[Service]
Type=simple
ExecStart=/opt/janus/bin/janus –o
Restart=on-abnormal
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable janus.service
$ sudo systemctl start janus.service
$ sudo firewall-cmd --zone=public --add-port=8088/tcp –permanent
$ sudo firewall-cmd --zone=public --add-port=0-65535/udp –permanent
$ sudo firewall-cmd –reload
$ curl -Sf -X POST -H 'Content-Type: application/json' -d '{ "url": "http://
mediaserver - имя машины или IP-адрес сервера Janus.
Успешный ответ:
{"id":"f4ba9f08-5925-4b71-850b-d353c2ebd38f","name":"Janus 1","url":"http://
$ sudo vi /var/cs/cs_instance/config/video.yml video: enabled: true conference-server-based-member-limit: 34 conference-server-based-threshold: 3 # Количество участников конференции, после которого используется медиасервер, вместо прямого соединения p2p max-bandwidth: 2000 max-reference-width: 1280 max-reference-height: 720 max-reference-fps: 30
Для проверки, что конференция идет через медиасервер, необходимо создать конференцию с числом участников >= значения параметра conference-server-based-threshold. После того, как все участники конференции ответят на звонок, выполнить команду:
Копировать в буфер обмена$ sudo netstat -antp | grep -i janus