Содержание
Cтатья выложена без всех стадий тестирования и проверок, поэтому может быть не актуальна и иметь ошибки
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
Установить согласно инструкции https://support.r7-office.ru/category/corporate-server2024/install-r7server
2. На ВМ с ролью Api
2.1 Установите ключ репозитория
sudo wget -O - https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null
2.2 Добавьте репозиторий
sudo wget https://packages.microsoft.com/config/debian/10/prod.list -O /etc/apt/sources.list.d/microsoft-prod.list && sudo apt update
2.3 Установите dotnet
sudo wget https://packages.microsoft.com/debian/10/prod/pool/main/d/dotnet-host/dotnet-host-7.0.3-x64.deb && sudo apt -y install ./dotnet-host*.deb && sudo rm ./dotnet-host*.deb
2.4 Установите остальные пакеты
sudo apt install supervisor aspnetcore-runtime-3.1 aspnetcore-targeting-pack-3.1 autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu dotnet-apphost-pack-3.1 dotnet-hostfxr-3.1 dotnet-runtime-3.1 dotnet-runtime-deps-3.1 dotnet-sdk-3.1 dotnet-targeting-pack-3.1 libbinutils libltdl-dev libodbc1 m4 netstandard-targeting-pack-2.1 odbcinst odbcinst1debian2 unixodbc-dev
3. На ВМ с КП24
При включенной службе 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/supervisor /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=120(cddisk) gid=132(cddisk) группы=132(cddisk)
3.4 Удалите конфигурационный файл
rm /etc/supervisor/conf.d/cddisk-api.conf
3.5 Отредактируйте файл
vi /etc/supervisor/conf.d/cddisk.conf
Приведите к виду
[group:cddisk] programs=processing,filestorage,searchapi,registry,apisso
3.5 Перезапустите сервисы
systemctl restart supervisor.service supervisorctl restart all
3.6 Открыть доступ к RabbitMQ
3.6.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.6.2 Перезапустите сервис
systemctl restart rabbitmq-server
3.6.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.6.3 Создайте хост и пользователя
3.6.3.1 Создайте пользователя для Процессинга
rabbitmqctl add_user api api
Где,
- api — имя пользователя
- api — пароль пользователя
3.6.3.2 Выдайте права пользователю
rabbitmqctl set_permissions -p / api ".*" ".*" ".*"
3.6.3.3 Создайте хост
С данного хоста будет разрешено подключение
rabbitmqctl add_vhost 192.168.25.234
Где,
- 192.168.25.234 — ip сервера с Api. Если таких ВМ несколько, то выполните для каждого ip.
3.6.3.3 Дайте права для ВМ с Процессингом
rabbitmqctl set_permissions -p 192.168.25.234 api ".*" ".*" ".*"
Где,
- 192.168.25.234 — ip сервера с Api. Если таких ВМ несколько, то выполните для каждого ip.
- api — имя созданного в п.3.6.3.1 пользователя.
3.7 Настроить доступ к БД
3.7.1 Отредактируйте файл pg_hba
vi /etc/postgresql/11/main/pg_hba.conf
Добавьте следующую строку
host cddisk cddisk 192.168.25.234/32 md5
Где,
- cddisk — имя базы данных;
- cddisk — имя пользователя, с доступом к БД cddisk;
- 192.168.25.234/32 — ip, с которого разрешено подключение;
- md5 — метод авторизации.
Если ВМ с Api несколько, то добавьте для каждой строку
3.7.3 Отредактируйте файл postgresql.conf
nano /etc/postgresql/11/main/postgresql.conf
Приведите следующие
#listen_addresses = 'localhost' #port = 5432
параметры к виду
listen_addresses = 'localhost,192.168.27.77' port = 5432
Где,
- listen_addresses — на каких интерфейсах слушает PostgreSQL подключения;
- port — порт, который слушает сервис PostgreSQL.
3.7.3 Перезапустите сервис
systemctl restart postgresql
3.8 Отредактируйте файл сервиса 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.9 Отредактируйте appsettings файл сервиса Filestorage
vi /opt/r7-office/FileStorage/appsettings.json
Приведите параметры к виду
}, "AllowedHosts": "*", "FileStorage": { "Host": "http://+:11580" }
3.10 Отредактируйте filestorage файл сервиса Filestorage
vi /opt/r7-office/FileStorage/filestorage.json
Приведите параметры к виду
"Connection": { "Tcp": { "Address": "0.0.0.0", "Port": 11581 }
3.11 Перезапустите сервисы
supervisorctl restart all
3.12 Отредактируйте файлы Nginx
3.12.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.12.2 Измените файлы сайтов
/etc/nginx/sites-available/admin /etc/nginx/sites-available/calendar /etc/nginx/sites-available/cddisk /etc/nginx/sites-available/cdmail
3.12.2.1 Исправьте location/api
Исходный
location /api { proxy_pass http://localhost:38033/api; }
Приведите к виду
location /api { proxy_pass http://backend_api/api; }
3.12.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 132 cddisk
Где,
- 132 — id группы;
- cddisk — имя группы.
В случаи если данный id уже занят, можно поменять командой groupmod -g <свободный_id> -o <имя_группы>
4.1.2 Создайте пользователя
useradd -u 120 -g 132 cddisk
Где,
- 120 — id пользователя;
- 132 — id группы;
- cddisk — имя пользователя.
В случаи если данный id уже занят, можно поменять командой usermod -u <свободный_id><пользователь>
4.2 Распакуйте архив
tar xzvf api.tar.gz --selinux -C /
4.3 Удалите лишние конфигурационные файлы
rm /etc/supervisor/conf.d/{cddisk-processing,cddisk-filestorage,cddisk-registry,cddisk-ssoapi,cddisk-searchapi}.conf
4.4 Отредактируйте файл
vi /etc/supervisor/conf.d/cddisk.conf
Приведите к виду
[group:cddisk] programs=api
4.5 Отредактируйте файл
vi /opt/r7-office/Api/appsettings.json
Измените следующие параметры
4.5.1 Хост с Registry
в данном примере, это ip ВМ с КС24, т.к. на нём и сервис Registry
- Укажите верный ip
"serviceRegistry": { "address": "http://192.168.27.77:7777" },
4.5.2 Хост с БД
в данном примере, это ip ВМ с КС24, т.к. СУБД установлена на нём
- Укажите верный 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;",
4.5.3 Хост с RabbitMQ
Укажите верный ip, пользователя и пароль (в данном примере, это ip ВМ с КС24, а пользователя создали в п.3.6.3)
"rabbitMq": { "host": "192.168.27.77", "username": "api", "password": "api", "timeout": 10 },
4.6 Перезапустите сервис
systemctl restart supervisor.service supervisorctl restart all