Статьи

Nginx, PHP5.5 и Phalcon на OpenShift

Похоже, что облачные среды развертывания все в моде в эти годы — от AWS до Google App Engine, от Windows Azure до DigitalOcean и других приложений, которые появляются каждый месяц. Во всех этих средах важно иметь возможность развертывать необходимое программное обеспечение.

В этом уроке, адаптированном к пошаговой процедуре проб и ошибок duythien , и с его полным благословением мы рассмотрим процедуру установки Phaclon в еще одной среде: OpenShift . Процедура кровавая — OpenShift не облегчает нам развертывание пользовательских сред, но это того стоит.

Примечание: репо, использованный в этом примере, изначально был клонирован из Boekkooi . Он постоянно обновляет свое начальное репозиторий Openshift, поэтому, если вам нужно быстро запустить и запустить собственную среду OpenSift для PHP + Nginx, используйте его оригинал, а затем просто подключите процедуру Phalcon к миксу.

Начиная

Создайте учетную запись на OpenShift . Они предлагают бесплатный уровень, которым мы воспользуемся.

Как обычно бывает в облачных средах, OpenShift также имеет свои собственные инструменты. Следуйте процедуре установки инструментов RHC. Я выбрал «spphalcon» в качестве пространства имен во время заключительной части rhc setup .

Под https://openshift.redhat.com/app/console/applications выберите «Создайте свое первое приложение сейчас» и выберите «Сделай сам» — опция должна быть в нижней части экрана.

Дайте приложению имя — на этом этапе вы заметите, что пространство имен, которое вы ранее определили в настройке rhc, отражается в общедоступном URL вашего приложения.

Примечание: «сервер» в OpenShift называется картриджем.

Создание и клонирование приложения

После того, как вы нажмете «Создать приложение» и подождите несколько минут, на следующем экране отобразятся инструкции по загрузке и изменению кода для вашего приложения.

Клонируйте код, используя эти инструкции сейчас.

Помощник репо

Когда клонирование закончено, войдите в папку с помощью cd phalcon и cd phalcon другой репозиторий внутри первого:

 git clone https://github.com/duythien/openshift-diy-nginx-php 

Войдите в эту вновь созданную папку и скопируйте папку .openshift в родительскую папку — папку, в которой содержится основной код приложения, который вы ранее клонировали. Вас могут попросить перезаписать некоторые файлы — принять все перезаписи.

 cd openshift-diy-nginx-php cp -R .openshift ../ 

Нам также необходимо обновить разрешения в соответствии с инструкциями исходного репозитория :

 git update-index --chmod=+x -- $(git ls-files .openshift/action_hooks/*) 

Вы можете удалить каталог openshift-diy-nginx-php, он нам больше не нужен. Нам нужна была .openshift подпапка .openshift .

Теперь добавьте изменения, зафиксируйте и нажмите:

 git add -A git commit -am 'Added .openshift folder' git push 

То, что инициируется после этого шага, называется процессом сборки, и ваше DIY-приложение будет остановлено, чтобы прочитать содержимое папки .openshift и соответственно отреагировать. В нашем случае речь идет о создании серверной среды nginx. Этот процесс сборки может занять некоторое время, так как некоторые люди отчитываются более часа ожидания. Это потому, что все устанавливаемое нами программное обеспечение создается из исходного кода, а не из менеджеров пакетов.

Также были сообщения об отключении OpenShift во время сборки из-за тайм-аута. Если это произойдет, просто внесите произвольное изменение в файл README или что-то такое же незначительное, зафиксируйте и снова нажмите.

Когда сборка будет завершена, вы можете убедиться, что все работает, создав web папку в корневом каталоге вашего приложения и index.php в нее файл index.php с содержимым:

 <?php phpinfo(); 

Подтвердите, нажмите, и вы сможете открыть URL своего приложения в браузере и увидеть экран информации PHP.

Phalcon

Теперь наступает сложная часть, за которой следует грубая хакерская атака, чтобы запустить Phalcon.

SSH в ваш картридж, следуя rhc domain show на панели управления вашего приложения, или узнав URL SSH с rhc domain show .

Затем введите app-root/runtime/repo и клонируйте репозиторий cphalcon в этой папке.

 cd app-root/runtime/repo git clone http://github.com/phalcon/cphalcon.git 

Найдите расположение каталога PHP bin. Обычно он находится в $OPENSHIFT_RUNTIME_DIR/php5/bin . Попробуйте войти в него, чтобы увидеть, работает ли он. Если все хорошо, введите каталог build ранее клонированного cphalcon.

 cd && cd app-root/runtime/repo/cphalcon/build 

Откройте install файл с помощью текстового редактора, такого как vi или vim, и замените все ссылки на phpize на $OPENSHIFT_RUNTIME_DIR/php5/bin/phpize или $OPENSHIFT_RUNTIME_DIR/php5/bin/phpize местоположение, которое вы нашли для своего собственного приложения, если оно не идентично моему. Ссылки phpize должны быть внизу файла. Кроме того, добавьте параметр --with-php-config=$OPENSHIFT_RUNTIME_DIR/php5/bin/php-config в строку конфигурации. По сути, вы должны заменить этот блок:

 #Clean current compilation if [ -f Makefile ]; then make clean phpize --clean fi #Perform the compilation phpize && ./configure --enable-phalcon && make && make install && echo -e "\nThanks for compiling Phalcon!\nBuild succeed: Please restart your web server to complete the installation" 

с этим

 #Clean current compilation if [ -f Makefile ]; then make clean $OPENSHIFT_RUNTIME_DIR/php5/bin/phpize --clean fi #Perform the compilation $OPENSHIFT_RUNTIME_DIR/php5/bin/phpize && ./configure --enable-phalcon --with-php-config=$OPENSHIFT_RUNTIME_DIR/php5/bin/php-config && make && make install && echo -e "\nThanks for compiling Phalcon!\nBuild succeed: Please restart your web server to complete the installation" 

Что мы делаем здесь, так это phpize что phpize из только что установленного php5.5 запущен, явно заявив, что мы этого хотим. Таким образом, cphalcon создается для нашей версии PHP с нашей конфигурацией PHP.

После этого просто запустите ./install . Sudo не разрешен для картриджей OpenShift, но пользователь, с которым вы работаете в SSH, настолько близок к root, насколько это возможно.

Давайте теперь добавим его в файл php.ini .

 cd $OPENSHIFT_RUNTIME_DIR vim etc/php5/php.ini 

Найдите блок, где перечислены расширения. Используйте шаблон поиска vim: нажмите косую черту (/) и введите «extension =» и Enter, это приведет вас к блоку на скриншоте ниже. Добавьте «extension = phalcon.so» в конец блока, и пока вы там, прокрутите немного вниз и добавьте также часовой пояс.

Нам нужно перезагрузить наш картридж сейчас, чтобы перезагрузить эти изменения. Вы делаете это, пробивая ctl_app restart то время как SSHed к коробке.

Изменить: вы можете столкнуться с проблемой после этого сказать что-то вроде

 "PHP Warning: PHP Startup: Unable to load dynamic library '/path/to/extensions/phalcon.so' - /path/to/extensions/phalcon.so: undefined symbol: output_globals in Unknown on line 0". 

,

Чтобы это исправить, перекомпилируйте Phalcon, следуя приведенным здесь инструкциям, или другими словами, сделайте следующее:

 cd cphalcon/build/64bits make clean phpize --clean /path-to-php/bin/phpize ./configure --with-php-config=/path-to-php/bin/php-config make && make install 

Спасибо Алексею Бакулину за этот совет!

Перепроверьте URL вашего приложения, и вы должны увидеть Phalcon на экране информации PHP.

Настройка Nginx

Последний шаг — настройка Nginx для перезаписи URL, поэтому мы можем развернуть приложение Phalcon. Мы будем развертывать сайт Phalconphp.com, но не стесняйтесь изменять эти настройки, чтобы применить их к вашему собственному приложению.

 vim $OPENSHIFT_RUNTIME_DIR/nginx/conf/nginx.conf 

Найдите блок сервера с поиском по шаблону (шаблон для поиска — «server {«). В разделе root измените //web часть на //website/public . Под index поместите index.php в качестве первого варианта вместо последнего. Прокрутите немного вниз, и в соответствии с инструкциями по установке Nginx под location @rewrites заменить

 location @rewrites { rewrite ^(.*)$ /index.php/$1 last; } 

с

 location @rewrites { rewrite ^/(.*)$ /index.php?_url=/$1; } 

Клонируйте веб-сайт Phalconphp.com в папку репозитория и, когда это будет сделано, перезапустите картридж снова:

 cd && cd app-root/runtime/repo git clone http://github.com/phalcon/website ctl_app restart 

Посетите общедоступный URL-адрес приложения и вуаля, у вас есть работающий клон Phalconphp.com в OpenShift.

Вывод

Установка Phalcon (или любого другого расширения PHP) на OpenShift, очевидно, не легка и не забавна — но, учитывая, что их DIY-приложения имеют версию 0.1, процесс обязательно станет намного проще. На данный момент, я надеюсь, что это знакомство с пользовательскими средами OpenShift вызвало у вас аппетит, чтобы поиграть самостоятельно. Откройте папку .openshift и рассмотрите хуки действий — там есть чему поучиться, и если вам удастся автоматизировать процесс, который мы только что проделали с помощью хука, дайте мне знать, и я обновлю статью с полной отдачей.

Оставьте свой отзыв в комментариях ниже!