Saturday, 16 April 2016

A Step By Step Guide For Deploying & Managing A PHP Application On Docker LAMP, LAPP, And LAOP Stacks


Шаг за шагом руководство для развертывания и управление приложения PHP на Докер фару, LAPP, И LAOP стеков

Для запуска и управления 9 шаблонов приложений PHP (LAMP, Lapp и LAOP стеки) в этом проекте на 13 различных облаков и платформ виртуализации ( в том числе Vsphere, OpenStack, AWS, Rackspace, Microsoft Azure, Google Compute Engine, DigitalOcean, IBM SoftLayer, и т.д.), убедитесь , что вы либо:
Картина
Настройка и запустить любой из опубликованных шаблонов Docker PHP приложений (включая фару, LAPP и LAOP стеков) и многих других шаблонов (включая многоуровневые стеки приложений Java, Монго набора реплик Cluster, Drupal, Wordpress, MEAN.JS и т.д. )

Задний план

Containerizing корпоративных приложений по-прежнему является проблемой в основном потому, что существующие рамки состав приложения не учитывают сложные зависимости, внешние объединения или автоматическое масштабирование рабочих процессов пост-положение. Кроме того, эфемерная конструкция контейнеров означает, что разработчикам пришлось раскручивать новые контейнеры и заново создать сложные зависимости & внешние интеграции с каждым обновлением версии.
DCHQ, доступен в размещенных и на предпосылке версиях, устраняет все эти проблемы и упрощает контейнеризации корпоративных приложений с помощью усовершенствованной основы композиции приложений, который расширяет Docker Compose с переменными окружения кросс-изображений привязок, расширяемых BASH скрипт плагинов, которые могут быть вызывается во время запроса или после предоставления, а также применение кластеризации для высокой доступности в нескольких хостов или регионах с поддержкой автоматического масштабирования.
После того, как приложение подготовлено, пользователь может контролировать процессора, памяти и ввода / вывода запущенных контейнеров, получать уведомления & уведомления, и получить доступ к резервным копиям приложений, автоматический масштаб в / из рабочих процессов, а также плагин выполнения рабочих процессов для обновление контейнеров работает. Кроме того, автоматизированная "App Run" позволяет пользователям интегрировать их непрерывные рабочие процессы интеграции планировать развертывание контейнеров для их ночные сборки или всякий раз, когда изменения объединяются в GitHub.
В предыдущих блогах, мы продемонстрировали автоматизацию развертывания конца в конец различных Java - приложений (например , Pizza Shop и Movie магазин приложений) на многоуровневую Docker основе стеков приложений в 13 различных облаков & платформ виртуализации. Для получения полного списка этих блогов, вы можете посетить эту страницу: http://dchq.co/docker-java-applications.html~~HEAD=dobj
Тем не менее многие пользователи были до сих пор путают на некоторые из фундаментальных аспектов моделирования приложений. Эти вопросы включают в себя:
  • Где эти переменные окружения приходят из вашей YAML на основе шаблона приложения?
  • Каким образом база данных инициализируется с соответствующими схемами , необходимыми из моего PHP - приложения?
Для решения этих вопросов, мы создали образец "имена каталогов" PHP приложений в этом проекте GitHub, которые могут быть развернуты на этих стеков приложений:

  • Докер ЛАМПА Стек (Linux-Apache-MySQL-PHP)
  • Докер ЛАПП Стек (Linux-Apache-PHP-PostgreSQL)
  • Докер LAOP Стек (Linux-Apache-PHP-Oracle)
В этом проекте, мы обеспечим руководство шаг за шагом для конфигурирования, развертывания и управления этой PHP приложение, используя различные стеки приложений и на различных облачных / виртуальной инфраструктуры.
Мы рассмотрим:
  • Настройка config.php приложения PHP
  • Инициализация базы данных для приложения PHP
  • Построение Docker Image Использование PHP: 5,6-Апач
  • Построение шаблонов приложений YAML основе, которые могут повторно использоваться на любом хосте Linux работает в любом месте
  • Provisioning & автоматическое масштабирование базовой инфраструктуры на любом облаке (с Rackspace быть примером в этом блоге)
  • Развертывание приложения PHP многоуровневую на кластере Rackspace
  • Мониторинг CPU, памяти и ввода / вывода бегущего контейнеров
  • Включение непрерывной интеграции с использованием автоматизированных App Запуск
  • Горизонтальное масштабирование приложения PHP

Конфигурирование Config.php PHP-приложения

Вы можете клонировать этот образец "имена каталогов" PHP приложение из GitHub.
Это самый важный шаг в "Dockerizing" вашего PHP приложения. Чтобы эффективно использовать переменные окружения, вы можете передать при запуске контейнеров, вам нужно будет убедиться, что ваше приложение настроено таким образом, что позволит вам изменить определенные свойства во время запроса - как:
  • Драйвер базы данных вы хотели бы использовать
  • URL базы данных
  • Учетные базы данных
  • Любые другие параметры, которые вы хотели бы изменить во время запроса (например, мин / макс размер пула соединений, тайм-аут простоя и т.д.)
Для достижения этой цели, вам сначала нужно настроить config.php .
Картина
Вы заметите, что свойства конкретных данных источника ссылаются следующие переменные окружения, которые будут переданы на во время запроса:
  • DB_HOST
  • DB_USER
  • DB_PASS
  • DB_NAME
  • DB_PROVIDER
  • DB_PORT

Инициализация базы данных для PHP Application

Как правило, мы рекомендуем инициализировать схему базы данных, как часть самого развертывания PHP-приложений. Таким образом, вам не придется беспокоиться о сохранении отдельных файлов SQL, которые должны быть выполнены на базе данных по отдельности.

Однако , если у вас уже есть эти SQL файлы , и вы по- прежнему предпочитают их выполнения на базе данных по отдельности - то DCHQ может помочь вам автоматизировать этот процесс с помощью своего плагина в рамках. Вы можете обратиться к этому разделу для получения дополнительной информации.
Для того чтобы включить сценарии SQL для создания таблиц базы данных в приложении PHP, вам нужно будет настроить Persistence.php файл для заполнения базы данных , используя различные операторы SQL ( в зависимости от используемой базы данных). Функция populateDatabase () работает с MySQL, PostgreSQL и Oracle.
Картина

Создание имиджа Docker Использование Php: 5,6-Apache

После того как приложение PHP сконфигурирован, вам просто нужно создать Docker изображение с помощью PHP кода.
После входа в систему, чтобы DCHQ (либо принимал DCHQ.io или на предпосылке версии), пользователь может перейти к  Image Строить , а затем нажмите на + кнопку , чтобы создать новый Dockerfile (Git / GitHub / Bitbucket) сборки изображения.
Обеспечить требуемые значения следующим образом:
  • Git филиал - это поле не является обязательным - но пользователь может указать ответвление от проекта GitHub. Филиал по умолчанию является ведущим.
  • Git Полномочия - пользователь может хранить учетные данные в частном хранилище GitHub надежно DCHQ. Это может быть сделано путем перехода к провайдерам облачных  и нажав на + , чтобы выбрать учетные данные
  • Кластер - здание Docker изображений организовано через агента DCHQ. В результате, пользователю необходимо выбрать кластер , на котором агент будет использоваться для выполнения строительства DOCKER изображений. Если кластер не был создан, обратитесь к этому разделу , чтобы либо зарегистрировать уже работающих хостов или автоматизировать выделение ресурсов новой виртуальной инфраструктуры.
  • Нажмите для приписки - пользователь может нажать вновь созданное изображение на любом государственном или частном хранилище на Докер Hub или набережной. Чтобы зарегистрировать учетную запись Docker Hub или Quay, пользователь должен перейти к   провайдерам облачных и Репо и нажав на + , чтобы выбрать Docker Registries
  • Repository - это имя репозитория , на котором будет выталкиваться изображение. Например, наш образ был перенесен на dchq / PHP-пример: последние
  • Метка - это имя тега , который вы хотели бы дать для нового образа. Поддерживаются имена тегов в DCHQ включают в себя:
    • {{дата}} - отформатированы дата
    • {{}} метка времени - полный временной штамп
  • Крон Expression - пользователь может запланировать строительство Docker изображений с помощью внешнего из коробки хрон выражений. Это облегчает ежедневные и ночные сборки для пользователей.
После того , как необходимые поля заполнены, пользователь может нажать кнопку Сохранить .

Затем пользователь может нажать на кнопку Play , чтобы построить изображение Docker по требованию.
Картина
Вот фактическая Dockerfile используется для создания этого Docker изображение из этого репозитория GitHub:
Картина

Здании YAML основе шаблонов приложений, которые могут повторно использоваться на любом хосте Linux Запуск Anywhere

После входа в систему, чтобы DCHQ (либо принимал DCHQ.io или на предпосылке версии), пользователь может перейти к  App & Machine , а затем нажмите на + кнопку , чтобы создать новый Докер Compose шаблон.
Мы создали 9 шаблонов приложений , используя официальные изображения из Докер Hub для той же "имена каталогов" PHP приложения - но для разных серверов приложений и баз данных.
Шаблоны включают примеры следующих стеков приложений (для того же приложения PHP):
  • Докер ЛАМПА Стек (Linux-Apache-MySQL-PHP)
  • Докер ЛАПП Стек (Linux-Apache-PHP-PostgreSQL)
  • Докер LAOP Стек (Linux-Apache-Oracle-XE-PHP)
  • Докер ЛАМПА Стек (3-й эшелон Nginx-PHP-MySQL)
  • Докер ЛАПП Стек (3-й эшелон Nginx-PHP-PostgreSQL)
  • Докер LAOP Стек (3-й эшелон Nginx-PHP-Oracle XE)
  • Докер ЛАМПА Стек (3-й эшелон Apache HTTP-PHP-MySQL-)
  • Докер ЛАПП Стек (3-й эшелон Apache HTTP-PHP-PostgreSQL-)
  • Докер LAOP Стек (3-й эшелон Apache HTTP-PHP-Oracle-XE)

Переменной окружения Наручники Across Images

Кроме того, пользователь может создавать кросс-изображения переменных среды привязок, сделав ссылку на переменную окружения другого изображения. В этом случае, мы сделали несколько привязок - в том числе DB_HOST = {{MySQL | container_private_ip}} - в котором контейнер базы данных IP Косову динамически во время запроса и используется для того, чтобы Apache-PHP сервер может установить соединение с база данных.
Ниже приведен список поддерживаемых значений переменной окружения:
  • {{alphanumeric | 8}} - создает случайный 8-символьный буквенно - цифровой строки. Это особенно полезно для создания случайных паролей.
  • {{Image Name | ip}}} - позволяет ввести IP - адрес хоста контейнера в качестве значения переменной окружения. Это наиболее полезно для обеспечения возможности промежуточного программного обеспечения яруса , чтобы установить соединение с базой данных.
  • {{Image Name | container_ip}} - позволяет ввести имя контейнера в качестве значения переменной окружения. Это наиболее полезно для обеспечения возможности промежуточного программного обеспечения яруса , чтобы установить безопасное соединение с базой данных (не подвергая порт базы данных).
  • {{Image Name | container_private_ip}} - позволяет ввести внутренний IP контейнера в качестве значения переменной окружения. Это наиболее полезно для обеспечения возможности промежуточного программного обеспечения яруса , чтобы установить безопасное соединение с базой данных (не подвергая порт базы данных).
  • {{Image Name | port_Port Number}} - позволяет ввести номер порта контейнера в качестве значения переменной окружения. Это наиболее полезно для обеспечения возможности промежуточного программного обеспечения яруса , чтобы установить соединение с базой данных. В этом случае номер порта , указанный должен быть внутренний номер порта - то есть не внешний порт , который выделяется в контейнер. Например, {{PostgreSQL | port_5432}} будет переведен к фактической внешний порт , что позволит промежуточное программное обеспечение уровня для установления соединения с базой данных.
  • {{Image Name | Environment Variable Name}} - позволяет ввести значение переменной окружения изображение в в переменной окружения другого образа. Случаи использования здесь безграничны - как большинство многоуровневых приложений будет иметь зависимости кросс-изображения.

ЛАМПА Стек (Linux-Apache-MySQL-PHP)

Картина
Картина

ЛАПП Стек (Linux-Apache-PHP-PostgreSQL)

Картина
Картина

LAOP Стек (Linux-Apache-PHP-Oracle)

Картина
Картина

ЛАМПА Стек (3-й эшелон Nginx-PHP-MySQL)

Картина
Картина

ЛАПП Стек (3-й эшелон Nginx-PHP-PostgreSQL)

Картина
Картина

LAOP Стек (3-й эшелон Nginx-PHP-Oracle XE)

Картина
Картина

ЛАМПА Стек (3-й эшелон ApacheHTTP-PHP-MySQL)

Картина
Картина

ЛАПП Стек (3-й эшелон ApacheHTTP-PHP-PostgreSQL)

Картина
Картина

LAOP Стек (3-й эшелон ApacheHTTP-PHP-Oracle XE)

Картина
Картина

Вызов подключаемый модуль для инициализации базы данных отдельно на Докер LAMP-Stack

Мы рекомендуем инициализировать схему базы данных, как часть самого развертывания PHP-приложений. Однако, если вы по-прежнему предпочитают выполнение SQL-файлы на базе данных по отдельности - то DCHQ может помочь вам автоматизировать этот процесс с помощью своего плагина в рамках.

В этом примере MySQL в этом стеке ЛАМПЫ является вызовом Баш скрипт плагин для выполнения файла populate.sql. BASH скрипт плагин был создан для навигации  Плагины и выглядит примерно так:
Картина
В этом Баш скрипт плагина, $ MYSQL_USER , $ MYSQL_ROOT_PASSWORD и $ MYSQL_DATABASE переменные среды, которые передаются во время запроса.
$ FILE_URL является переписываемыми аргумент , который можно определить при создании плагина или при запросе приложения. Это будет URL для файла populate.sql.

Provisioning & Auto-Scaling подстилающей инфраструктуры на любом облаке

После того, как приложение сохраняется, пользователь может зарегистрировать поставщика облако автоматизировать выделение ресурсов и автоматическое масштабирование кластеров на 12 различных облачных конечных точек, включая VMware Vsphere, OpenStack, CloudStack, Amazon Web Services, Rackspace, Microsoft Azure, DigitalOcean, IBM SoftLayer, Google Compute Engine, и многие другие.
Во- первых, пользователь может зарегистрировать поставщика облако для Rackspace (например), перейдя в облачных провайдеров ,  а затем нажав на + кнопку , чтобы выбрать Rackspace . Rackspace Ключ API должен быть обеспечен , - которые могут быть извлечены из раздела Параметры учетной записи на панели управления Rackspace Cloud.

Затем пользователь может создать кластер с автоматической масштабной политики для автоматического раскрутки новых серверов Облако. Это может быть сделано путем перехода к кластерам страницы , а затем нажав на + кнопке. Вы можете выбрать политику размещения мощностей на основе , а затем Плетение в качестве сетевого уровня для того , чтобы облегчить безопасный, защищенный паролем кросс-контейнеровоз связь между несколькими хостами в кластере. Политика Auto-Scale , например, может установить максимальное количество VM (или Cloud Servers) до 10.
Пользователь может в настоящее время положение несколько облачных серверов на вновь созданном кластере либо через рабочий процесс ПИориентированного или путем определения простого YAML на основе шаблона Machine Compose, которая может быть запрошена из библиотеки самообслуживания.

Рабочий процесс UI на основе - Пользователь может запросить Rackspace Cloud Servers, перейдя в машинах , а затем нажав на + кнопку , чтобы выбрать Rackspace . После того, как поставщик Облако выбран, пользователь может выбрать область, размер и изображение , необходимое. Порты открываются по умолчанию на Rackspace Cloud Servers , чтобы приспособить некоторые требования порта (например 32000-59000 для Докер, 6783 для Weave, и 5672 для RabbitMQ). Кластер затем выбирается и может быть определено количество облачных серверов.

YAML основе Machine Compose Template - пользователь может сначала создать шаблон машины для Compose Rackspace, перейдя машин , а затем выбрав Machine Compose .
Вот шаблон для запроса сервера 4GB Cloud.
Поддерживаются следующие параметры для шаблона машины Compose приведены ниже:
  • Описание : Описание Blueprint / шаблона
  • instanceType : Облачный провайдер конкретное значение (например , general1-4)
  • регион : Облачный провайдер конкретное значение (например , IAD)
  • Изображение : обязательно - полное изображение ID / имя (например , IAD / 5ed162cc-b4eb-4371-b24a-a0ae73376c73 или Vsphere VM Имя шаблона)
  • Имя пользователя : Необязательно - только для пользователя Vsphere VM Template

  • Пароль : Необязательно - только для Vsphere VM Template зашифрованный пароль. Вы можете шифровать пароль с помощью конечной точки https://www.dchq.io/#/encrypt~~HEAD=dobj
  • Сеть : Дополнительно - Облако поставщик конкретное значение (например , по умолчанию)
  • SecurityGroup : Облачный провайдер конкретное значение (например , dchq-безопасности группа)
  • KeyPair : Облачный провайдер конкретное значение (например , секретный ключ)
  • openPorts : Необязательно - разделенные запятыми значения портов
  • не считать : общее количество ВМ, по умолчанию 1.
После того , как шаблон Machine Compose сохраняется, пользователь может запросить эту машину от Self-Service Library . Пользователь может щелкнуть Настройка , а затем выберите поставщика облако и кластера использовать для инициализации этих Rackspace Cloud Servers.

Развертывание многоуровневой PHP приложения, установленного на Rackspace кластера

После того, как серверы облачными подготовлено, пользователь может развернуть многоуровневую, Docker на основе PHP-приложений на новых серверах Cloud. Это может быть сделано путем перехода к библиотеке Self-Service, а затем нажав на кнопку Настройка, чтобы запросить применение многоуровневой.
Пользователь может выбрать тег окружающей среды (например, DEV или QE) и кластер Rackspace, созданный, прежде чем нажать на Run.

Доступ в-браузер терминалов для функционирования контейнеров

Значок командной строки должна быть доступна рядом с именами контейнеров "на странице Живая Apps. Это позволяет пользователям входить в контейнер с помощью защищенного протокола связи через очереди сообщений агента. Белый список команд может быть определен арендатором администратора, чтобы гарантировать, что пользователи не делают никаких вредных изменений на подножку контейнеров.
Для развертывания PHP, например, мы использовали командную строку, чтобы убедиться, что код PHP действительно под / вар / WWW / HTML / каталог.

Картина

Мониторинг процессора, памяти и утилизации I / O бегущего Контейнеры

После того, как приложение и работает, наши разработчики мониторинг процессора, памяти и ввода / вывода запущенных контейнеров для получения оповещений, когда эти показатели превышают заранее определенный порог. Это особенно полезно, когда наши разработчики выполняют функциональное и нагрузочное тестирование.
Пользователь может выполнить исторический анализ мониторинга и соотнести проблемы с обновлением контейнера или построить развертываний. Это можно сделать, нажав на действия меню запущенного приложения , а затем по мониторингу . Диапазон дат можно выбрать для просмотра процессора, памяти и ввода / вывода исторически.

Включение непрерывной интеграции с использованием автоматизированных App Запуск

Для разработчиков, желающих следовать модели "неизменные" контейнеров путем восстановления изображений Docker, содержащих код приложения и прядение новые контейнеры с каждым обновлением приложения, DCHQ обеспечивает автоматизированную сборку изображения и автоматизированных функций приложения прогонов, которые позволяют разработчикам автоматически создавать Docker изображения из Dockerfiles или частные проекты GitHub, содержащие Dockerfiles, а затем раскручивается полные ЛАМПЫ стеки с использованием новейших изображений путем планирования развертывания приложений и настройки аренды приложений.
Как поясняется в образе сборки Докер разделе , пользователь может запланировать два параллельных сборок для PHP образа (который основан на PHP: 5,6-апач ).
  • последнее : одна сборка будет постоянно переопределить последний тег с последними изменениями , приверженных вашего проекта GitHub
  • {{дата}} или {{}} метка времени : параллельный сборки , которая будет создавать резервные копии всех изображений , созданных с использованием либо отформатированный дату или временную метку для имени тега
Затем пользователь может перейти к Image Строит , а затем нажмите на + кнопку , чтобы создать новую политику "Автоматизированный App Run". Затем пользователь может заполнить необходимые поля - как:
  • Название приложения : имя , которое будет дано приложения , развернутого
  • Аренда : по умолчанию выбирается неограниченный аренды. Однако автоматизированное приложение запуска является наиболее полезным для DEV сред / TEST , где пользователи ожидают уже запущенного приложения последней версии кода каждый раз , когда они идут в офис утром. Для этого, пользователи могут обеспечить аренду 1- й день или 1 недели - в зависимости от их потребностей.
  • Blueprint : пользователь может искать уже созданный шаблон YAML-приложения на основе (или план) - по аналогии с примерами , приведенными в данном проекте.
  • Кластер : это кластер , на котором будет развернуто приложение. Пользователь будет видеть только список кластеров , к которым он / она был предоставлен доступ к.
  • Крон Expression : развертывание приложений может выполняться с помощью этих простых выражений хрон. Например, 0 45 15? * ПН-ПТ будет выпалить развертывание приложения в 3:45 вечера по времени UTC с понедельника по пятницу.
  • Кто может управлять : пользователь может предоставить гранулированных пособий здесь , чтобы диктовать , кто еще может управлять этой политики "App Run".
Картина

Горизонтальное масштабирование PHP-приложения

Если работающее приложение становится ограниченным ресурсом, пользователь может масштабировать приложение для удовлетворения возрастающей нагрузкой. Кроме того, пользователь может планировать масштабирование в рабочее время и в масштабе в выходные дни, например.

Для того, чтобы масштабировать кластер PHP контейнеров от 1 до 2, пользователь может нажать на действия меню запущенного приложения , а затем выберите Scale Out . Затем пользователь может указать новый размер кластера , а затем нажмите на Run Now .

Затем мы использовали BASH плагин для обновления файла httpd.conf Apache HTTP Server, так что это известно о новом сервере приложений добавлен. Баш скрипт плагины также могут быть запланированы для размещения прецедентов, как очистка журналов или обновления конфигураций на определенных частотах.
Чтобы выполнить плагин на работающем контейнере, пользователь может нажать на действия меню запущенного приложения , а затем выберите подключаемые модули . Затем пользователь может выбрать балансировки нагрузки контейнера (HTTP - сервер Apache), поиск подключаемого модуля , который должен быть выполнен, включите перезагрузка контейнера с помощью кнопки переключения. По умолчанию аргумент этого плагина будет динамически решить все контейнер IP-адресов из контейнеров , работающих под управлением PHP и добавить их как часть файла httpd.conf.
Приложение времени линия доступна для отслеживания все изменения, сделанные приложением для аудита и диагностики. Это могут быть доступны из раздвижного меню в нижней части страницы запущенного приложения.
Предупреждения и уведомления доступны, когда контейнеры или хосты вниз или, когда ЦП и памяти Использование либо узлов или контейнеров превышает определенный порог.

Вывод

Containerizing PHP корпоративных приложений по-прежнему является проблемой в основном потому, что существующие рамки состав приложения не учитывают сложные зависимости, внешние объединения или автоматическое масштабирование рабочих процессов пост-положение.
DCHQ, доступен в размещенных и на предпосылке версиях, устраняет все эти проблемы и упрощает контейнеризации предприятия PHP приложений с помощью передовой рамки композиции приложений, которая облегчает переменных среды кросс-изображений привязок, расширяемый Баш скрипт плагины, которые могут быть вызваны в запросить время или пост-положения, а также применение кластеризацию для обеспечения высокой доступности между несколькими хостами или регионах с поддержкой автоматического масштабирования.
Регистрация бесплатно на http://DCHQ.io или скачать DCHQ на предпосылке  
чтобы получить доступ к выполненной из коробки шаблонов многоуровневая PHP приложений наряду с функциональностью управления жизненным циклом приложений, таких как мониторинг, обновление контейнеров, шкала в / из и непрерывной доставки.


No comments:

Post a Comment