Nginx+PHP – это просто (Ubuntu)
Итак, сегодня поведаю как настроить nginx с привязкой к PHP. Устанавливать будем на Ubuntu Server (подойдет и для Ubuntu, Debian). Сначала поставим nginx. Скачиваем стабильный пакет через wget:
-
wget http://technokracy.net/nginx/nginx_0.5.32~grrr-1_i386.deb
Потом
-
sudo dpkg -i nginx_0.5.32~grrr-1_i386.deb
Теперь nginx установлени и работает по умолчанию на 8000 порту. Директория по умолчанию Nginx-default в каталоге /var/www/.
Дальше отредактируем конфиг nginx.
-
vi /etc/nginx/sites-available/default
Теперь ищем такие опции и раскоментим их (# – комент в конфиге), если их там нет – добавим
-
location ~ \.php$ {
-
include /etc/nginx/fastcgi_params;
-
fastcgi_pass 127.0.0.1:9000;
-
fastcgi_index index.php;
-
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
-
}
Так мы обьяснили nginx что fcgi находится на порту 9000. Значит теперь нам надо запустить fcgi процесс. Я использую spawn-fcgi. Поставим теперь PHP:
-
apt-get install php5 php5-cli php5-cgi
Теперь возьмем spawn-fcgi из lighttpd.
-
apt-get install lighttpd
Теперь созданим скрипт для php-fastcgi:
-
touch /usr/bin/php-fastcgi
И отредактируем
-
vi /usr/bin/php-fastcgi
и добавим туда это
-
#!/bin/sh
-
/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
-
touch /etc/init.d/init-fastcgi
редактируем
-
vi /etc/init.d/init-fastcgi
-
#!/bin/bash
-
PHP_SCRIPT=/usr/bin/php-fastcgi
-
RETVAL=0
-
case "$1" in
-
start)
-
$PHP_SCRIPT
-
RETVAL=$?
-
;;
-
stop)
-
killall -9 php
-
RETVAL=$?
-
;;
-
restart)
-
killall -9 php
-
$PHP_SCRIPT
-
RETVAL=$?
-
;;
-
*)
-
echo "Usage: php-fastcgi {start|stop|restart}"
-
exit 1
-
;;
-
esac
-
exit $RETVAL
Раздадим права на скрипты
-
chmod 755 /etc/init.d/init-fastcgi
-
chmod 755 /usr/bin/php-fastcgi
Теперь проверяем скрипт
-
/etc/init.d/init-fastcgi start
Добавляем в загрузку системы скрипт
-
update-rc.d init-fastcgi defaults
И проверяем запущены ли процессы
-
ps ax | grep php
Для проверки достаточно создать файл index.php, сбросить его в /var/www/nginx-default/ и записать туда
Вы должны увидеть информационное окно PHP.
Вот и все. Удачи!!!
А как быть с .htaccess файлами ?
nginx не поддерживает .htaccess файлы, но прямо в его конфиге можно задать реврайт правила или например какая директория закрыта на доступ.