Дэниел Крук
В данной статье описываются привлекательные стороны облачных вычислений для PHP-разработчиков и приводятся пошаговые инструкции быстрой организации среды разработки для PHP и DB2 в IBM Cloud. Узнайте, как развернуть сервер данных Linux и сервер Web-приложений, подключиться к виртуальным машинам по протоколу SSH, использовать перенаправление X-интерфейса для установки предварительно настроенного PHP-дистрибутива и протестировать подключение к DB2.
Введение
IBM Development and Test Cloud - это открытый IaaS-сервис, предназначенный для создания и тестирования приложений. Эта облачная платформа предоставляет доступ к различным образам серверов Linux и Windows с предустановленным программным обеспечением IBM. Для развертывания, настройки и обслуживания этих виртуальных машин можно использовать Web-приложения, мобильные приложения, приложения командной строки или специализированные приложения. При установке, выполнении и тестировании приложений к ним можно обращаться по протоколам SSH, HTTP или FreeNX.
Наибольшие риски при планировании даты завершения и общего качества проекта связаны со временем и стоимостью настройки традиционной инфраструктуры разработки и тестирования, состоящей из физических серверов. Платформа IBM Development and Test Cloud значительно снижает эти риски. Вместо приобретения компьютеров и установки операционных систем и программного обеспечения промежуточного уровня (процесс, подверженный ошибкам) можно использовать платформу IBM Cloud, позволяет снизить риски и затраты, предоставляя легко и быстро развертываемые предварительно настроенные виртуальные серверы.
Помимо этих преимуществ, в статье рассматриваются привлекательные стороны облачных вычислений для PHP-разработчиков и приводятся пошаговые инструкции по настройке тестовой PHP-среды в IBM Cloud. Показано, как развернуть два экземпляра, имитирующие типичную двухуровневую тестовую среду, состоящую из сервера базы данных и сервера приложений:
- Операционная система Linux с сервером базы данных DB2.
- Операционная система Linux с клиентом DB2, установленным и работающим на сервере Zend Server, и предустановленный PHP-дистрибутив с графическим интерфейсом для Web-приложений.
Пример, рассматриваемый в данной статье, показывает, насколько ускоряется настройка всей топологии системы при использовании IBM Cloud по сравнению с приобретением, настройкой и установкой двух физических машин.
Преимущества для PHP-разработчиков, предоставляемые IBM Cloud
Платформа IBM Development and Test Cloud помогает ускорить выпуск приложений, уменьшить количество ошибок и расширить рынок сбыта по сравнению с альтернативными облачными и физическими средами разработки и тестирования.
Почему бы не использовать образы IBM на EC2?
На Amazon EC2 имеется несколько предустановленных образов программного обеспечения IBM промежуточного уровня. Их тоже можно использовать для разработки приложений, но платформа Development and Test Cloud имеет ряд преимуществ:
- Первоклассная поддержка IBM и поставщиков операционных систем.
- Детальное управление по сети, в том числе управление использованием ресурсов.
- Простота создания специализированных образов системы.
Центром этой системы является каталог корпоративных образов систем Linux или Windows, заранее настроенных на использование программного обеспечения IBM. Экземпляр, созданный из образа, позволяет монтировать постоянный диск, назначать экземпляру IP-адреса и обращаться к нему, используя аутентификацию с открытыми ключами по протоколу SSH.
Кроме того, пользователь может сохранять свои специализированные экземпляры системы в закрытом каталоге образов, что позволяет повторно использовать, тестировать и воссоздавать конфигурации.
Все эти ресурсы можно быстро развернуть и организовать в топологию, соответствующую потребностям PHP-приложения.
Платформа IBM Development and Test Cloud позволяет решать разнообразные проблемы, с которыми сталкиваются все разработчики PHP-приложений, включая корпоративных и независимых программистов, студентов и писателей, системных администраторов и архитекторов.
Вот несколько конкретных сценариев, в которых применение этой облачной среды помогает достичь поставленных целей.
- Проверка среды развертывания
- Облачная среда помогает документировать действия по развертыванию на ранних этапах процесса. Ее можно также использовать для настройки тестовой конфигурации, чтобы выполнить проверку системы на соответствие взаимосогласованным требованиям на более ранних этапах цикла разработки, до выпуска окончательной версии продукта. Вы будете точно знать, что именно нужно развернуть в облаке, снизив таким образом риск возникновения ошибок и неправильного конфигурирования. Например, может возникнуть необходимость оценить, будет ли приложение лучше работать в одной версии PHP-дистрибутива, чем в другой, либо вы можете захотеть проверить процесс публикации (начиная с наладки и заканчивая внедрением) или конфигурацию репликации между двумя серверами баз данных MySQL.
- Ускорение инноваций и поощрение экспериментирования
- Облачная среда позволяет разработчикам менять платформы и сравнивать их между собой. Разработчики могут свободно проверять идеи вне основной ветки кода, не затрагивая стабильные конфигурации. Например, при оценке возможности перехода на другую версию PHP-среды, такой как новый проект Lithium, создание в облаке отдельного виртуального экземпляра PHP 5.3 с MongoDB может оказаться более быстрым и менее разрушительным решением по сравнению с настройкой аналогичной конфигурации на существующем физическом сервере.
- Решение проблем производительности и захвата ресурсов
- Допустим, вы столкнулись с проблемой производительности и хотите модифицировать свою систему и поскорее протестировать решение, но не хотите вносить значительные изменения в процесс разработки и наладки. Теперь для выполнения такого тестирования можно использовать IBM Cloud. Можно записать действия по установке и проверить планы возврата к предыдущей конфигурации. Например, можно оценить и протестировать несколько возможных конфигураций, используя облачную инфраструктуру, а не физические системы. Кроме того, имея каталог сохраненных собственных образов, можно быстро выполнить повторное тестирование или локализовать проблемы конкретных конфигураций.
- Усовершенствование проектов с открытыми исходными кодами
- Если вы поддерживаете PHP-инфраструктуру с открытыми исходными кодами, вам необходимо иметь стабильный продукт, работающий на как можно большем числе платформ. Допустим, вы получили отчет об ошибке от пользователя конкретной конфигурации. Используя IBM Cloud, вы легко можете воспроизвести среду пользователя для идентификации источника ошибок. Например, если пользователь сообщил о проблеме с версией SUSE Linux Enterprise Server, а у вас есть только Ubuntu или Fedora, вы можете быстро создать экземпляр SLES с вашей интегрированной средой для проверки сообщения об ошибке. Кроме того, после выполнения такого теста можно расширить список поддерживаемых платформ, создав несколько образов корпоративных Linux-конфигураций в личном каталоге.
- Повышение квалификации и расширение знаний
- Среда IBM Cloud будет полезна также составителям технической документации, студентам, преподавателям и отраслевым аналитикам благодаря возможности работы с новым программным обеспечением и проведения экспериментов с программами, нужными им только на ограниченный период времени. Если у подобного пользователя есть проект, который необходимо завершить в жесткие сроки, но нет желания приобретать или устанавливать полные системы с нуля, ответом может быть IBM Cloud.
Теперь, когда вы узнали, какие выгоды предоставляет платформа IBM Development and Test Cloud различным категориям пользователей PHP, давайте настроим среду разработки и тестирования PHP-приложений в IBM Cloud.
В начало
Развертывание сервера данных Linux
Каталог образов
Каталог доступных образов серверов постоянно меняется и содержит регулярные обновления программного обеспечения IBM наряду с соответственно обновляемыми образами ПО. Если вы не найдете образы с точно такими же названиями, которые используются в статье, используйте похожие версии.
Для сервера данных выберите в каталоге сервер Red Hat Enterprise Linux с предустановленной системой управления базами данных DB2. Экземпляр Web-сервера мы создадим позднее, когда будем устанавливать PHP и подключаться к серверу, поэтому никакой специальной настройки пока не требуется.
- Войдите в приложение Development and Test и выберите вкладку Control Panel (панель управления). Нажмите кнопку Add Instance.
Рисунок 1. Кнопка Add Instance панели управления
- Выберите в каталоге DB2 Enterprise Developer Edition 9.7.1 64bit.
Рисунок 2. Выбор образа DB2
- Укажите название и сгенерируйте (при необходимости) пару из открытого и закрытого ключей. Я назвал этот экземпляр dW DB2 data server и выбрал сгенерированный мною открытый ключ dW. Для доступа к данному экземпляру вместо имени пользователя и пароля используйте соответствующий закрытый ключ на вашей рабочей станции.
Рисунок 3. Настройка образа DB2
- Установите пароли для трех учетных записей пользователей, как требует DB2.
Рисунок 4. Настройка паролей DB2
- Подтвердите конфигурацию экземпляра.
Рисунок 5. Проверка конфигурации экземпляра
- Прочтите лицензионное соглашение и нажмите кнопку Next.
Рисунок 6. Лицензионное соглашение
- Убедитесь, что запрос на экземпляр отправлен.
Рисунок 7. Запрос на экземпляр успешно отправлен
Это все, что нужно сделать для запуска экземпляра, используемого как сервер базы данных. Можно вызвать панель управления, на которой должно быть видно, что экземпляра развернут и запущен. После загрузки системы сразу начинает работать DB2.
Развертывание Linux-сервера Web-приложений
Создайте еще один экземпляр из того же образа и установите Zend Server Community Edition. Это простейший способ обеспечить установку и доступность DB2-клиента, который необходим PHP-драйверу.
- Войдите в приложение Development and Test и выберите вкладку Control Panel (панель управления). Нажмите кнопку Add Instance.
- Выберите в каталоге тот же образ DB2 Enterprise Developer Edition 9.7.1 64bit.
- Укажите его название и сгенерируйте необходимые ключи. Я назвал этот экземпляр dW Zend Web server и выбрал открытый ключ dW.
- Укажите пароли DB2.
- Подтвердите конфигурацию.
- Прочтите лицензионное соглашение.
- Нажмите кнопку Next и дождитесь подтверждения.
За состоянием запроса экземпляра можно следить в панели управления. Она показывает, что после загрузки экземпляра DB2-клиент установлен и находится в рабочем состоянии.
Преобразование закрытого ключа и подключение к серверу по SSH
После создания экземпляра сервера Web-приложений можно войти в него и установить Zend Server Community Edition.
Совет: повторное использование конфигурации сеанса PuTTY
Сеанс PuTTY, который мы настроим ниже, можно будет повторно использовать в других экземплярах, для чего нужно загрузить его, изменить поле Host name на название нового хоста, переименовать его и нажать кнопку Save.
Дальнейшие действия предполагают использование Windows для SSH и перенаправления X. Если используется другая платформа, необходимо установить эквивалентные инструментальные средства.
- При создании рассмотренных выше экземпляров образов можно сгенерировать пару из открытого и закрытого ключей для подключения к серверам без указания имени пользователя и пароля. Необходимо преобразовать загруженный на рабочую станцию закрытый ключ из формата OpenSSH в формат PuTTY, используя генератор ключей PuTTY - PuTTYgen. Откройте PuTTYgen и выберите File > Load private key.
Рисунок 8. Преобразование закрытого ключа
- Отобразится сообщение о том, что ключ имеет формат OpenSSH. Нажмите OK.
Рисунок 9. Загруженный закрытый ключ OpenSSH
- Нажмите кнопку Save private key и выберите новое местоположение для преобразованного файла. Чтобы подтвердить сохранение преобразованного ключа без идентификационной фразы (passphrase), нажмите кнопку Yes.
Рисунок 10. Сохранение преобразованного ключа
- Установите и настройте XMing. Эта программа должна запускаться автоматически. Если это не так, нажмите на пиктограмму Xming.
- Настройте PuTTY на вход в экземпляр с использованием SSH. Добавьте имя хоста, которое отображалось в панели управления после развертывания экземпляра. Нажмите кнопку Save, а затем Load.
Рисунок 11. Настройка PuTTY
- В поле Auto-login username раздела Connection...Data установите для имени пользователя значение idcuser.
Рисунок 12. Установка имени пользователя
- Выполните импорт своего закрытого ключа на экране SSH...Auth и найдите файл закрытого ключа, преобразованного ранее.
Рисунок 13. Импорт закрытого ключа
- Наконец, настройте перенаправление X для просмотра интерфейса X Windows Linux-сервера из вашей настольной системы Windows. На экране SSH...X11 отметьте флажок X11 forwarding и введите
localhost:0
в поле X display location.
Рисунок 14. Настройка X forwarding
- Теперь вернитесь на вкладку Session и нажмите кнопку Save, а затем кнопку Open. Нажмите кнопку Yes в окне PuTTY Security Alert и примите ключ хоста экземпляра, поскольку вы впервые подключаетесь к этому серверу.
- Отключите сетевой экран, чтобы разрешить перенаправление X-интерфейса. Затем проверьте работу X Windows, используя простой тест с xclock:
Листинг 1. Отключение сетевого экрана и запуск xclock
$ sudo /etc/init.d/iptables stop
$ xclock
|
Рисунок 15. Отключение iptables и тестирование X forwarding
В начало
Установка предварительно настроенного дистрибутива PHP
- После регистрации и настройки графического интерфейса загрузите Zend Server Community Edition (Zend Server CE (PHP 5.3) 5.0.3 (64 bit) (TAR.GZ) 55.95 МБ). Дополнительная информация о Zend Server приведена на странице продукта Zend.
Листинг 2. Загрузка и установка Zend Server
$ mkdir src
$ cd src
$ wget http://www.zend.com/download/353?start=true
$ tar - xvzf ZendServer-CE-php-5.3.3-5.0.3-linux-glibc23-x86_64.tar.gz
$ cd ZendServer- 5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64/
$ sudo su -
# cd /home/idcuser/src/ZendServer-5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64/
# ./install.sh
|
Подождите некоторое время, пока система завершит установку. Через несколько минут отобразится следующий экран:
Рисунок 16. Установка Zend Server
- Наберите команду
exit
для выхода из root shell и продолжите сеанс idcuser, а затем запустите Web-браузер Firefox. Вы не сможете запускать любые окна от имени root, поскольку перенаправление X настроено в PuTTY только для idcuser.
Листинг 3. Запуск Firefox от имени idcuser
# exit
$ firefox https://localhost:10082/ZendServer
|
Поскольку Zend Server работает по протоколу HTTPS с самоподписанным сертификатом, для просмотра страницы необходимо при запросе добавить исключение. После запуска Firefox отобразится страница End User License Agreement. Прочите ее и нажмите кнопку Next.
Рисунок 17. Zend Server EULA
- На второй странице установите пароль консоли, повторите его и нажмите кнопку Next.
- На третьей странице при желании можете указать свой адрес электронной почты, если хотите подписаться на рассылку Zend Server Community Edition. Нажмите Finish.
- Отобразится инструментальная панель Zend Server Dashboard. В нее уже включены (и готовы к использованию) наиболее часто используемые расширения. Включено также расширение DB2 driver, но его необходимо активировать.
- Выберите вкладку Server Setup, затем ссылку Extensions и найдите ibm_db2. Нажмите кнопку Turn On.
Рисунок 18. Расширение ibm_db2
- В новом сеансе PuTTY укажите среду DB2 для Web-сервера Apache и измените порт по умолчанию на 80, а затем перезапустите все демоны Zend Server.
- Отредактируйте файл конфигурации Apache и измените строку
Listen 10088
на Listen 80
.
Листинг 4. Изменение порта в файле httpd.conf
$ sudo su -
# vi /usr/local/zend/apache2/conf/httpd.conf
|
- Среду DB2 необходимо использовать в качестве источника данных при каждом старте Apache. Чтобы PHP-драйвер нашел DB2, необходимо указать путь в Apache. После открытия файла добавьте строку
./home/db2inst1/sqllib/db2profile
в любое место после первой строки.
Листинг 5. Изменение apachectl для работы со средой DB2
# vi /usr/local/zend/apache2/bin/apachectl
|
- Перезапустите все процессы Zend Server из командной строки. Нажатия кнопки Restart PHP в графическом интерфейсе недостаточно.
Листинг 6. Перезапуск процессов Zend Server
# /usr/local/zend/bin/zendctl.sh restart
|
- Откройте новую вкладку в существующем окне Firefox и введите в адресной строке
http://localhost/
. Должен отобразиться экран Zend Server Test Page.
Рисунок 19. Zend Server Test Page
В начало
Тестирование подключения
- В заключение мы создадим простой PHP-сценарий для тестирования корректности настройки подключения к DB2. Я создам приведенный ниже PHP-сценарий в каталоге /var/www/html. Он просто подключается к серверу данных для тестирования соединения.
Листинг 7. Изменение apachectl для работы со средой DB2
# vi /usr/local/zend/apache2/htdocs/db2info.php
|
Листинг 8. PHP-сценарий для подключения к DB2
<?php
$username = 'db2inst1';
$password = 'passw0rd';
$database = 'sample';
$hostname = 'vhost0323.developer.ihost.com';
$port = '50001';
$conn_string =
"DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
"HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP" .
"UID=$username;PWD=$password";
$conn_resource = db2_connect($conn_string, '', '');
if ($conn_resource) {
echo 'Connection to database succeeded.';
db2_close($conn_resource);
} else {
echo 'Connection to database failed.<br />';
echo 'SQLSTATE: ' . db2_conn_error() . '<br />';
echo 'Message: ' . db2_conn_errormsg(). '<br />';
}
?>
|
- После сохранения этого файла вы должны увидеть следующий экран при загрузке страницы http://localhost/db2info.php в браузере:
Рисунок 20. Успешное подключение из PHP к DB2
Поздравляю - теперь у вас есть два виртуальных сервера, настроенных на поддержку Web-приложений, использующих PHP и DB2! Действия по созданию данной системы применимы для любых виртуальных серверов, которые вы решите создать в будущем.
В начало
Заключение
Из этой статьи вы узнали:
- какие возможности предлагают облачная среда и SmartCloud Enterprise разработчикам PHP-приложений;
- как быстро создать типовую среду разработки и тестирования PHP-приложений в IBM Cloud.
Настроив и запустив PHP в облаке, можно реализовать любой рассмотренный в статье сценарий:
- проверить среду развертывания;
- ускорить инновации и поощрить экспериментирование;
- решить проблемы производительности и захвата ресурсов;
- развить проект с открытыми исходными кодами;
- повысить квалификацию и расширить знания.
Изучите приведенные ниже ресурсы с дополнительной информацией о разработке PHP-приложений в облаке и приступайте к работе с IBM SmartCloud Enterprise.