Установка и настройка связки nginx + spawn-fcgi (PHP)
Материал из 1GbWiki.
Версия 10:33, 31 января 2011 (править) Александр Пристенский (Обсуждение | вклад) ← К предыдущему изменению |
Версия 10:40, 31 января 2011 (править) (отменить) Александр Пристенский (Обсуждение | вклад) К следующему изменению → |
||
Строка 65: | Строка 65: | ||
Допустим у нас будет два домена: | Допустим у нас будет два домена: | ||
- | * по умолчанию (default) | + | * по умолчанию (default, когда к VDS обращаются по IP адресу без указания хоста) |
* mysite.ru | * mysite.ru | ||
Строка 79: | Строка 79: | ||
Основной файл конфигурации nginx в минимальном виде выглядит так: | Основной файл конфигурации nginx в минимальном виде выглядит так: | ||
worker_processes 1; | worker_processes 1; | ||
- | + | ||
events { | events { | ||
worker_connections 1024; | worker_connections 1024; | ||
Строка 97: | Строка 97: | ||
listen 80; | listen 80; | ||
server_name _; | server_name _; | ||
- | + | ||
root /usr/local/nginx/www/default; | root /usr/local/nginx/www/default; | ||
index index.html; # если сайт на PHP - заменить на index.php | index index.html; # если сайт на PHP - заменить на index.php | ||
- | + | ||
# замена mod_rewrite (как у apache) | # замена mod_rewrite (как у apache) | ||
location / { | location / { | ||
Строка 107: | Строка 107: | ||
} | } | ||
} | } | ||
- | + | ||
+ | # указываем наш fastcgi сервер как обработчик | ||
location ~ \.php$ { | location ~ \.php$ { | ||
fastcgi_pass unix:/var/run/php-fcgi.sock; | fastcgi_pass unix:/var/run/php-fcgi.sock; | ||
Строка 115: | Строка 116: | ||
} | } | ||
} | } | ||
+ | |||
+ | Для хоста <code>mysite.ru</code> файл конфигурации <code>/usr/local/nginx/conf/vhosts/mysite.ru</code> имеет следующее содержимое: | ||
+ | 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; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Если понадобится добавить ещё хосты, то надо просто: | ||
+ | # создать соответствующий каталог в <code>/usr/local/nginx/www/</code> | ||
+ | # создать файл конфигурации для хоста в <code>/usr/local/nginx/conf/vhosts</code> |
Версия 10:40, 31 января 2011
Содержание |
Установка 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 }
Настройка виртуальных хостов в 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 в минимальном виде выглядит так:
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