Налаштування деплою сайту на Azure (App Service)

Ручні завантаження файлів і нічні падіння сайту — знайомий біль? Ми налаштовуємо деплой на Azure App Service так, щоб код потрапляв на production автоматично і без простоїв. Наша команда реалізує проєкт під ключ — від вибору плану до CI/CD з Deployment Slots, забезпечуючи стабільну роботу та подальшу підтримку.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування деплою сайту на Azure (App Service)
Середній
~2-3 дні
Часті запитання

Налаштування деплою сайту на Azure (App Service)

Уявіть: ви push'ите код у main, за хвилину він уже на production без жодної секунди простою. Жодних ручних FTP-завантажень, жодних 502 помилок серед ночі. Саме так виглядає правильно налаштований деплой на Azure App Service. Ми бачили десятки проєктів, де дрібні помилки в конфігурації — невірний runtime, відсутність змінних оточення, кривий CI/CD — призводили до годин даунтайму. Розповідаємо, як цього уникнути.

Правильне налаштування Azure App Service включає кілька ключових компонентів: вибір відповідного плану, автоматизація збірки та деплою, організація оточень через Deployment Slots та налаштування автоскейлінгу. Нижче — конкретні кроки, які ми застосовуємо в кожному проєкті.

Створення App Service

App Service Plan — це основа. Для продакшену вибираємо рівень B2 або вище, щоб забезпечити запас продуктивності під PHP 8.3 або Node.js. Команда Azure CLI:

az group create --name myapp-rg --location westeurope
az appservice plan create \
  --name myapp-plan \
  --resource-group myapp-rg \
  --sku B2 \
  --is-linux
az webapp create \
  --name myapp-prod \
  --resource-group myapp-rg \
  --plan myapp-plan \
  --runtime "PHP|8.3"

Перший деплой можна зробити через FTP або zip, але ми рекомендуємо одразу налаштувати безперервну інтеграцію.

Як налаштувати CI/CD через GitHub Actions?

GitHub Actions — оптимальний вибір для автоматизації. Ми підготували універсальний workflow, який адаптуємо під будь-який стек:

---
# .github/workflows/azure-deploy.yml
name: Deploy to Azure

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Build frontend
        run: npm ci && npm run build
      - name: Deploy to Azure Web App
        uses: azure/webapps-deploy@v3
        with:
          app-name: myapp-prod
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
          package: .

Важливий момент: publish-profile зберігається в секретах GitHub — жодних паролів у репозиторії. Workflow запускається автоматично при кожному push у main, і через 2–3 хвилини нова версія вже на сервері.

Чому Deployment Slots — must have для production?

Deployment Slots — це ізольовані оточення всередині одного App Service. Ви деплоїте нову версію в staging, тестуєте, потім миттєво перемикаєте (swap) на production. Swap займає секунди, користувачі не помічають перемикання. Якщо щось пішло не так — відкат однією дією.

# Створити staging slot
az webapp deployment slot create \
    --name myapp-prod \
    --resource-group myapp-rg \
    --slot staging

# Деплой у staging
az webapp deploy \
    --name myapp-prod \
    --resource-group myapp-rg \
    --slot staging \
    --src-path deployment.zip

# Swap staging → production (миттєво, zero-downtime)
az webapp deployment slot swap \
    --name myapp-prod \
    --resource-group myapp-rg \
    --slot staging \
    --target-slot production

# Swap Back якщо щось пішло не так
az webapp deployment slot swap \
    --name myapp-prod \
    --resource-group myapp-rg \
    --slot production \
    --target-slot staging

Ми використовуємо цю техніку у всіх продакшен-проєктах. Один інтернет-магазин після впровадження слотів перестав простоювати вночі — кешування та підключення до БД не скидаються при swap, якщо налаштовано правильно.

Як підключити кастомний домен та SSL?

Після деплою потрібно прив'язати свій домен. Azure App Service підтримує безкоштовні SSL-сертифікати від Let's Encrypt або власні з Key Vault. Процес:

  1. У порталі Azure додайте custom domain у розділі Custom domains.
  2. Прив'яжіть SSL-сертифікат (безкоштовний або свій).
  3. Вкажіть прив'язку TLS/SSL для домену.

Порада: використовуйте Azure Key Vault для зберігання сертифікатів — це безпечніше, ніж зберігати їх у файлах.

Автоскейлінг: коли сайт зростає

App Service Plan вміє автоматично масштабуватися за метриками. Налаштування через CLI:

az monitor autoscale create \
 --resource-group myapp-rg \
 --resource myapp-plan \
 --resource-type Microsoft.Web/serverfarms \
 --name autoscale-rule \
 --min-count 2 \
 --max-count 10 \
 --count 2
az monitor autoscale rule create \
 --autoscale-name autoscale-rule \
 --resource-group myapp-rg \
 --scale out 2 \
 --condition "Percentage CPU > 75 avg 5m"

При правильно налаштованому автоскейлінгу проєкт витримує зростання трафіку в 10 разів без ручного втручання. Наприклад, наш клієнт — сервіс онлайн-бронювання — пережив Black Friday, коли навантаження зросло в 15 разів, а додаток залишився чуйним.

Порівняння методів деплою

Метод Час налаштування Zero-downtime Підходить для
FTP/zip 30 хвилин ❌ Тестові проєкти
GitHub Actions 1 день ✅ (зі слотами) Продакшен
Azure DevOps 1 день ✅ Enterprise
Terraform 3–4 дні ✅ Інфраструктура як код

GitHub Actions в 10 разів швидший за ручний FTP-деплой і повністю виключає людський фактор. Для порівняння: при FTP ви витрачаєте 10 хвилин на завантаження файлів, а при CI/CD — 2 секунди на commit.

Типові помилки та їх вирішення

  • 502 Bad Gateway: найчастіше через несумісність версій PHP або Node.js з runtime Azure. Перевірте az webapp config show та порівняйте з локальним середовищем.
  • Змінні оточення не підхоплюються: задавайте їх через az webapp config appsettings set, а не через .env-файл в архіві.
  • SSL-сертифікат не працює: обов'язково вкажіть прив'язку в порталі Azure після додавання сертифіката.

Що входить у налаштування під ключ

Відзначимо: коли ви довіряєте нам налаштування деплою на Azure App Service, ми:

  • Аналізуємо ваш проєкт та підбираємо оптимальний план (ми працюємо з Azure понад 5 років, налаштували деплой для 50+ проєктів)
  • Налаштовуємо CI/CD через GitHub Actions або Azure DevOps
  • Підключаємо Deployment Slots з автоматичним swap та zero-downtime
  • Прив'язуємо кастомний домен та SSL-сертифікат
  • Налаштовуємо автоскейлінг та моніторинг
  • Документуємо всю конфігурацію

Ми гарантуємо, що після налаштування ви зможете деплоїти однією кнопкою. Зв'яжіться з нами, щоб обговорити ваш проєкт — ми оцінимо його за 1 день та запропонуємо оптимальне рішення.

Строки реалізації

Етап Строк
Базовий деплой App Service + GitHub Actions 1–2 дні
Deployment Slots + swap +1 день
Terraform-описання всієї інфраструктури 3–4 дні

Не відкладайте — замовте консультацію, і ми зробимо ваш деплой надійним та автоматичним.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060