Установка и настройка связки nginx + spawn-fcgi (PHP)

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 10:25, 31 января 2011 (править)
Александр Пристенский (Обсуждение | вклад)

← К предыдущему изменению
Версия 10:33, 31 января 2011 (править) (отменить)
Александр Пристенский (Обсуждение | вклад)

К следующему изменению →
Строка 63: Строка 63:
=== Настройка виртуальных хостов в nginx === === Настройка виртуальных хостов в nginx ===
 +
 +Допустим у нас будет два домена:
 +* по умолчанию (default)
 +* 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/*;
 + }
 +
 +Для хоста по умолчанию файл конфигурации <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;
 + }
 + }
 +
 + 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;
 + }
 + }

Версия 10:33, 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)
  • 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;
       }
   }
   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;
   }
}
Личные инструменты