Статьи

Предоставление Phalcon (и других инструментов) с помощью Vagrant

В последней статье Мэтью Сеттера о PuPHPet рассказывалось о простом создании графических приложений Vagrant с поддержкой графического интерфейса. PuPHPet — это совершенно потрясающий инструмент для быстрого запуска и работы со средой разработки, предлагающий очень удобные опции по умолчанию.

Но что, если мы хотим выйти за пределы значений по умолчанию? Что, если бы мы, например, хотели бы установить расширение PHP, которое не является частью дистрибутива по умолчанию и не существует в менеджерах пакетов?

В этом руководстве мы позаботимся о том, чтобы платформа Phalcon была установлена ​​по умолчанию при запуске vagrant up . Предварительная установка программного обеспечения на Vagrant VM называется подготовкой .

Готовиться

Пожалуйста, просмотрите статью Мэтью, прежде чем переходить к этой. Просто убедитесь, что вы загружаете готовую виртуальную машину с поддержкой PHP.

В этом конкретном случае я использовал PHP 5.4 с Ubuntu (5.5 пока не будет работать с ним через PuPHPet), но если у вас есть собственная конфигурация, к которой вы привыкли, пожалуйста, не стесняйтесь ее использовать — просто убедитесь, что вы может получить хороший экран phpinfo, прежде чем продолжить. Убедитесь, что ваша конфигурация PHP работает, и вы можете получить доступ к виртуальной машине через браузер и выполнить такой скрипт PHP, как

 <?php phpinfo(); 

В идеале ваш браузер должен отображать что-то вроде этого:

Основы обеспечения

Vagrant предлагает несколько способов предоставления программного обеспечения для ваших виртуальных машин. Есть Puppet (на чем основан PuPHPet), Chef, Docker и многое другое. Мы будем использовать старые добрые команды оболочки — Vagrant может выполнить файл оболочки, который мы напишем, если мы передадим его в его параметры настройки.

Итак, допустим, вам нужно установить текстовый редактор joe и сделать это через оболочку. В подпапке shell вашей папки PuPHPet вы должны создать файл joe.sh со следующим содержимым:

 #!/bin/bash sudo su apt-get install joe 

Этот сценарий оболочки сначала идентифицирует себя как исполняемый с помощью bash (необязательно), запрашивает разрешения суперпользователя, а затем устанавливает joe по обычным каналам. Чтобы на самом деле это выполнить, мы модифицируем Vagrantfile в папке PuPHPet, добавив строку

 config.vm.provision :shell, :path => "shell/joe.sh" 

под последним config.vm.provision... строка / блок. Теперь, если мы запустим vagrant в нашей папке PuPHPet, наша виртуальная машина будет установлена ​​в joe как только она загрузится.

Установка Phalcon

В соответствии с инструкциями по установке Phalcon, процесс компиляции прост:

 git clone git://github.com/phalcon/cphalcon.git cd cphalcon/build sudo ./install 

Однако нам также необходимо ввести phalcon.so в конфигурацию PHP, перезапустить сервер и убедиться, что все необходимые компоненты установлены (они есть, PuPHPet позаботился об этом за нас). Давайте сделаем это шаг за шагом.

Снова в install_phalcon.sh shell создайте файл install_phalcon.sh . Дайте ему следующее содержание:

 #!/bin/bash sudo su git clone git://github.com/phalcon/cphalcon.git cd cphalcon/build ./install cd .. cd .. rm -rf cphalcon 

Теперь, если вы снова запустите vagrant up после запуска vagrant destroy , вы увидите расширение phalcon.so в папке расширений PHP:

Однако для его фактического использования phalcon.so необходимо добавить в конфигурацию PHP. После добавления нам также необходимо перезагрузить сервер, чтобы загрузить новую конфигурацию. Улучшите файл оболочки выше, добавив следующие операторы внизу:

 echo 'extension=phalcon.so' > /etc/php5/mods-available/phalcon.ini ln -s /etc/php5/mods-available/phalcon.ini /etc/php5/cli/conf.d/phalcon.ini ln -s /etc/php5/mods-available/phalcon.ini /etc/php5/apache/conf.d/phalcon.ini ln -s /etc/php5/mods-available/phalcon.ini /etc/php5/fpm/conf.d/phalcon.ini service apache2 restart 

Сначала мы создаем файл phalcon.ini каталоге /etc/php5/mods-available . Мы могли бы вставить это прямо в php.ini, но это просто чище. Затем мы ставим символическую ссылку на этот вновь созданный файл во все места, где можно запустить PHP: Apache, командную строку и FPM. Таким образом, все наши потенциальные среды выполнения PHP имеют Phalcon. Наконец, мы перезапускаем Apache.

Если вы попытаетесь запустить vagrant up сейчас (после запуска vagrant destroy ), вы увидите экран phpinfo, отображающий загруженный Phalcon, после повторного посещения IP-адреса виртуальной машины в вашем браузере.

Но что, если процесс сервера называется по-другому? Например, если это «httpd» или просто «apache», а не «apache2»? Кроме того, что если у нас другой дистрибутив? На CentOS phalcon.ini должен идти в /etc/php.d/ , а на других дистрибутивах в другие места. Наконец, что, если мы только сделаем vagrant halt а затем запустим vagrant up но --provision повторное предоставление с флагом --provision ? Не лучше ли просто проигнорировать установку Phalcon, если она уже установлена?

К счастью, slogsdon принял все это во внимание для нас. Он создал превосходный сценарий оболочки установки Phalcon, хорошо продуманный с предложениями IF и многим другим, и даже создал сценарий установки phalcon-tools .

Чтобы установить Phalcon с учетом всего вышесказанного, поместите файл install_phalcon.sh в папку оболочки вашей загрузки PuPHPet и добавьте ее в провайдер, как мы делали для joe ранее. Если вы хотите установить инструменты Phalcon, сделайте то же самое с install_phalcon-devtools.sh . Это все, что вам нужно сделать — скрипт учитывает различные серверы и настройки, поэтому все, что вам нужно сделать, это запустить его.

Теперь вы также можете получить готовую установку Phalcon, готовую к разработке, одним щелчком мыши. Естественно, вам нужно будет сделать некоторые дополнительные настройки, чтобы перезаписать URL для работы на Nginx (просто следуйте документации Phalcon ), но как только расширение установлено и загружено PHP, сложная часть закончена. Что лучше, вы можете использовать этот подход для установки Phalcon в любой из поддерживаемых сред PuPHPet — Digital Ocean, Rackspace или AWS. Просто подключите оболочку slogsdon к настройкам обеспечения, и вы готовы к работе!

Вывод

В этом руководстве мы рассмотрели основы обеспечения с помощью оболочки и установили Phalcon (и joe) с загрузочной виртуальной машиной. Скоро появится следующая статья от Matthew Setter, в которой будут рассмотрены дальнейшие настройки загруженных настроек обеспечения из PuPHPet.

Чтобы ознакомиться с полным процессом работы Vagrant и Puppet, пожалуйста, продолжайте следовать этой серии, поскольку она станет намного интереснее!

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