Установка и настройка связки nginx + spawn-fcgi (PHP)
Материал из 1GbWiki.
Содержание |
[править] Установка spawn-fcgi
spawn-fcgi можно взять с его официальной странички: http://redmine.lighttpd.net/projects/spawn-fcgi
[править] Скачиваем spawn-fcgi
wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
[править] Распаковываем spawn-fcgi
tar xvfz spawn-fcgi-1.6.3.tar.gz
[править] Устанавливаем spawn-fcgi
Заходим в каталог с распакованым spawn-fcgi и выполняем команды:
./configure --prefix=/usr make su make install
[править] Установка nginx
nginx можно взять с официального сайта: http://sysoev.ru/nginx/
[править] Скачиваем nginx
wget http://sysoev.ru/nginx/nginx-0.8.54.tar.gz
[править] Распаковываем nginx
tar xvfz nginx-0.8.54.tar.gz
[править] Устанавливаем nginx
Заходим в каталог с распакованым nginx и выполняем команды:
./configure make su make install
После инсталляции каталоги nginx будут находиться по пути: /usr/local/nginx
Подробнее про инсталляцию nginx написано здесь: http://sysoev.ru/nginx/docs/install.html
[править] Настройка nginx + spawn-fcgi
[править] Скрипт запуска/останова nginx и spawn-fcgi в Gentoo Linux
Скрипт следует разместить по следующему пути: /etc/init.d/nginx
и обязательно дать ему права на выполнение:
chmod +x /etc/init.d/nginx
Содержимое скрипта следующее:
#!/sbin/runscript start(){ # run fastcgi server exec 2>&1 PHP_FCGI_CHILDREN=5 \ PHP_FCGI_MAX_REQUESTS=1000 \ exec /usr/bin/spawn-fcgi -n -s /var/run/php-fcgi.sock -n -u nobody -U nobody -- /usr/bin/php-cgi & # run nginx cd /usr/local/nginx/sbin ./nginx & } stop(){ kill -QUIT `cat /usr/local/nginx/logs/nginx.pid` killall -9 php-cgi }
Запуск/останов делается командой:
/etc/init.d/nginx start # запуск /etc/init.d/nginx stop # останов
Для автоматического запуска/останова при перезапуске VDS необходимо создать ссылку:
ln -s /etc/init.d/nginx /etc/runlevels/default/nginx
[править] Настройка виртуальных хостов в nginx
Допустим у нас будет два домена:
- по умолчанию (default, когда к VDS обращаются по IP адресу без указания хоста)
- mysite.ru
Для этого создадим следующие файлы и каталоги:
mkdir /usr/local/nginx/www mkdir /usr/local/nginx/www/default mkdir /usr/local/nginx/www/mysite.ru chown -R nobody:nogroup /usr/local/nginx/www/* mkdir /usr/local/nginx/conf/vhosts touch /usr/local/nginx/conf/vhosts/default touch /usr/local/nginx/conf/vhosts/mysite.ru
Основной файл конфигурации nginx /usr/local/nginx/conf/nginx.conf
в минимальном виде выглядит так:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include vhosts/*; }
Для хоста по умолчанию файл конфигурации /usr/local/nginx/conf/vhosts/default
имеет следующее содержимое:
server { listen 80; server_name _; root /usr/local/nginx/www/default; index index.html; # если сайт на PHP - заменить на index.php # замена mod_rewrite (как у apache) location / { if (!-e $request_filename ) { rewrite ^(.*)$ /index.php?q=$1; } } # указываем наш fastcgi сервер как обработчик location ~ \.php$ { fastcgi_pass unix:/var/run/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/www/default/$fastcgi_script_name; include fastcgi_params; } }
Для хоста mysite.ru
файл конфигурации /usr/local/nginx/conf/vhosts/mysite.ru
имеет следующее содержимое:
server { listen 80; server_name mysite.ru *.mysite.ru; root /usr/local/nginx/www/mysite.ru; index index.php; location / { if (!-e $request_filename ) { rewrite ^(.*)$ /index.php?q=$1; } } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/www/mysite.ru/$fastcgi_script_name; include fastcgi_params; } }
Если понадобится добавить ещё хосты, то надо просто:
- создать соответствующий каталог в
/usr/local/nginx/www/
- создать и отредактировать (см. выше) файл конфигурации для хоста в
/usr/local/nginx/conf/vhosts
Всё! :)