Мова: Українська
У цьому посібнику описано, як розгорнути сервер ActivityInfo для самостійного керування у вигляді Веб-додатку Azure для контейнерів, використовуючи офіційне Зображення Docker. Він призначений для ІТ-фахівців, знайомих з Microsoft Azure.
Перед початком роботи
Сервер ActivityInfo для самостійного керування зберігає свої дані в базі даних SQLite. Це має два наслідки для розгортання Веб-додатку Azure:
- Ви повинні підключити постійний том для бази даних, оскільки власна файлова система Веб-додатку скидається щоразу, коли контейнер перезапускається або переміщується.
- Ви повинні запускати один екземпляр. Сервер призначений для вертикального, а не горизонтального масштабування: щоб підтримувати більше одночасних користувачів, надайте екземпляру більше ядер ЦП та пам'яті, а не додавайте нові екземпляри.
Служба додатків Azure також перериває HTTPS-з'єднання за вас і перенаправляє звичайний HTTP-трафік до контейнера. Тому ви запускаєте ActivityInfo в режимі HTTPS-проксі.
Наведені нижче кроки використовують Azure CLI. За бажанням ви можете виконати ті ж самі кроки з порталу Azure. Спочатку увійдіть за допомогою:
az login
Встановлення змінних
Команди в цьому посібнику повторно використовують кілька значень. Встановіть їх один раз, вибравши власні глобально унікальні імена для додатку та облікового запису сховища:
RESOURCE_GROUP=activityinfo-rg
LOCATION=westeurope
PLAN=activityinfo-plan
APP=my-activityinfo
STORAGE_ACCOUNT=aistorage$RANDOM
SHARE=activityinfo-data
Створення групи ресурсів
az group create --name $RESOURCE_GROUP --location $LOCATION
Створення плану Служби додатків для Linux
Створіть план для Linux з одним виконавцем. Рівень Basic B1 або вище є обов'язковим для використання власного сховища, власного домену та налаштування "Always On" ("Завжди ввімкнено").
az appservice plan create \
--name $PLAN \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--is-linux \
--sku B1 \
--number-of-workers 1
Створення спільного файлового ресурсу для бази даних
Створіть обліковий запис сховища та спільний ресурс Azure Files. ActivityInfo зберігає свою базу даних SQLite та файл config.ini на цьому спільному ресурсі, тому дані зберігаються після перезапусків та повторних розгортань.
az storage account create \
--name $STORAGE_ACCOUNT \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--sku Standard_LRS
az storage share-rm create \
--resource-group $RESOURCE_GROUP \
--storage-account $STORAGE_ACCOUNT \
--name $SHARE \
--quota 10
Створення веб-додатку
Створіть веб-додаток з офіційного зображення ActivityInfo на Docker Hub:
az webapp create \
--resource-group $RESOURCE_GROUP \
--plan $PLAN \
--name $APP \
--container-image-name activityinfo/activityinfo:5.0.0
Монтування спільного файлового ресурсу
Змонтуйте спільний файловий ресурс у контейнер за шляхом /data. Спочатку зчитайте ключ облікового запису сховища, а потім додайте точку монтування:
STORAGE_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP \
--account-name $STORAGE_ACCOUNT \
--query "[0].value" --output tsv)
az webapp config storage-account add \
--resource-group $RESOURCE_GROUP \
--name $APP \
--custom-id activityinfo-data \
--storage-type AzureFiles \
--account-name $STORAGE_ACCOUNT \
--share-name $SHARE \
--access-key $STORAGE_KEY \
--mount-path /data
Налаштування ActivityInfo
Встановіть налаштування додатку. WEBSITES_PORT повідомляє Службі додатків, що контейнер прослуховує порт 8081. Змінні ACTIVITYINFO_* переводять сервер у режим HTTPS-проксі та вказують на змонтований спільний ресурс як на каталог даних.
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP \
--settings \
WEBSITES_PORT=8081 \
ACTIVITYINFO_SERVER_HTTPS_PROXY=TRUE \
ACTIVITYINFO_SERVER_DOMAIN=$APP.azurewebsites.net \
ACTIVITYINFO_DATA_DATA_DIRECTORY=/data
Увімкніть "Always On" ("Завжди ввімкнено"), щоб Служба додатків підтримувала роботу контейнера і не вивантажувала його, коли додаток неактивний:
az webapp config set \
--resource-group $RESOURCE_GROUP \
--name $APP \
--always-on true
Створення облікового запису адміністратора
Azure надає безкоштовний керований сертифікат для домену azurewebsites.net, тому додаток одразу доступний через HTTPS. Перейдіть до https://<APP>.azurewebsites.net, де вам буде запропоновано створити перший обліковий запис користувача-адміністратора.
Використання власного домену
Щоб обслуговувати ActivityInfo з власного домену, додайте власний домен та керований сертифікат до веб-додатку. Потім оновіть налаштування ACTIVITYINFO_SERVER_DOMAIN відповідно, щоб посилання в емейл-повідомленнях використовували правильну адресу:
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP \
--settings ACTIVITYINFO_SERVER_DOMAIN=activityinfo.example.gov
Продуктивність сховища
Змонтований вище спільний файловий ресурс — це Azure Files, мережева файлова система, до якої контейнер звертається за протоколом SMB. Кожна операція читання та запису відбувається через мережу, що додає затримку порівняно з локальним диском. Бази даних виконують багато невеликих синхронних записів і утримують блокування файлів під час транзакцій, тому вони чутливі до цієї затримки. На завантаженому сервері спільний ресурс може стати обмежуючим фактором для часу відгуку. Веб-додаток для контейнерів може підключати лише мережеве сховище, тому цей компроміс стосується будь-якого розгортання з одним екземпляром у Службі додатків.
Якщо вам потрібна вища продуктивність бази даних, натомість розгорніть її в Службі Azure Kubernetes. Там ви можете підключити керований диск Premium SSD v2 до одного поду, що забезпечує затримку, близьку до локального диска, з налаштовуваними IOPS, і при цьому витримує втрату вузла.
Наступні кроки
Дотримуйтесь інструкцій у посібнику з Конфігурації, щоб налаштувати Доставку емейлів та Єдиний вхід через веб-інтерфейс.