- PVSM.RU - https://www.pvsm.ru -
Основной целью данной статьи является рассказ об особенностях и лучших практиках размещения Drupal в облачном окружении платформы Microsoft Azure [о преимуществах платформы Azure для размещения веб-сайтов на PHP, Java, Python, .NET и Node.js вы можете почитать в этой статье [1] – прим. перев.]. Из этого руководства вы узнаете:
Миграция вашего сайта на Drupal в облако Azure весьма легкая задача. Просто используйте перечисленные ниже лучшие практики и вы сможете переместить свой сайт на Drupal в облачное окружение всего за один час.
Создание веб-сайта Azure Web Site и базы данных MySQL
Для начала создайте в Azure новый веб-сайт с MySQL и с поддержкой Git (можно воспользоваться пошаговой инструкцией [2]). Обратите внимание, что в статье описано использование БЕСПЛАТНОЙ версии MySQL в облаке. Это версия БД отлично подходит для этапа разработки, но для промышленной эксплуатации вам может потребоваться приобрести облачный экземпляр базы данных от ClearDB в магазине Azure Store. На выбор предлагается набор планов приобретения [3] общего кластера БД. Для подробной информации обратитесь к статье ClearDB from Azure Store [4]. Если план с общим кластером БД вам не подходит, то вы можете выбрать выделенный кластер MySQL. Подробности вы можете найти по следующей ссылке ClearDB mission critical database plans [5].
Если вы собираетесь использовать Git для своего сайта на Drupal, то пройдите по шагам руководство, которое описывает как сконфигурировать репозиторий Git. Убедитесь в том, что вы проделали нужные шаги описанные в разделе получения информации о подключении к удаленному серверу MySQL, так как эта информация потребуется вам позднее. Вы вполне можете проигнорировать завершающую часть руководства, которая посвящена развертыванию вашего сайта на Drupal, однако, если вы только изучаете облако Azure (или Git), то эта часть руководства может быть вам полезной.
После старта нового веб-сайта Azure с БД на MySQL, у вас на руках будет информация о подключении к удаленной БД и (опционально) репозиторию Git. Следующим шагом будет копирование вашей базы MySQL в веб-сайт Azure.
Копирование базы данных в MySQL в веб-сайт Azure
Существует множество способов мигрировать базу данных в Azure. Один проверенный способ для миграции MySQL заключается в использовании инструмента [MySqlDump]. Следующая команда демонстрирует пример копирования с локальной машины в облако Azure Web Sites:
mysqldump -u local_username --password=local_password drupal | mysql -h remote_host -u remote_username --password=remote_password remote_db_name
Конечно, вам необходимо указать свое имя и пароль для существующей базы данных Drupal. Кроме того вам необходимо передать имя хоста, имя пользователя, пароль и имя БД для базы данных MySQL созданных на первом шаге. Эта информация доступна в строке соединения, которую вы получили ранее. Строка подключения имеет формат похожий на следующий:
Database=remote_db_name;Data Source=remote_host;User Id=remote_username;Password=remote_password
В зависимости от размера вашей базы данных процесс копирования может занять несколько минут.
Теперь ваша база данных живет в облаке Azure Web Sites. Перед размещение вашего кода Drupal вам необходимо изменить его для того, чтобы он мог подключаться к новой базе данных.
Изменение подключения к базе данных в settings.php
На этом шаге вам снова потребуется информация о подключении к новой БД. Откройте файл <drupalsite>/sites/default/setting.php в редакторе и замените значения ‘database’, ‘username’, ‘password’ и ‘host’ в массиве $databases значениями установленными для вашей новой БД. В итоге у вас должно получиться что-то вроде этого:
$databases = array ('default'=>array ('default'=>array ('database'=>'remote_db_name','username'=>'remote_username',
'password'=>'remote_password','host'=>'remote_host','port'=>'',
'driver'=>'mysql','prefix'=>'',),),);
Замечание: если у вас в settings.php есть параметр конфигурации $base_url, то закомментируйте его, так как Drupal CMS будет создавать адреса URL из набора $base_url. Вы можете использовать параметр $base_url снова сразу после того, как ваш облачный сайт буде сконфигурирован для использования пользовательского домена. Сохраните файл settings.php.
Теперь вы готовы к размещению вашего кода.
Размещение кода Drupal с помощью Git или FTP
Последним шагом будет размещение вашего кода в облако веб-сайта Azure с помощью Git или FTP.
Сразу после установки Drupal вам необходимо включить и сконфигурировать модуль хранилища блобов, который использует облачное хранилище Azure Storage для сохранения медиа-файлов. Используйте следующие инструкции для того чтобы сконфигурировать этот модуль. Войдите на свой сайт под учетной записью администратора и во вкладке модулей включите модуль Azure Storage. Если в списке модулей этого модуля нет, то установите его отсюда [7].
Перейдите на вкладку Configuration, затем выберите Azure Storage в разделе Media.
Щелкните по кнопке Add для добавления данных об учетной записи хранилища, которые будут использоваться вашим сайтам Drupal. Укажите все детали: имя учетной записи хранилища, имя существующего контейнера (контейнер должен быть публичным), адрес URL хранилища блобов, первичный ключ доступа. Используйте параметр custom URL, если ваше хранилище связано с CDN и укажите здесь адрес CDN. Если вы не используете CDN, то оставьте это поле пустым.
Снова перейдите на вкладку Configuration и выдерите File System в разделе Media. Выберите пункт и сохраните настройку нажав Save Configuration.
Теперь выберете Structure->Content Type. Затем щелкните на manager fields типа Article. В окне диалога проверьте, есть ли у вас Image label, которая будет отображать опцию Image Upload при создании новых материалов. Если вы планируете поддерживать загрузку файлов (различных форматов), то включите так же отметку для File Upload.
Теперь щелкните на edit для метки Image и выберите для параметра Upload destination опцию Azure Storage. Проделайте тоже самое для всех других имеющихся у вас меток для загрузки файлов (с типами полей FILE).
Повторите описанные шаги для обновления конфигурации для любого типа контента, который поддерживает загрузку изображений или других файлов.
Подпишитесь на сервис Memcached Cloud, который предлагает memcached в виде управляемого сервиса. Этот сервис в настоящее время доступен в регионах East US и West US платформы Azure. Если вы хотите управлять своими собственными серверами memcached, то у вас есть легкая возможность настроить их с помощью виртуальных машины Azure на базе Linux. В этой статье рассматривается вариант использования облачного Memcached.
Войдите на портал Redis labs [14] и выберите New Memcached Subscription.
Выберите облачную платформу/регион для сервиса и план, который вы будете использовать. Бесплатный план (25 МБ) отлично подходит для целей разработки и тестирования, но не предоставит достаточного уровня производительности требуемого для сайта в промышленной эксплуатации. Нажмите на Select и создайте свою собственную конечную точку memcached.
Введите всю требуемую информацию. Модуль, который я использую для Drupal не поддерживает SASL (Simple Authentication and Security Layer), который может быть добавлен на ваш сервер memcached, в связи с чем я снял выбор с этой опции на текущем шаге. Введите имя ресурса и щелкните на Activate. Если у вас уже есть модуль, который поддерживает уровень безопасности для memcached, вы можете включить его в ходе создания конечной точки memcached.
Теперь вы можете управлять своим сервисом memcached из портала Redis Labs [18].
Для получения конечной точки сервера щелкните на созданном вами Resource Name. Запомните значение Endpoint, которое потребуется вам позднее для конфигурации Drupal.
Загрузите и скопируйте отсюда [21] расширение memcached PECL. Обратите внимание, что это расширение предназначено для PHP5.4 (32 bit). Если ваш сайт использует другу конфигурацию, тогда выберите подходящую библиотеку отсюда [22]. Установите модуль memcached для Drupal. В панели управления веб-сайтом Azure обновите конфигурацию сайта. В секции настроек приложения (app settings) вкладки Configure добавьте параметр PHP_EXTENSIONS со значением “binphp_memcache.dll”.
В файле settings.php в переменной $conf добавьте сервера memcached. Если вы не укажете ни один из серверов, то memcache.inc решит, что экземпляр вашего сервера memcached запущен на локальной машине на порту 11211 (127.0.0.1:11211 или localhost:11211), а так как его там нет, то ваше приложение не будет работать.
Следующий пример массива демонстрирует шаблон:
$conf['memcache_servers'] = array(
'pub-memcache-10939.us-east-1.1.azure.garantiadata.com:
10939' => 'default'
);
Для изучения подробностей обратитесь к руководству Memcache API for Drupal [23]. Вы можете использовать только один сервер для всех операций Drupal с указанной выше конфигурацией, но если вы предпочитаете разделить ваш набор данных на несколько серверов Memcached, то можете сделать это легко и просто создав новые конечные точки сервера Memcached в Azure Store. Ниже вы найдете простую настройку с двумя серверами Memcached и в этом примере все данные будут кэшироваться в Bucket 1, исключая “страницы” (pages), которые будут кэшироваться в Bucket 2.
$conf['memcache_servers'] = array(
'server1_hostname:server1_port' => 'default',
'server2_hostname:server2_port' => 'pages'
);
$conf['memcache_bins'] = array(
'cache_page' => 'pages',
);
Самый распространенный подход для организации кэширования состоит в том, чтобы смешивать использование сети доставки контента (CDN) и сервиса Memcached. Drupal использует базу данные для хранения кэша. Если какой-либо контент будет изменен, то определив изменение Drupal пометит кэш как устаревший для сохранения консистентности контента. Memcached заменяет внутреннюю систему кэширования Drupal.
Общие рекомендации для любого сайта в облаке:
Теперь давайте сфокусируемся на Drupal CMS и научимся некоторым лучшим практикам для построения и управления Drupal CMS в облачном окружении Azure Web Sites.
Конфигурирование безопасности
Конфигурирование производительности
Конфигурирование веб-сайта Azure
Лучшие практики кода
<httpProtocol>
<customHeaders>
<add name="Arr-Disable-Session-Affinity" value="True" />
</customHeaders>
</httpProtocol>
Размещая экземпляры веб-сайта в разных регионах по всему миру вы уменьшаете риск возникновения единой точки отказа, когда вы полагаетесь только на один экземпляр сайта в одном датацентре. Ключевая вещь, которую нужно иметь в виду при работе с облачными решениями, это понимание того, что каждый из компонент (веб-сайт, БД, кэш, и т.д.) может отказать, в связи с чем ваше решение должно уметь эти отказы обрабатывать и быть безотказным. Это позволит снизить операционные расходы, которые могут быть в связи с отказом сервиса.
Для подобного сценария вам необходимо разместить ваш сайт Drupal как минимум в двух регионах, например, в East US и West US. Рассмотрим конфигурацию Active-Active (Master-Master) для веб-сайта Drupal в Azure:
Эту архитектуру очень легко создать, но если ваше приложение предъявляет особые требования, то вы можете настроить эту конфигурацию под себя. Вы можете внести следующие изменения:
Масштабирование веб-сайта
Масштабирование Azure Web Sites требует двух действий: изменения вашего режима Web Hosting Plan на более высокий уровень и конфигурирование определенных настроек после перехода на новый план. Оба действия освещались в этой статье. Более высокие уровни, например режим Standard предлагают высокую производительность и гибкость в том как ваши ресурсы будут использованы. Для подробностей обратитесь к документации How to scale Azure website [33].
Масштабирование базы данных
Ваше приложение зависит от двух компонент – веб-сайт Azure и база данных. В зависимости от того, как вы создали свою БД, вам предлагается несколько способов масштабирования своей БД для высокой доступности и отказоустойчивости. Например, существуют два сценария:
Масштабирование кэша Memcached
Управляемое решение Memcached Cloud от Redis Labs предлагает планы с поддержкой высокой доступности и отказоустойчивостью. Вы можете масштабировать облако memcached между регионами, в случае когда единой точки memcached может быть недостаточной для отказоустойчивости. Для больше информации обратитесь к статье Memcached Cloud Features [36].
Настройка Traffic Manager для маршрутизации вашего траффика
Сервис Azure Traffic Manager позволяет вам управлять распределением пользовательского траффика по определенным конечным точкам, которые могут включать в себя и веб-сайты. Traffic Manager работает, используя интеллектуальный механизм политик для запросов к DNS и ваших интернет-ресурсов. Ваши облачные сервисы или веб-сайты могут быть запущены в одном и том же датацентре или в разных датацентрах по всему миру. Traffic Manager предлагает три способа маршрутизации:
Создайте новый экземпляр сервиса Azure Traffic Manager через портал управления Azure.
Перейдите к панели управления созданным сервисом, нажмите на ADD для использования веб-сайтов, которые вы хотите добавить в маршрутизацию траффика.
В окне выберите тип сервиса Web Site и выберите веб-сайты, которые вы хотите использовать
Мы добавили обе конечные точки в traffic manager. Если вы перейдете по ссылке URL вашего traffic manager вы можете убедиться в том, что ваши запросы маршрутизируются на ваши сайты.
Мы рассмотрели базовые задачи и темы касающиеся переноса сайта Drupal в облачное окружение Azure Web Sites. Решения, которые мы обсудили выше, позволят упростить перенос сайтов Drupal в Azure для проектов любого размера. Теперь вы можете начать строить и масштабировать ваши сайты Drupal на платформе Microsoft Azure.
Автор: XaocCPS
Источник [50]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mysql/64211
Ссылки в тексте:
[1] этой статье: http://habrahabr.ru/company/microsoft/blog/221045/
[2] пошаговой инструкцией: http://www.windowsazure.com/en-us/develop/php/tutorials/website-w-mysql-and-git/
[3] набор планов приобретения: https://www.cleardb.com/store/azure
[4] ClearDB from Azure Store: http://blog.syntaxc4.net/post/2012/12/03/provisioning-a-mysql-database-from-the-windows-azure-store.aspx
[5] ClearDB mission critical database plans: http://www.cleardb.com/pricing/missioncritical.view
[6] статье: http://azure.microsoft.com/en-us/documentation/articles/web-sites-php-mysql-deploy-use-git/
[7] отсюда: https://drupal.org/project/azure
[8] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb15.png
[9] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb13.png
[10] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb11.png
[11] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb9.png
[12] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb7.png
[13] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb6.png
[14] портал Redis labs: https://redislabs.com/
[15] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb17.png
[16] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb20.png
[17] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb24.png
[18] портала Redis Labs: https://app.redislabs.com/main/bdbconfiguration
[19] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb25.png
[20] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb27.png
[21] отсюда: http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/php_memcache-3.0.8-5.4-nts-vc9-x86.zip
[22] отсюда: http://pecl.php.net/package/memcache/3.0.8/windows
[23] Memcache API for Drupal: https://drupal.org/node/1131468
[24] Secure Pages: http://drupal.org/project/securepages
[25] странице модуля: https://drupal.org/project/seckit
[26] модуль Password Policy: https://drupal.org/project/password_policy
[27] Azure website diagnostics: http://azure.microsoft.com/en-us/documentation/articles/web-sites-enable-diagnostic-log/
[28] Auto-scale Configuration: http://blogs.msdn.com/b/wats/archive/2013/10/31/exploring-the-autoscale-feature-in-windows-azure-websites.aspx
[29] Features by tiers: http://azure.microsoft.com/en-us/pricing/details/web-sites/
[30] How to Auto-heal your website: http://azure.microsoft.com/blog/2014/02/06/auto-healing-windows-azure-web-sites/
[31] здесь: https://groups.drupal.org/node/25421
[32] Disable ARR Cookie: http://ppe.blogs.msdn.com/b/windowsazure/archive/2013/11/18/disabling-arr-s-instance-affinity-in-windows-azure-web-sites.aspx
[33] How to scale Azure website: http://azure.microsoft.com/en-us/documentation/articles/web-sites-scale/
[34] ClearDB high availability routing: http://www.cleardb.com/developers/cdbr/introduction
[35] MySQL Cluster CGE: http://www.mysql.com/products/cluster/
[36] Memcached Cloud Features: http://redislabs.com/memcached-cloud
[37] Failover load balancing method: http://msdn.microsoft.com/en-us/library/azure/dn339010.aspx
[38] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb31.png
[39] Image: http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2014/05/image_thumb33.png
[40] Попробовать Azure: http://aka.ms/azure_trial_free_rus?id=1
[41] виртуальной академии Microsoft: http://aka.ms/gomvarus?id=1
[42] Разработка приложений на платформе Microsoft: http://www.microsoftvirtualacademy.com/training-courses/app-development-on-microsoft-platform-rus
[43] Обзор безопасности Microsoft Azure и SQL Azure Databases: http://www.microsoftvirtualacademy.com/training-courses/microsoft-azure-security-overview-and-sql-azure-databases-rus
[44] Программное управление сервисами Azure: http://www.microsoftvirtualacademy.com/training-courses/service-management-windows-azure-rus
[45] Погружение в Azure для разработки приложений и инфраструктурных сервисов: http://www.microsoftvirtualacademy.com/training-courses/windows-azure-for-app-development-and-infrastructure-services
[46] Введение в разработку современных приложений с Azure для начинающих: http://www.microsoftvirtualacademy.com/training-courses/introducing-to-app-development-for-windows-azure-rus
[47] курсы по разработке в облаке Azure: http://www.microsoftvirtualacademy.com/product-training/product-windows-azure-ru
[48] бесплатные курсы MVA: http://aka.ms/gomvarus
[49] Войдите: https://habrahabr.ru/auth/login/
[50] Источник: http://habrahabr.ru/post/228841/
Нажмите здесь для печати.