Миграция PHP сайта в Azure Web Apps

Если стоит задача перенести сайт в Azure Web Apps, найти необходимые материалы не составляет труда. Проблема лишь в том, что эти материалы будут относится к миграции ASP.NET приложений, а если же стоит задача, скажем, мигрировать PHP приложение, количество полезных материалов крайне резко уменьшается. Задача этой статьи, познакомить читателя именно с процессом миграции PHP сайтов, которые в большинстве случаев работают с базой данных на MySQL. В качестве испытуемого я выбрал WordPress. Мой выбор обусловлен его огромной популярностью. Огромное количество новостных порталов, интернет магазинов основанные именно на ней.

Перед стартом миграции необходимо иметь:

  1. Активную подписку Azure;
  2. Бекап сайта;
  3. Бекап базы.

Саму же задачу миграции можно разбить на часть подзадач, которые в общем виде будут представлены так:

  1. Создание нового сайта в новом App Service Plan или существующем;
  2. Настройка нового веб сайта;
  3. Загрузка контента сайта;
  4. Знакомство Azure Kudu и миграция базы данных сайта;
  5. Проверка работоспособности после миграции.

Создание нового сайта

Перейдем на https://manage.windowsazure.com в разделе Web apps, создадим новое веб-приложение. В открывшемся мастере необходимо выбрать Custom Create. Далее заполняем необходимую информацию: название, локацию. Так же важно указать что необходима база данных MySQL, это должно выглядеть так:

2015-10-04_18-46-28

На следующем шаге подтверждаем создание базы данных в ключе лицензионных соглашений:

2015-10-04_18-50-09

И создаем сайт.

Настройка нового веб сайта

Так как существующий веб сайт имеет доменное имя, в моем случае это ait.pp.ua, необходимо повысить стоимость плана (pricing tier) до минимального Shared, так как любой ново созданный сайт имеет стоимость плана Free. Для этого проваливаемся в настройки сайта

2015-10-04_20-04-55

и переходим в раздел Scale. В настройках выбираем Shared как показано на скриншоте:

2015-10-04_20-13-36

И в конце сохраняем настройки. Изменения произойдут почти мгновенно. Это нам позволит в дальнейшем настроить необходимое доменное имя для сайта, т. к. в Free такой возможности нет.

Следующим этапом идем в раздел Configure, там настроим необходимую версию PHP (иногда важно, так как часть самописных приложений имеют явную заточку под конкретную версию). Далее, пролистывая настройки, найдем пункт Domain Names и вызовем мастер, нажав Manage Domains:

2015-10-04_20-19-35

Далее, на стороне своего DNS хостера, в настройках DNS зоны, я создаю новую запись CNAME. В имени записи указываю awverify, в поле значения должен указать конструкцию awverify.www.yourdomain.com, в моем случае awverify.aitppua.azurewebsites.net. Этот шаг мне необходим для подтверждения права собственности на мой домен. После валидации должно получится так:

2015-10-04_20-29-53

IP адрес ниже нам будет необходим уже после окончательной миграции сайта на сторону Azure. Для этого нужно будет создать запись типа A ведущею на этот IP.

На этом обязательные шаги со стороны конфигурации выполнены, и можно подходить к процессу загрузки контента сайта.

Загрузка контента сайта

В качестве метода загрузки контента я выберу использования FTP. Для этого необходим логин, пароль, и DNS имя FTP сервера. Чтобы получить необходимую информацию перейдем в раздел Dashboard:

2015-10-04_20-38-42

Логин и пароль можно задать, выбрав Reset your deployment credentials. Имя FTP сервера указано под FTP host name. Логин под Deployment / FTP user. С помощью этих данных подключаемся любым FTP клиентом и выкачиваем сайт в каталог /site/wwwroot предварительно удалив файл hostingstart.html .

Миграция базы данных

Осталось дело за малым – миграция базы. Выполнять будем с помощью Kudu (в будущем я напишу отдельную статью, посвященную этому функционалу). Перейдем на https://*****.scm.azurewebsites.net, где ***** это имя Web App, в моем случае https://aitppua.scm.azurewebsites.net .

Будет открыт вот такой сайт:

2015-10-04_21-52-36

 

Переходим в Site extensions, далее идем в Site extensions Gallery и устанавливаем phpMyAdmin:

2015-10-04_21-55-07

 

После установки, обязательно необходимо перезагрузить сайт. Если этого не сделать, при запуске phpMyAdmin вы будете получать 404 ошибку. Теперь запускаем phpMyAdmin:

2015-10-04_21-59-02

 

После запуска расширения, переходим в базу и производим импортирование из SQL дампа:

2015-10-04_22-01-08

Процесс завершился успешно.

Проверка работоспособности

И так, базу импортировали, контент загрузили, теперь осталось проверить все ли нормально с сайтом. Для проверки я обычно использую редактирование файла host операционной системы. Добавляем в него записи:

23.100.1.29        www.ait.pp.ua

23.100.1.29        ait.pp.ua

Где, 23.100.1.29 IP адрес, полученный во время конфигурирования доменных имен.

Как видите со скриншота, все прошло успешно и сайт загрузился:

2015-10-04_22-18-49

Дальнейшая проверка показала, что остальная часть функционала так же работает в штатном режиме. Цель успешно достигнута. Если остались вопросы или есть уточнения, просьба отписаться в комментариях. Успешных миграций!

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Anton Masyan
05.10.2015 19:47

Только самое интересное, что их App Service Basic B1 будет стоить дороже (55,80 $/МЕС), чем такая же ВМ под *nix Linux Virtual Machine Basic A1 (37,94 $/МЕС). Я этой фишки так и не понял. ;( Понятно, что app service развернуть много ума не надо: клик, клик, клик, но блин … )))

Alexander Tkachenko
Alexander Tkachenko
05.10.2015 20:55
Ответить на  Anton Masyan

Антон, все верно вы сказали. Linux Virtual Machine Basic A1 будет намного дешевле нежели Web App. Но вот в чем нюансы:
1) Вылетает виртуалка – сайта нет.
2) Высокою доступность веб сервера на Basic построить нельзя + фейловер баз данных нужно строить самому.
3) Использовать Basic тоже не совсем правильное решение для продуктива, так как производительность снижена, особенно по дискам.
Единственный случай, когда на мой взгляд оправдано использование Linux/Unix виртуалок когда веб приложение использует специфические PHP модули отсутствующие IIS fastcgi, или скажем часть деректив в .htaccess невозможно конвертировать в web.config.