Nginx+PHP – это просто (Ubuntu)

Итак, сегодня поведаю как настроить nginx с привязкой к PHP. Устанавливать будем на Ubuntu Server (подойдет и для Ubuntu, Debian). Сначала поставим nginx. Скачиваем стабильный пакет через wget:

  1. wget http://technokracy.net/nginx/nginx_0.5.32~grrr-1_i386.deb

Потом

  1. sudo dpkg -i nginx_0.5.32~grrr-1_i386.deb


Теперь nginx установлени и работает по умолчанию на 8000 порту. Директория по умолчанию Nginx-default в каталоге /var/www/.

Дальше отредактируем конфиг nginx.

  1. vi /etc/nginx/sites-available/default

Теперь ищем такие опции и раскоментим их (# – комент в конфиге), если их там нет – добавим

  1. location ~ \.php$ {
  2. include /etc/nginx/fastcgi_params;
  3. fastcgi_pass  127.0.0.1:9000;
  4. fastcgi_index index.php;
  5. fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
  6. }

Так мы обьяснили nginx что fcgi находится на порту 9000. Значит теперь нам надо запустить fcgi процесс. Я использую spawn-fcgi. Поставим теперь PHP:

  1. apt-get install php5 php5-cli php5-cgi

Теперь возьмем spawn-fcgi из lighttpd.

  1. apt-get install lighttpd

Теперь созданим скрипт для php-fastcgi:

  1. touch /usr/bin/php-fastcgi

И отредактируем

  1. vi /usr/bin/php-fastcgi

и добавим туда это

  1. #!/bin/sh
  2. /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -f /usr/bin/php5-cgi

Каждый раз когда будет запущен этот скрипт, fcgi будет запущен на 9000 порт для юзер www-data.

Теперь создадим скрипт для автоматического запуска php-fastcgi

  1. touch /etc/init.d/init-fastcgi

редактируем

  1. vi /etc/init.d/init-fastcgi
  1. #!/bin/bash
  2. PHP_SCRIPT=/usr/bin/php-fastcgi
  3. RETVAL=0
  4. case "$1" in
  5.     start)
  6.       $PHP_SCRIPT
  7.       RETVAL=$?
  8.   ;;
  9.     stop)
  10.       killall -9 php
  11.       RETVAL=$?
  12.   ;;
  13.     restart)
  14.       killall -9 php
  15.       $PHP_SCRIPT
  16.       RETVAL=$?
  17.   ;;
  18.     *)
  19.       echo "Usage: php-fastcgi {start|stop|restart}"
  20.       exit 1
  21.   ;;
  22. esac
  23. exit $RETVAL

Раздадим права на скрипты

  1. chmod 755 /etc/init.d/init-fastcgi
  2. chmod 755 /usr/bin/php-fastcgi

Теперь проверяем скрипт

  1. /etc/init.d/init-fastcgi start

Добавляем в загрузку системы скрипт

  1. update-rc.d init-fastcgi defaults

И проверяем запущены ли процессы

  1. ps ax | grep php

Для проверки достаточно создать файл index.php, сбросить его в /var/www/nginx-default/ и записать туда

  1. <? echo phpinfo(); ?>

Вы должны увидеть информационное окно PHP.

Вот и все. Удачи!!!

11. сентября 2008 by Alexey Vasiliev
Categories: nginx, PHP | Tags: , | 2 комментария

Comments (2)

  1. А как быть с .htaccess файлами ?

  2. nginx не поддерживает .htaccess файлы, но прямо в его конфиге можно задать реврайт правила или например какая директория закрыта на доступ.