FastNetMon

Wednesday 28 October 2009

PHP-FPM на Debian5 + ISPManager

Каждый хочет иметь легковесный php fpm, но как его скрестить с панелью ISPManager ? В этой статье я расскажу, как сделать это с минимальными потерями времени и нервов :)

Открываем файл: vi /etc/apache2/ports.conf и комментируем строки:


#NameVirtualHost *:80
#Listen 80


Перезапускаем Апача:

/etc/init.d/apache2 restart



После этого убеждаемся, что Апач остался лишь на 443 порту и не забинден на 80й.

Теперь ставим nginx:

apt-get install -y --force-yes nginx


Далее нам необходимо собрать php-fpm, вот офсайт автора: http://github.com/dreamcat4/php-fpm


apt-get install -y libxml2-dev libjpeg62-dev make patch autoconf libpng-dev libfreetype6-dev libmysqlclient15-dev


Теперь ставим обновленный libevent (по мануалу с сайта автора fpm):


export LE_VER=1.4.12-stable
wget "http://www.monkey.org/~provos/libevent-$LE_VER.tar.gz"
tar -zxvf "libevent-$LE_VER.tar.gz"
cd "libevent-$LE_VER"
./configure --prefix=/opt/libevent && make
make install
export LIBEVENT_SEARCH_PATH="/opt/libevent"


Генерируем патч (полный список патчей вот здесь, а старые вот здесь):

export PHP_VER=5.3.0
# или
export PHP_VER=5.2.11
wget "http://launchpad.net/php-fpm/master/0.6/+download/php-fpm-0.6~$PHP_VER.tar.gz"
tar -zxvf "php-fpm-0.6~$PHP_VER.tar.gz"
"php-fpm-0.6-$PHP_VER/generate-fpm-patch"


Качаем исходники пхп:

wget "http://us.php.net/get/php-$PHP_VER.tar.gz/from/us.php.net/mirror"
tar xvfz "php-$PHP_VER.tar.gz"
cd "php-$PHP_VER"


Патчим пхп и собираем:

patch -p1 < ../fpm.patch ./buildconf --force mkdir fpm-build && cd fpm-build ../configure --with-fpm --prefix=/opt/php53 --with-libevent="$LIBEVENT_SEARCH_PATH" --with-mysql --with-gd --with-freetype-dir=/usr/include/freetype2 --with-jpeg-dir=/usr/lib && make # или ../configure --with-fpm --prefix=/opt/php52 --with-libevent="$LIBEVENT_SEARCH_PATH" --with-mysql --with-gd --with-freetype-dir=/usr/include/freetype2 --with-jpeg-dir=/usr/lib && make make install






Да, и общее замечание -- при изменении опций configure рекомендую делать make clean, иначе глюки обеспечены (у меня они возникли, когда jpeg не цеплялся, clean спас) :)

Добавляем fpm в автозапуск:

update-rc.d php-fpm defaults; invoke-rc.d php-fpm start



Открываем конфиг: /etc/php-fpm.conf и все вхождения nobody заменяем на www-data
Итак, запускаем php-fpm: /etc/init.d/php-fpm start

Убеждаемся, что все поднялось:

ps aux | grep fpm
root 13445 0.0 0.0 14392 2104 ? Ss 15:48 0:00 /opt/php53/bin/php-fpm --fpm-config /etc/php-fpm.conf
www-data 13446 0.0 0.0 14392 1840 ? S 15:48 0:00 /opt/php53/bin/php-fpm --fpm-config /etc/php-fpm.conf
www-data 13447 0.0 0.0 14392 1840 ? S 15:48 0:00 /opt/php53/bin/php-fpm --fpm-config /etc/php-fpm.conf
www-data 13448 0.0 0.0 14392 1840 ? S 15:48 0:00 /opt/php53/bin/php-fpm --fpm-config /etc/php-fpm.conf
www-data 13449 0.0 0.0 14392 1840 ? S 15:48 0:00 /opt/php53/bin/php-fpm --fpm-config /etc/php-fpm.conf
www-data 13450 0.0 0.0 14392 1840 ? S 15:48 0:00 /opt/php53/bin/php-fpm --fpm-config /etc/php-fpm.conf



Теперь создаем папку: /var/www/fpmroot, там размещаем файл index.php со следующим контентом:
<?PHP phpinfo(); ?>



Теперь конфигурируем nginx, открываем файл vi /etc/nginx/sites-enabled/default

server {
listen 80;
server_name localhost;

access_log /var/log/nginx/localhost.access.log;

location / {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/fpmroot$fastcgi_script_name;
include fastcgi_params;
}
}


После этого перезапускам nginx: /etc/init.d/nginx restart

И любуемся результатом нашей работы :)

Источник: https://bugs.launchpad.net/php-fpm/+bug/397721

1 comment :

  1. объясните дураку
    при
    apache+nginx+fastcgi
    нужно ставить PHP-FPM ?
    и зачем если нужно?

    а то мне вроде сказали PHP-FPM если без индейца

    ReplyDelete

Note: only a member of this blog may post a comment.