Установка и настройка связки nginx + spawn-fcgi (PHP)
Материал из 1GbWiki.
Версия 10:12, 31 января 2011 (править) Александр Пристенский (Обсуждение | вклад) ← К предыдущему изменению |
Текущая версия (10:56, 31 января 2011) (править) (отменить) Александр Пристенский (Обсуждение | вклад) |
||
(6 промежуточных версий не показаны.) | |||
Строка 6: | Строка 6: | ||
=== Скачиваем spawn-fcgi === | === Скачиваем spawn-fcgi === | ||
- | + | wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz | |
=== Распаковываем spawn-fcgi === | === Распаковываем spawn-fcgi === | ||
- | + | tar xvfz spawn-fcgi-1.6.3.tar.gz | |
=== Устанавливаем spawn-fcgi === | === Устанавливаем spawn-fcgi === | ||
Заходим в каталог с распакованым spawn-fcgi и выполняем команды:<br/> | Заходим в каталог с распакованым spawn-fcgi и выполняем команды:<br/> | ||
- | + | ./configure --prefix=/usr | |
- | ./configure --prefix=/usr | + | make |
- | make | + | su make install |
- | su make install | + | |
- | + | ||
== Установка nginx == | == Установка nginx == | ||
Строка 23: | Строка 21: | ||
=== Скачиваем nginx === | === Скачиваем nginx === | ||
- | + | wget http://sysoev.ru/nginx/nginx-0.8.54.tar.gz | |
=== Распаковываем nginx === | === Распаковываем nginx === | ||
- | + | tar xvfz nginx-0.8.54.tar.gz | |
=== Устанавливаем nginx === | === Устанавливаем nginx === | ||
Заходим в каталог с распакованым nginx и выполняем команды:<br/> | Заходим в каталог с распакованым nginx и выполняем команды:<br/> | ||
- | + | ./configure | |
- | ./configure | + | make |
- | make | + | su make install |
- | su make install | + | |
- | </code> | + | После инсталляции каталоги nginx будут находиться по пути: <code>/usr/local/nginx</code><br/> |
Подробнее про инсталляцию nginx написано здесь: http://sysoev.ru/nginx/docs/install.html | Подробнее про инсталляцию nginx написано здесь: http://sysoev.ru/nginx/docs/install.html | ||
== Настройка nginx + spawn-fcgi == | == Настройка nginx + spawn-fcgi == | ||
+ | |||
+ | === Скрипт запуска/останова nginx и spawn-fcgi в Gentoo Linux === | ||
+ | Скрипт следует разместить по следующему пути: <code>/etc/init.d/nginx</code><br/> | ||
+ | и обязательно дать ему права на выполнение: | ||
+ | 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 === | === Настройка виртуальных хостов в 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 <code>/usr/local/nginx/conf/nginx.conf</code> в минимальном виде выглядит так: | ||
+ | worker_processes 1; | ||
+ | |||
+ | events { | ||
+ | worker_connections 1024; | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | include mime.types; | ||
+ | default_type application/octet-stream; | ||
+ | sendfile on; | ||
+ | keepalive_timeout 65; | ||
+ | |||
+ | include vhosts/*; | ||
+ | } | ||
+ | |||
+ | Для хоста по умолчанию файл конфигурации <code>/usr/local/nginx/conf/vhosts/default</code> имеет следующее содержимое: | ||
+ | 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; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Для хоста <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> | ||
+ | |||
+ | Всё! :) |
Текущая версия
Содержание |
[править] Установка 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
Всё! :)