Содержание
0. Схема
0.1. Описание
Сервис API получает запросы пользователей. Долгие запросы отправляются в брокер очередей. Быстрые запросы к данным выполняются напрямую в БД или в сервисе Поиска. Также выполняется запросы imap к почтовому серверу.
1. Выполните установку Корпоративного портала 2024
Примечание. При включенной службе firewalld необходимо выполнить настройку для http и https.
# Добавляем службы: sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https # Перезапускаем службу firewalld: sudo firewall-cmd --reload # Проверяем правила для зоны public: sudo firewall-cmd --zone=public --list-all
Установить согласно инструкции.
2. На ВМ с ролью API
2.1. Установите вспомогательные пакеты
Для версии 14752 и выше выполните установку следующих пакетов:
sudo dnf install dotnet-sdk-6.0 postgresql-odbc supervisor
Для версий ниже:
sudo dnf install dotnet-sdk-3.1 postgresql-odbc supervisor
3. На ВМ с КС 2024
Примечание. При включенной службе firewalld необходимо выполнить настройку.
# Откройте # Доступ к БД sudo firewall-cmd --permanent --zone=public --add-service=postgresql # Доступ к очереди sudo firewall-cmd --permanent --zone=public --add-service=amqp # Доступ к сервису registry sudo firewall-cmd --permanent --zone=public --add-port=7777/tcp # Доступ к сервису search sudo firewall-cmd --permanent --zone=public --add-port=2664/tcp # Доступ к сервису хранения sudo firewall-cmd --permanent --zone=public --add-port=11581/tcp sudo firewall-cmd --permanent --zone=public --add-port=11580/tcp # Перезапустите службу firewalld sudo firewall-cmd --reload # Проверьте правила для зоны public sudo firewall-cmd --zone=public --list-all
3.1. Заархивируйте необходимые файлы и директории
tar czvf api.tar.gz --selinux /opt/r7-office/Api/ /var/log/r7-office/CDDisk/R7.Storage.Server.Api.Host /var/log/r7-office/CDDisk/Api /etc/supervisord.conf /etc/supervisord.d /var/r7-office/filestorage_temp
3.2. Перенесите удобным Вам способом на ВМ с ролью Api
Например, через scp
:
scp api.tar.gz ipВМapi:/root/
3.3. Узнайте uid и gid пользователя cddisk
id cddisk
Вывод:
id cddisk uid=982(cddisk) gid=982(cddisk) группы=982(cddisk)
Сохраните эту информацию, она понадобится далее.
3.4. Удалите конфигурационный файл
rm /etc/supervisord.d/cddisk-api.ini
3.5. Отредактируйте файл
vi /etc/supervisord.d/cddisk.ini
Приведите к виду:
[group:cddisk] programs=processing,filestorage,searchapi,registry,apisso
3.6. Перезапустите сервисы
systemctl restart supervisord.service supervisorctl restart all
3.7. Открыть доступ к RabbitMQ
3.7.1. Отредактируйте файл
nano /etc/rabbitmq/rabbitmq.conf
Приведите в нём параметр к виду (если файла или их нет, то создайте):
listeners.tcp.default = 127.0.0.1:5672 listeners.tcp.other_ip = 192.168.27.77:5672
Где:
listeners.tcp.default
— слушается интерфейс127.0.0.1
на порту5672
;listeners.tcp.other_ip
— слушается интерфейс192.168.27.77
на порту5672
.
3.7.2. Перезапустите сервис
systemctl restart rabbitmq-server
3.7.2.1. Проверьте, что все интерфейсы слушаются
netstat -tulpan | grep 5672
Вывод:
netstat -tulpan | grep 5672 tcp 0 0 127.0.0.1:5672 0.0.0.0:* LISTEN 15118/beam.smp tcp 0 0 192.168.27.77:5672 0.0.0.0:* LISTEN 15118/beam.smp
3.7.3. Создайте хост и пользователя
3.7.3.1. Создайте пользователя для Процессинга
rabbitmqctl add_user api api
Где:
api
— имя пользователя;api
— пароль пользователя.
3.7.3.2. Выдайте права пользователю
rabbitmqctl set_permissions -p / api ".*" ".*" ".*"
3.7.3.3. Создайте хост
С данного хоста будет разрешено подключение:
rabbitmqctl add_vhost 192.168.25.234
Где:
192.168.25.234
— IP-адрес сервера с API. Если таких ВМ несколько, то выполните для каждого IP.
3.7.3.4. Дайте права для ВМ с Процессингом
rabbitmqctl set_permissions -p 192.168.25.234 api ".*" ".*" ".*"
Где:
192.168.25.234
— IP-адрес сервера с API. Если таких ВМ несколько, то выполните для каждого IP-адреса;api
— имя созданного в п.3.7.3.1 пользователя.
3.8. Настроить доступ к БД
3.8.1. Отредактируйте файл pg_hba
vi /etc/lib/pgsql/data/pg_hba.conf
Добавьте следующую строку:
host cddisk cddisk 192.168.25.234/32 md5
Где:
cddisk
— имя базы данных;cddisk
— имя пользователя, с доступом к БД cddisk;192.168.25.234/32
— IP, с которого разрешено подключение;md5
— метод авторизации.
Если ВМ с API несколько, то добавьте для каждой строку.
3.8.2. Отредактируйте файл postgresql.conf
nano /var/lib/pgsql/data/postgresql.conf
Приведите следующие параметры:
#listen_addresses = 'localhost' #port = 5432
К данному виду:
listen_addresses = 'localhost,192.168.27.77' port = 5432
Где:
listen_addresses
— на каких интерфейсах слушает PostgreSQL подключения;port
— порт, который слушает сервис PostgreSQL.
3.8.3. Перезапустите сервис
systemctl restart postgresql
3.8.4. Проверьте, что все интерфейсы слушаются
netstat -tulpan | grep 5432
Вывод:
netstat -tulpan | grep 5432 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1745934/postmaster tcp 0 0 192.168.27.77:5432 0.0.0.0:* LISTEN 1745934/postmaster
3.9. Отредактируйте файл сервиса Registry
vi /opt/r7-office/Service.Registry/appsettings.json
Приведите параметры к виду:
}, "AllowedHosts": "*", "Clients": [ { "id": "IFileStorageService", "host": "http://192.168.27.77:11580/" }, { "id": "IFileStorageRestService", "host": "http://192.168.27.77:11580/" }, { "id": "IFolderStorageRestService", "host": "http://192.168.27.77:11580/" }, { "id": "ITcpFolderStorageService", "Address": "192.168.27.77", "Port": "11581" }, { "id": "ITcpFileStorageService", "Address": "192.168.27.77", "Port": "11581" }, { "id": "ISearchService", "host": "http://192.168.27.77:2664" } ], "ServiceRegistry": { "Host": "http://+:7777" }
Где:
192.168.27.77
— IP-адрес ВМ, где находится сервис filestorage и сервис search. Если эти ВМ являются разными, то указать верные значения.
3.10. Отредактируйте appsettings файл сервиса Filestorage
vi /opt/r7-office/FileStorage/appsettings.json
Приведите параметры к виду:
}, "AllowedHosts": "*", "FileStorage": { "Host": "http://+:11580" }
3.11. Отредактируйте filestorage файл сервиса Filestorage
vi /opt/r7-office/FileStorage/filestorage.json
Приведите параметры к виду:
"Connection": { "Tcp": { "Address": "0.0.0.0", "Port": 11581 }
3.12. Перезапустите сервисы
supervisorctl restart all
3.13. Отредактируйте файлы Nginx
3.13.1. Добавьте upstream
В файле:
/etc/nginx/conf.d/cddisk.conf
Добавьте блок:
upstream backend_api { server 192.168.27.226:38033; }
Где:
192.168.27.226
— IP-адрес сервера с API;38033
— порт, который слушает сервис API.
Если серверов несколько, то продублируйте строки в данном блоке, указав IP-адрес второго сервера, например:
upstream backend_api { server 192.168.27.226:38033; server 192.168.27.171:38033; }
3.13.2. Измените файлы сайтов
/etc/nginx/sites-available/admin /etc/nginx/sites-available/calendar /etc/nginx/sites-available/cddisk /etc/nginx/sites-available/cdmail
3.13.2.1. Исправьте location/api
Исходный:
location /api { proxy_pass http://localhost:38033/api; }
Приведите к виду:
location /api { proxy_pass http://backend_api/api; }
3.13.3. Проверьте конфигурацию Nginx
nginx -t
3.13.4. Перезапустите Nginx
systemctl restart nginx
4. На ВМ с API
Примечание. При включенной службе firewalld необходимо выполнить настройку для API.
# Добавляем службы: sudo firewall-cmd --permanent --zone=public --add-port=38033/tcp # Перезапускаем службу firewalld: sudo firewall-cmd --reload # Проверяем правила для зоны public: sudo firewall-cmd --zone=public --list-all
4.1. Создание группы и пользователя cddisk
Из п.3.3 Вы узнали uid и gid пользователя.
4.1.1. Создайте группу
groupadd -g 982 cddisk
Где:
982
— id группы;cddisk
— имя группы.
4.1.2. Создайте пользователя
useradd -u 982 -g 982 cddisk
Где:
982
— id пользователя;982
— id группы;cddisk
— имя пользователя.
4.2. Распакуйте архив
tar xzvf api.tar.gz --selinux -C /
4.3. Удалите лишние конфигурационные файлы
rm -f /etc/supervisord.d/{cddisk-processing,cddisk-filestorage,cddisk-registry,cddisk-ssoapi,cddisk-searchapi}.ini
4.4. Отредактируйте файл
vi /etc/supervisord.d/cddisk.ini
Приведите к виду:
[group:cddisk] programs=api
4.5. Отредактируйте файл
vi /opt/r7-office/Api/appsettings.json
Измените следующие параметры:
4.5.1. Хост с Registry
Укажите верный IP-адрес:
"serviceRegistry": { "address": "http://192.168.27.77:7777" },
В данном примере, это IP-адрес ВМ с КС 2024, т.к. на нём и сервис Registry.
4.5.2. Хост с БД
Укажите верный IP-адрес, т.к. остальные данные не изменяли:
"R7StorageServerUserActions": "Database=cddisk;Username=cddisk;Password=СЕКРЕТ;Host=192.168.27.77;Port=5432;", "R7StorageServer": "Database=cddisk;Username=cddisk;Password=СЕКРЕТ;Host=192.168.27.77;Port=5432;",
В данном примере, верный IP — IP-адрес ВМ с КС 2024, т.к. СУБД установлена на нём.
4.5.3. Хост с RabbitMQ
Укажите верный IP-адрес, пользователя и пароль:
"rabbitMq": { "host": "192.168.27.77", "username": "api", "password": "api", "timeout": 10 },
В данном примере, верный IP — IP-адрес ВМ с КС 2024, а учётные данные пользователя были созданы в п.3.7.3.
4.6. Перезапустите сервис
systemctl restart supervisord.service supervisorctl restart all