Мова: Українська
Цей посібник допоможе вам розгорнути сервер 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 або вище є обов'язковим для використання користувацького сховища, власного домену та налаштування "Завжди ввімкнено".
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
Увімкніть "Завжди ввімкнено", щоб Служба додатків підтримувала контейнер у робочому стані та не вивантажувала його, коли додаток неактивний:
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 Service. Там ви можете підключити керований диск Premium SSD v2 до одного поду, що забезпечує затримку, близьку до локального диска, з можливістю налаштування IOPS, і при цьому зберігає працездатність у разі втрати вузла.
Наступні кроки
Дотримуйтесь посібника з конфігурації, щоб налаштувати доставку емейлів та єдиний вхід (Single Sign-On) через веб-інтерфейс.