Відмінності між версіями «Php fastcgi»

Матеріал з Wiki Welard
Перейти до навігації Перейти до пошуку
(Created page with '[http://blog.kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/lang/ru/ Оригинал] После моего первого рассказа о веб- и reverse-proxy серв...')
 
Рядок 1: Рядок 1:
−
[http://blog.kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/lang/ru/ Оригинал]
+
[http://blog.kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/lang/ru/ Оригинал]  
  
−
После моего первого рассказа о веб- и reverse-proxy сервере nginx, я получил много писем с коментариями и вопросами насчет него. Одним из самых распространенных вопросом был “Как использовать PHP вместе с nginx?”. А этой маленькой пошаговой инструкции я постараюсь описать, как это можно сделать.
+
После моего первого рассказа о веб- и reverse-proxy сервере nginx, я получил много писем с коментариями и вопросами насчет него. Одним из самых распространенных вопросом был “Как использовать PHP вместе с nginx?”. А этой маленькой пошаговой инструкции я постараюсь описать, как это можно сделать.  
  
 +
<br> Since this article has been published long time ago, there is MUCH better option to manage PHP FastCGI processes than the one I described below. Please check out php-fpm project from Andrei Nigmatulin which IMHO is the best possible way to manage PHP processes.
  
−
Since this article has been published long time ago, there is MUCH better option to manage PHP FastCGI processes than the one I described below. Please check out php-fpm project from Andrei Nigmatulin which IMHO is the best possible way to manage PHP processes.
+
Nginx включает в себя поддержку технологии FastCGI для работы с внешними серверами и утилитами. PHP тоже поддерживает FastCGI и может быть использован для обработки FastCGI-запросов от nginx.  
  
−
Nginx включает в себя поддержку технологии FastCGI для работы с внешними серверами и утилитами. PHP тоже поддерживает FastCGI и может быть использован для обработки FastCGI-запросов от nginx.
+
Итак, для начала нам необходимо установить PHP с поддержкой технологии fastcgi и запустить его на каком-либо tcp-порту, на который потом будут переправляться запросы из nginx.  
  
−
Итак, для начала нам необходимо установить PHP с поддержкой технологии fastcgi и запустить его на каком-либо tcp-порту, на который потом будут переправляться запросы из nginx.
+
* Вы сможете запустить свой fastcgi-сервер. Но существует два возможных варианта, как это сделать:
  
−
 
+
* Запуск встроенного в PHP сервера FastCGI - метод, не требующий никаких дополнительных утилит.
−
Вы сможете запустить свой fastcgi-сервер. Но существует два возможных варианта, как это сделать:
 
−
 
 
−
Запуск встроенного в PHP сервера FastCGI - метод, не требующий никаких дополнительных утилит.
 
  
 
  Запуск PHP внутри какого-либо стороннего обработчика запросов - этот вариант может быть более удобным из-за большей гибкости в настройке.
 
  Запуск PHP внутри какого-либо стороннего обработчика запросов - этот вариант может быть более удобным из-за большей гибкости в настройке.
  
−
Если Вы решили не использовать никакого стороннего ПО, то можете запустить PHP с использованием его встроенного менеджера FastCGI-запросов при помощи следующего скрипта:
+
Если Вы решили не использовать никакого стороннего ПО, то можете запустить PHP с использованием его встроенного менеджера FastCGI-запросов при помощи следующего скрипта:  
  
 
  #!/bin/bash
 
  #!/bin/bash
Рядок 45: Рядок 43:
 
   
 
   
 
  if test x$PHP_FCGI_CHILDREN = x; then
 
  if test x$PHP_FCGI_CHILDREN = x; then
−
  PHP_FCGI_CHILDREN=5
+
  PHP_FCGI_CHILDREN=5
 
  fi
 
  fi
 
   
 
   
Рядок 53: Рядок 51:
 
   
 
   
 
  if test x$UID = x0; then
 
  if test x$UID = x0; then
−
  EX="/bin/su -m -c \"$PHPFCGI -q -b $FCGIADDR:$FCGIPORT\" $USERID"
+
  EX="/bin/su -m -c \"$PHPFCGI -q -b $FCGIADDR:$FCGIPORT\" $USERID"
 
  else
 
  else
−
  EX="$PHPFCGI -b $FCGIADDR:$FCGIPORT"
+
  EX="$PHPFCGI -b $FCGIADDR:$FCGIPORT"
 
  fi
 
  fi
 
   
 
   
Рядок 64: Рядок 62:
 
   
 
   
 
  for i in $ALLOWED_ENV; do
 
  for i in $ALLOWED_ENV; do
−
  E="$E $i=${!i}"
+
  E="$E $i=${!i}"
 
  done
 
  done
 
   
 
   
 
  # clean environment and set up a new one
 
  # clean environment and set up a new one
−
  nohup env - $E sh -c "$EX" &> /dev/null &
+
  nohup env - $E sh -c "$EX" &amp;&gt; /dev/null &amp;

Версія за 21:56, 2 квітня 2009

Оригинал

После моего первого рассказа о веб- и reverse-proxy сервере nginx, я получил много писем с коментариями и вопросами насчет него. Одним из самых распространенных вопросом был “Как использовать PHP вместе с nginx?”. А этой маленькой пошаговой инструкции я постараюсь описать, как это можно сделать.


Since this article has been published long time ago, there is MUCH better option to manage PHP FastCGI processes than the one I described below. Please check out php-fpm project from Andrei Nigmatulin which IMHO is the best possible way to manage PHP processes.

Nginx включает в себя поддержку технологии FastCGI для работы с внешними серверами и утилитами. PHP тоже поддерживает FastCGI и может быть использован для обработки FastCGI-запросов от nginx.

Итак, для начала нам необходимо установить PHP с поддержкой технологии fastcgi и запустить его на каком-либо tcp-порту, на который потом будут переправляться запросы из nginx.

  • Вы сможете запустить свой fastcgi-сервер. Но существует два возможных варианта, как это сделать:
  • Запуск встроенного в PHP сервера FastCGI - метод, не требующий никаких дополнительных утилит.
Запуск PHP внутри какого-либо стороннего обработчика запросов - этот вариант может быть более удобным из-за большей гибкости в настройке.

Если Вы решили не использовать никакого стороннего ПО, то можете запустить PHP с использованием его встроенного менеджера FastCGI-запросов при помощи следующего скрипта:

#!/bin/bash

## ABSOLUTE path to the PHP binary
PHPFCGI="/opt/php/bin/php"

## tcp-port to bind on
FCGIPORT="8888"

## IP to bind on
FCGIADDR="127.0.0.1"

## number of PHP children to spawn
PHP_FCGI_CHILDREN=5

## number of request before php-process will be restarted
PHP_FCGI_MAX_REQUESTS=1000

# allowed environment variables sperated by spaces
ALLOWED_ENV="ORACLE_HOME PATH USER"

## if this script is run as root switch to the following user
USERID=www-data

################## no config below this line

if test x$PHP_FCGI_CHILDREN = x; then
 PHP_FCGI_CHILDREN=5
fi

ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_CHILDREN"
ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS"
ALLOWED_ENV="$ALLOWED_ENV FCGI_WEB_SERVER_ADDRS"

if test x$UID = x0; then
 EX="/bin/su -m -c \"$PHPFCGI -q -b $FCGIADDR:$FCGIPORT\" $USERID"
else
 EX="$PHPFCGI -b $FCGIADDR:$FCGIPORT"
fi

echo $EX

# copy the allowed environment variables
E=

for i in $ALLOWED_ENV; do
 E="$E $i=${!i}"
done

# clean environment and set up a new one
nohup env - $E sh -c "$EX" &> /dev/null &