В той статье мы продемонстрируем решение для установки нескольких версий Phalcon и PHP и запустим их на одном веб-сервере. Здесь будут использоваться PHP 5.5.x и 5.6.x, но вы можете заменить их другими версиями. Можно использовать PHP-FPM, но мы рекомендуем использовать Nginx. В этом руководстве используется среда Fedora OS — система Linux, но инструкции практически идентичны для любой другой ОС * nix.

Предисловие

В этом руководстве рассматривается установка PHP 5.5.x с Phalcon 1.3.x и PHP 5.6.x с Phalcon 2.0.0. Мы также установим дополнительные PHP-расширения, такие как APC, memcache, memcached и ioncube.

Установка Nginx

Nginx — это доступный пакет в операционной системе Fedora, который мы можем установить следующим образом:

Затем мы создаем системные ссылки для запуска Nginx и запускаем его

Сборка PHP

Прежде чем начинать установку PHP, нам необходимо установить зависимости для создания PHP5:

  • Gcc или другой набор компиляторов.
  • Libc-dev, предоставляет стандартную библиотеку C, включая заголовки.
  • Make,  инструмент использует управления сборкой, используемый PHP.
  • Autoconf (2.59 или выше) для генерации скрипта configure.
  • Automake (1.4 или выше), генерирует файлы Makefile.in.
  • Libtool, помогает нам управлять общими библиотеками.
  • Bison (2.4 или выше), для генерации парсера PHP.
  • (Опционально) re2c, который используется для генерации лексера PHP. Поскольку репозиторий git уже содержит сгенерированный лексер, вам понадобится  re2c только если вы хотите внести в него изменения.

На Centos / Fedora вы можете установить все это с помощью следующей команды:

Далее нам нужно получить исходный код. Существует два способа сделать это: вы можете загрузить архив со страницы загрузки PHP или клонировать git-репозиторий из Github .

Мы рекомендуем проверить исходный код в git, поскольку он предоставляет вам простой способ поддерживать актуальность вашей установки и пробовать ваш код с различными версиями. Git checkout также требуется, если вы хотите отправлять исправления или запрашивать запросы для PHP.

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

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

Прежде чем перейти к отдельным этапам сборки, мы должны выполнить некоторые команды для «по умолчанию» сборки PHP. Это необходимо только для сборки из git.

./buildconf создает сценарий конфигурации. Это займет несколько минут.

На мой взгляд, лучше всего хранить весь веб-сервер в одном каталоге, поэтому я использую /opt здесь. Откройте терминал и введите следующую команду.

После ./configure сценария ./configure с помощью описанного выше шага вы можете использовать его для настройки сборки PHP. Вы можете просмотреть все поддерживаемые параметры, используя -help:

В приведенной выше команде будут перечислены различные общие параметры, которые поддерживаются всеми скриптами конфигурации на основе autoconf. Один из них уже упоминается -prefix = DIR, который меняет каталог установки, используемый командой make install . Другой полезной опцией является -C, которая кэширует результат различных тестов в файле config.cache и ускоряет ./configure вызовы ./configure . Использование этой опции имеет смысл только после того, как у вас уже есть рабочая сборка и вы хотите быстро переключаться между различными конфигурациями.

Вот несколько полезных параметров:

После завершения подготовки мы устанавливаем версию 5.6 PHP. Выполните следующее:

Последний переключатель (-enable-fpm) позволяет этой версии PHP работать с PHP-FPM. Если вы хотите использовать эту версию PHP-FPM с Apache, --with-fpm-user=apache и --with-fpm-group=apache . С другой стороны, если вы хотите использовать эту версию PHP-FPM с nginx, --with-fpm-user=nginx и --with-fpm-group=nginx .

Успешное сообщение должно быть в  терминале:

Теперь вы можете использовать make для выполнения фактической компиляции:

Основным результатом этой операции будут двоичные файлы PHP для включенных SAPI (по умолчанию sapi/cli/php и sapi/cgi/php-cgi), а также общие расширения в каталоге modules/.

Теперь вы можете запустить «make install» для установки PHP в /usr/local (по умолчанию) или в других каталогах, используя конфигурацию --prefix . В этом случае это /opt/php-5.6

Обратите внимание, что make install не будет создавать INI-файл.

Скопируйте php.ini и php-fpm.conf в правильный каталог:

Мы проверяем версию php еще раз.

Откройте /opt/php-5.6/etc/php-fpm.conf и /opt/php-5.6/etc/php-fpm.conf . Вы должны переключиться на неиспользуемый порт (например, 9001, порт 9000 может использоваться Fedora)

Настройка сценария Init

Вероятно, вы захотите создать сценарий инициализации для вашего нового php-fpm. К счастью, PHP 5.3+ уже предоставляет его вам, просто скопируйте сценарий init в свой каталог и измените разрешения:

Ваш скрипт инициализации готов. Теперь вы можете запускать, останавливать и перезагружать php-fpm:

Сборка второго PHP (5.5.x)

Открываем терминал и вводим следующую команду.

Сборка расширений PHP Phalcon

Чтобы установить несколько версий Phalcon, включая Phalcon 2.0, нам нужно установить Zephir

Существует множество способов установки расширений PHP. Мы будем использовать phpize.

Phpize играет ту же роль, что и скрипт ./buildconf для PHP: во-первых, он импортирует систему сборки PHP в ваше расширение путем копирования файлов из $PREFIX/lib/php/build . Среди этих файлов: acinclude.m4 (макросы PHP M4), phpize.m4 (который будет переименован в файл configure.in в вашем расширении и содержит основные инструкции по сборке) и run-tests.php .

Затем phpize вызовет autoconf для создания файла ./configure , который можно использовать для настройки сборки расширения. Например, для установки memcached вы должны добавить --enable-memcache .

Запомните! Вы должны указать параметр --with-php-config при создании расширений (если у вас не используется ​​только одна глобальная установка PHP). В противном случае ./configure не сможет правильно определить версию PHP и флаги. Кроме того, скрипт php-config также гарантирует, что команда «make install» переместит сгенерированный *.so файл в нужный каталог расширения.

Создание первого PHP Phalcon (2.0)

Проверьте, успешна ли сборка.

После установки расширения. Вам все равно нужно активировать его, включив его в файл php.ini.

Сборка второго PHP Phalcon (1.3.x)

Мы снова проверяем, чтобы установка прошла успешно.

Настройка Nginx

Следующая конфигурация создаст два сервера: phalcon-prd.localhost работает на PHP 5.5.x и phalcon-dev.localhost работает с PHP 5.6.x. Это пример, вы можете настроить для своего сервера

Настроить файл локальных хостов на своей машине для тестирования

Если вы используете систему Linux, вы можете отредактировать файл хоста:

Новый файл хоста будет выглядеть так.

Это нужно для перехвата всех запросов phalcon-dev.localhost и phalcon-prd.localhost а затем phalcon-prd.localhost передает их на ваш сервер.

Тестирование

Для тестирования мы создаем новый файл с именем test.php и помещаем его в папку, соответствующую указанной выше конфигурации Nginx. В каждый файл добавляется следующая команда.

Теперь, запустив файл test.php на каждом сервере, мы видим phalcon 1.3.x phpinfo() по адресу http: //phancon-prd.localhost/test.php, а в http: //phancon-dev.localhost/test. Php должен быть phpinfo() Phalcon 2.0.x.

несколько php на одном сервере

В заключение

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

Нужна установка нескольких версий php на сервер, обращайтесь office@itfb.com.ua