Zend Technologies — это компания, которая финансирует разработку Zend Engine (движка, на котором основан PHP), а также Zend Framework и некоторых других проектов, таких как Apigility . Они также создают проприетарное программное обеспечение высокого профессионального уровня, предназначенное для работы с PHP с высокой интенсивностью в крупных компаниях — программное обеспечение, такое как Zend Studio и Zend Server, — хотя оба они являются отличными инструментами для индивидуальных разработчиков. В этом посте мы рассмотрим последнее.
Что такое Zend Server?
Zend Server — это, по сути, локально запускаемое веб-приложение, которое помогает вам запускать, развертывать, отлаживать и готовить другие приложения, которые вы пишете. Это не просто помощник разработчика — вы можете установить его на свои производственные серверы и позаботиться о хостинге, кластеризации, распространении файлов и многом другом.
Он автоматически устанавливает Zend Framework (по какой-то причине версии 1 и 2) и Symfony 2 и поддерживает управление другими библиотеками и проектами на основе графического интерфейса для полной простоты использования. Поддерживаются все операционные системы и платформы, и вы можете установить их вместе с Apache или Nginx — на ваш выбор. Вы можете использовать его в PHP версии 5.4 или 5.5, а все остальное сделает самостоятельно после запуска сценария установки.
Последняя версия ZS, версия 7, поставляется с несколькими лицензиями и разновидностями , поэтому ознакомьтесь с ними, если хотите узнать о различиях.
Концепция Zend Server может быть слишком абстрактной, чтобы понять ее прямо сейчас, если вы никогда не сталкивались с ней раньше, поэтому давайте просто пройдемся по ней.
Установка Zend Server
Установка выполняется с помощью их установщика, который зависит от платформы. Чтобы установить его в Ubuntu 14.04, ознакомьтесь с нашим кратким советом . Если вы хотите следить за ходом работы, сделайте это сейчас. Это не должно занять более 10 минут.
Если вы работаете в операционной системе Linux и не следовали нашему краткому совету, не забудьте изменить разрешения для файла журнала, как описано здесь . Это необходимо для Zend Server, чтобы иметь доступ к журналу, и чтобы он мог порождать виртуальные хосты.
Характеристики
Давайте более подробно рассмотрим ZS и рассмотрим его возможности.
графический интерфейс пользователя
Передняя часть очень быстро — на удивление так. Даже при полной перезагрузке страницы экраны загружаются так быстро, что можно простить, что это Ajax. Быстрое динамическое меню украшает верхнюю часть панели управления, и хотя оно может использовать обновления в отделе дизайна, оно четко отображает доступные опции. Я мог бы назвать десятки случаев, когда мне хотелось бы, чтобы мне не приходилось заходить в бэкэнд компании, просто из-за медленного времени загрузки, которое меня ждет. Благодаря тому, что интерфейс работает так плавно, хочется его использовать.
Как вы можете видеть на рисунке выше, первый экран, который приветствует нас, — это страница руководства экрана обзора с некоторыми полезными руководствами и видео. Нижняя половина даст вам подсказки о том, что нужно отрегулировать дальше, относительно конфигурации PHP и остального, и приложение уведомит вас с помощью модального всплывающего окна, когда потребуется перезагрузка сервера (например, после включения некоторых расширений PHP, например) , Пролистав опции «Что дальше», вы заметите, что они обычно повторяются, и к ним также можно получить доступ через главное меню. Например, вы можете получить доступ к управлению виртуальным хостом через PHP & WEB SERVER
, а также через Applications -> Virtual Hosts
.
Посмотрите в верхнем меню, чтобы получить представление обо всех других опциях — их, конечно, слишком много, чтобы посмотреть в одном посте.
Управление библиотекой
Одна особенность, которая не должна остаться незамеченной, — Управление библиотекой Этот интерфейс, доступный через Applications -> Libraries
, позволяет вам добавлять новые библиотеки в среду Zend Server, обновлять их по мере выхода исправлений и, возможно, лучше всего, делать их доступными на всех серверах для всех приложений. Они автоматически добавляются в путь включения, и вы можете использовать их в своих проектах.
Вы можете подумать, что это замедлит работу вашего приложения из-за наличия еще одного огромного пути для включения, но вы ошибаетесь. Чтобы фактически использовать развернутую библиотеку в вашем проекте, вам нужно вставить вызов API, как описано здесь . Обратите внимание на значение «Путь к библиотеке» на рисунке выше — включение его в ваш проект автоматически включает его.
Очевидно, что это довольно сильно связывает ваше приложение с Zend Server — тема, созревшая для другого обсуждения, поскольку у нее есть свои плюсы и минусы.
Z-Ray
Z-Ray отслеживает запросы к веб-серверу и отображает актуальную, актуальную и подробную информацию о компоненте веб-страницы в вашем браузере. Эта информация включает в себя: время выполнения запроса, события, записи журнала, запросы к базе данных, функции и многое другое. Используя Z-Ray, разработчики получают реальное представление о своем PHP-коде, что позволяет им проверять, отлаживать и оптимизировать свои страницы, что приводит к быстрым и стабильным приложениям.
Внедрение Zend в режиме реального времени позволяет Z-Ray отслеживать ваши запросы по мере их поступления и предоставлять в реальном времени актуальную информацию о том, что происходит внутри компании. Вы сможете легко определить самые медленные части вашего приложения, вы увидите ошибки еще до того, как PHP зарегистрирует их, и вы сможете точно настроить свое приложение, как никогда раньше.
Чтобы узнать больше о Z-Ray, посмотрите здесь или подождите, пока выйдет наш обзор.
Веб-API
Впечатляет, что Zend Server полностью поддерживает веб-API. Это означает, что вы можете создавать для него новые интерфейсы на любом языке и в любом удобном для вас стиле — даже в мобильных приложениях для этого — и управлять развернутыми приложениями Zend Server из любого места.
Эту функцию вы не часто видите, если вообще используете, в серверных интерфейсах для приложений и управления приложениями, поэтому я был приятно удивлен, столкнувшись с ней.
Пользовательские расширения PHP
Что если я захочу использовать собственное расширение PHP? Как мы можем это осуществить? Это вообще возможно? Возможно, я бы хотел создавать свои приложения с использованием Phalcon, но все же продолжать управлять ими с помощью Zend Server, смешивая лучшее из двух миров.
Хорошая новость — это возможно. Однако это немного выходит за рамки этой статьи, поэтому взгляните на Quick Tip, который мы написали именно для этой цели.
Развертывание приложений
Давайте посмотрим, как легко начать развертывание приложений с Zend Server 7.
Подготовленное приложение
Есть несколько готовых приложений, которые ZS умеет устанавливать. Например, чтобы узнать, как установить PhpMyAdmin, прочитайте необязательный шаг 5 нашего « Быстрого совета» — для его запуска потребуется около одной минуты.
Демо-приложение
Zend Server также предлагает установку демонстрационного приложения Zend Framework 2. Чтобы установить его, мы нажимаем общую кнопку «Развернуть сейчас» и следуем инструкциям.
В качестве имени хоста я выбрал test.app
, хост, который я определил некоторое время назад для всех экспериментов с виртуальными test.app
. Я рекомендую вам добавить некоторые экспериментальные имена хостов в файл hosts вашего хоста, чтобы вы могли жить без хостов, играя с Vagrant и определяя приложения с коротким сроком службы.
После развертывания вы сможете получить доступ к демонстрационному приложению ZF2 через хост: 8000 или, в моем случае, так:
Пустое приложение
Что если нам нужно пустое приложение? Всегда ли нам нужно использовать шаблоны? Нет. Существует два типа приложений, которые вы можете добавить в интерфейс управления ZS. Далее мы рассмотрим их, но сначала перейдем в Applications -> Apps
в графическом интерфейсе — вы должны увидеть два варианта на скриншоте ниже.
Добавление установленного приложения (Определить)
Определить приложение позволит вам указать ZS на существующее и работающее приложение PHP. Приложение может, но не обязательно должно быть на этом сервере — удаленные приложения также могут быть добавлены. Однако важно отметить, что определение приложения не ставит его в зависимость от ZS, и поэтому ZS не может управлять им (развертывание, чтение журналов, переустановка, отладка и т. Д.). Он просто присутствует в качестве «еще живого» средства проверки для другого приложения (обратите внимание на URL проверки работоспособности — этот URL проверяется и сообщает о любых возникших проблемах).
Давайте добавим Google.
Это не очень весело, хотя. Давайте посмотрим на развертывание. Если вы хотите узнать больше об определении, смотрите здесь .
Развертывание нового приложения (Deploy)
Развертывание приложения — это значительно более сложное, увлекательное и полезное занятие. Во-первых, нам нужен пример приложения где-нибудь на сервере. Давайте пойдем со скелетным приложением Laravel.
Чтобы использовать командную строку PHP, поставляемую с ZS7, нам нужно добавить ее в наш путь. В виртуальной машине в терминале выполните следующее:
echo "PATH=\"/usr/local/zend/bin:\$PATH" \" >> ~ /.profile source ~/ . profile php -- version
Если вы получили хороший вывод версии для PHP, а не ошибку «команда не найдена», все готово. Теперь давайте установим Composer глобально и запустим проект Laravel.
cd ~ /Code curl -sS https:/ / getcomposer . org / installer | php sudo mv composer . phar / usr / local / bin / composer composer create - project laravel / laravel test2 . app -- prefer - dist
Вы можете быстро проверить правильность рендеринга, выполнив php public/index.php
.
Чтобы иметь возможность развернуть это приложение на Zend Server, нам нужно превратить его в развертываемый пакет .
cd ~/ Code zdpack create laravel - package
zdpack — это упаковщик, который с помощью команды create создает необходимые нам подпапки пакета в папке laravel-package. Теперь нам нужно переместить код приложения Laravel в подпапку данных:
mv test2 . app /* laravel-package/data/
Затем рекомендуется отредактировать файл deployment.xml
. Он содержит такие данные, как имя и описание проекта, учетные данные подключения к базе данных и другие метаданные. Единственное, что нам нужно изменить, это узел docroot
— установите для него значение data/public
вместо data
. Смотрите полный список доступных узлов здесь .
Проверьте измененный XML-файл с помощью zdpack validate deployment.xml
, и, если все пойдет хорошо, упакуйте его в
cd ~/ Code zdpack pack laravel - package
Это создаст файл laravel-package.zpk
который вы можете загрузить через всплывающее окно «Развертывание» в графическом интерфейсе Zend Server:
Если вы пройдете через мастер, приложение должно успешно развернуться, но запуск через браузер все равно не будет работать. Что дает?
Отладка
Давайте использовать эту возможность для устранения проблемы. Зайдя в Dashboard и выбрав «laravel-package» или как бы вы ни назвали свое приложение, вы увидите, что оно состоит из 100% ошибок. Похоже, что он пытается сделать некоторые файловые операции, но не удается.
Очевидно, мы имеем дело с некоторыми ошибками разрешения файла. Фактически, если мы посмотрим на трассировку стека, то увидим, какой именно файл пытается создать приложение:
Чтобы облегчить это, нам нужно выполнить некоторые исправления прав доступа. В разделе «Виртуальные хосты» ZS вы можете легко узнать, где находится каждое приложение в файловой системе. Вооружившись этими знаниями, мы можем выполнить команду:
sudo chmod 777 - R / usr / local / zend / var / apps / http / test2 . app / 80 / 0.1 _7 / app / storage
Обратите внимание, что полное разрешение (777), вероятно, не является оптимальным путем с точки зрения безопасности, поэтому держите его только в разработке. В работе вы должны убедиться, что пользователь, который Zend запускает PHP, является владельцем папки app/storage
. Перезагрузите URL нашего тестового приложения Laravel и обратите внимание, что оно работает как шарм:
Вывод
Zend Server 7 — это многофункциональный пакет для управления, развертывания, распространения и отладки приложений PHP. В некотором смысле, оно привязывает ваше приложение к себе, поэтому, как только вы перейдете на ZS, вы не вернетесь назад — как в HHVM. Однако стоит ли того, чтобы дополнительные функции того стоили, решать вам. Вы предпочитаете простоту развертывания и отладки или предпочитаете, чтобы ваше приложение было на 100% мгновенно переносимым?
В любом случае, ZS — находка для любого администратора, отвечающего за несколько проектов, и я определенно буду тестировать его возможности в ближайшие месяцы. Ты присоединишься ко мне? Хотите сделать попытку и сообщить о потенциальных проблемах и / или важных функциях, которые мы пропустили? Ждем ваших комментариев!