Среда web-разработки на Mac OS X Leopard (часть 2)

PHP LogoВ данное время, после сборки баз данных, пришла пора установить PHP. Я ставил PHP 5.3.0, какой-либо в настоящий момент является последней стабильной версией, указанной получай сайте PHP. Кроме того сразу стоит отметить, что я опишу самый процесс сборки PHP как CGI-приложения для последующего использования с каким-нибудь proxy-сервером (в моём случае, с nginx), приближенно что если вы планируете собирать его как mod_php ради сервера Apache, этот урок вам не подойдёт.
Вдобавок того, в процессе моей сборки будет задействован менеджер процессов PHP-FPM, какой-нибудь позволяет более тонко управлять процессами PHP, необходимыми для обработки ваших сайтов. Однако обо всём по порядку.

Установка библиотек

Итак, в (видах начала нужно определиться, с чем собирать PHP. Лично для моих задач важна шефство работы с изображениями (GD2) и шрифтами (Type 1 и Freetype), которые, в свою цепь, потребуют установки в систему ряда библиотек. Так что с них, слыхать, и начнём. Для установки нужных библиотек, воспользуйтесь знакомой ровно по предыдущим постам утилитой из пакета MacPorts и выполните в терминале следующее.

sudo port install gd2

Каста команда установит в систему библиотеки для работы с графикой (в количество которых входят libjpeg, libpng, libfreetype, libxpm и ряд других, необходимых пользу кого GD). Теперь установим t1lib (если поддержка шрифтов Adobe™ Type 1 вас не требуется. пропустите этот шаг, но тогда далее уберите из конфигурации PHP, которая будет описана ниже, опцию --with-t1lib)

sudo port install t1lib

Агрегатирование PHP с патчем FPM

Теперь необходимо скачать исходники PHP и PHP-FPM. На странице с доступными пакетами выбираете оный, который вам необходим (в описываемом мною случае, 5.3.0), скачиваете (ориентирйтесь держи надпись Complete Source Code), распаковываете директорию php-5.3.0. Нонче с сайта PHP-FPM нужно скачать менеджер процессов для той версии PHP, которую вас планируете устанавливать (в описываемом мною случае, php-fpm-0.6-5.3.0) и после скачивания, распаковываете его поближе с исходниками PHP.
Откройте терминал и перейдите в директорию, которая содержит папки с исходниками указанных продуктов. Нужно учредить патч FPM, применить его к исходникам PHP, а затем подготовить место исполнение) необходимых при сборке файлов. Все необходимые для сего команды я привожу одной строкой, которую вы можете осуществить в терпинале:

php-fpm-0.6-5.3.0/generate-fpm-patch && cd php-5.3.0 && patch -p1 < ../fpm.patch && ./buildconf --force && mkdir fpm-build

Вона и всё, подготовительный этап закончен, теперь можно конфигурировать и копить PHP. Как и в случае с базами данных, чтобы ознакомиться со списком всех доступных присутствие конфигурации опций, нужно выполнить команду ./configure с параметром --help, находясь в каталоге с исходниками PHP.

./configure --help

По прошествии того, как определились, запускаете конфигуратор с нужными параметрами. В описываемом случае я устанавливаю PHP в директорию /usr/local/php-5.3.0, а и указываю местоположение необходимых мне библиотек:

./configure --enable-fpm --prefix=/usr/local/php-5.3.0
--with-zlib --enable-bcmath --enable-calendar --with-curl
--with-libxml-dir --enable-exif --with-pcre-dir --enable-ftp
--with-gd=/opt/local/ --with-jpeg-dir=/opt/local/ --with-png-dir=/opt/local/
--with-freetype-dir=/opt/local/ --with-t1lib=/opt/local/
--enable-gd-native-ttf --with-gettext=/opt/local/ --enable-mbstring --enable-mbregex
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql --with-pdo-pgsql=/usr/local/pgsql --with-pgsql=/usr/local/pgsql
--enable-sqlite-utf8 --with-xmlrpc --with-xsl --with-xpm-dir=/usr/X11 --with-iconv=shared,/opt/local/

О нормальном завершении конфигурации (бог) велел судить по тому, что у вас на экране терминала слыхом не слыхать слово Error и присутствует предложение «Thank you for using PHP«. Если а есть какие-то ошибки, внимательно читайте, что так-таки не устраивает конфигуратор, или задавайте вопросы.
Если форма завершилась нормально, запускайте компиляцию:

make

Если и после сего ошибки отсутствуют (как я вам тогда завидую!), есть устанавливать PHP:

sudo make install

Тут уже проблем закраться попросту не должно. Теперь, чтобы запустить PHP, потребуется совершить начальную конфигурацию PHP-FPM. С этим менеджером процессов сразу поставляется стартовая расположение, но в ней закомментированы поля, отвечающие за пользователя и группу, через имени которого должен работать PHP. Чтобы исправить этот просчет, откройте любым текстовым редактором, который умеет сохранять plain-text файлы (ни в коем случае мало-: неграмотный Word!!!) файл php-fpm.conf, расположенный в директории /usr/local/php-5.3.0/etc/. Хоть бы так:

sudo vim /usr/local/php-5.3.0/etc/php-fpm.conf

И найдите там такие строки:

<value name=»user»>
<value name=»group»>

Уберите с них комментарии, и укажите нужное серьезность (я использую www).
Осталось сделать пару последних штрихов:
скопируйте обложка с дефолтными настройками из директории с исходниками в директорию с установленным PHP

sudo cp php.ini-development /usr/local/php/lib/php.ini

создайте ссылку получи и распишись ваш PHP (я это делаю исключительно для удобства, этот выступка необязательный)

sudo ln -s /usr/local/php-5.3.0 /usr/local/php

Вот и всё, рань можно запускать PHP.

sudo /usr/local/php/bin/php-cgi —fpm

Чтобы убедиться, что дьявол запущен, можно поискать его в процессах:

sudo ps aux | grep php-cgi

Для того чтобы остановить все запущенные процессы (например, при изменении настроек), нужно привести в исполнение следующую команду

sudo killall php-cgi

На этом можно завершать, поскольку теперь у вас установлен PHP.
Безусловно, в этом уроке описано дней ходу) не всё. Например, PHP-FPM можно собрать как самостоятельное использование, и управлять процессом запуска PHP через него. А можно обойтись и ни на йоту без FPM. Как бы там ни было, я не ставил своей целью текстануть ВСЁ, поскольку это не имеет смысла: необходимую информацию только и остается почерпнуть как на официальном сайте PHP, так и на страницах PHP-FPM. Так я всё же рассчитываю, что данная статья покажет, в каком направлении рыться, и кому-то сильно сэкономит время.

Ну а в следующей статье, как бы и обещал, напишу про nginx, memcached и xdebug.

Связанные еженедельник