Настройка Php-Cgi В Связке С Nginx На Основе Сокетов

Всем привет. Под капотом находится пример того, как можно настроить php-cgi на основе unix:sockets. Пример предназначен для дистрибутивов Ubuntu и Debian.



Введение

Лично мне этот метод очень нравится, поэтому я решил поделиться им с публикой, которая с ним не знакома.

Ну, во-первых, потому что это очень просто.

Во-вторых, гибкость благодаря розеткам В-третьих, быстро.

Ну и прочие вытекающие возможности, в том числе и с правами)

Монтаж

Дальше ничего особенного, стандартные действия:

nginx
обновление sudo apt-get sudo apt-get установить nginx

php
sudo apt-get установить php5-cgi

Связывание php и nginx

Для ссылки просто используйте сценарий одного хорошего человека, Тилля Клампакеля.

И так, в каталоге /etc/init.d/ создать файл php-fcgid напишите в него следующее:

 
 #!/bin/sh
 #
 # Author: Till Klampaeckel <[email protected]>
 # Credits
 #  * original script:  http://unix.derkeiler.com/Mailing-Lists/FreeBSD/questions/2007-09/msg00468.html 
 #  * improved:  http://till.klampaeckel.de/blog/archives/30-PHP-performance-III-Running-nginx.html 
 #  * all linux start script fu inspired by CouchDB's start script (by Noah Slater)
 
 SCRIPT_OK=0
 SCRIPT_ERROR=1
 
 DESCRIPTION="php-fcgi super-duper-control thing"
 NAME=php-fgcid
 SCRIPT_NAME=$(basename $0)
 
 WWW_GROUP=www-data
 PHP_CGI=/usr/bin/php-cgi
 
 phpfcgid_users="user1 user2"
 phpfcgid_children="2"
 phpfcgid_tmpdir="/tmp"
 phpfcgid_requests="100"
 
 log_daemon_msg () {
     echo $@
 }
 
 log_end_msg () {
     # Dummy function to be replaced by LSB library.
 
     if test "$1" != "0"; then
         echo "Error with $DESCRIPTION: $NAME"
     fi
     return $1
 }
 
 phpfcgid_start() {
     echo "Starting $NAME with $phpfcgid_children children (req: $phpfcgid_requests).

" export PHP_FCGI_CHILDREN=$phpfcgid_children export PHP_FCGI_MAX_REQUESTS=$phpfcgid_requests for user in ${phpfcgid_users}; do socketdir="${phpfcgid_tmpdir}/.

fastcgi.${user}" mkdir -p ${socketdir} chown ${user}:${WWW_GROUP} ${socketdir} chmod 0750 ${socketdir} su -m ${user} -c "${PHP_CGI} -b ${socketdir}/socket&" done } phpfcgid_stop() { echo "Stopping $NAME." pids=`pgrep php-cgi` pkill php-cgi } phpfcgid_status() { log_daemon_msg "To be implemented: status" log_end_msg $SCRIPT_ERROR } parse_script_option_list () { case "$1" in start) log_daemon_msg "Starting $DESCRIPTION" $NAME if phpfcgid_start; then log_end_msg $SCRIPT_OK else log_end_msg $SCRIPT_ERROR fi ;; stop) log_daemon_msg "Stopping $DESCRIPTION" $NAME if phpfcgid_stop; then log_end_msg $SCRIPT_OK else log_end_msg $SCRIPT_ERROR fi ;; restart|force-reload) log_daemon_msg "Restarting $DESCRIPTION" $NAME if phpfcgid_stop; then if phpfcgid_start; then log_end_msg $SCRIPT_OK else log_end_msg $SCRIPT_ERROR fi else log_end_msg $SCRIPT_ERROR fi ;; status) phpfcgid_status ;; *) cat << EOF >&2 Usage: $SCRIPT_NAME {start|stop|restart|force-reload|status} EOF exit $SCRIPT_ERROR ;; esac } parse_script_option_list $@



Настройка

В настройках nginx настраиваем пользователя на соответствие fastcgi_pass. Пример конфигурации:
 
 server {
 
Теги: #Чулан #nginx php-cgi ubuntu
Вместе с данным постом часто просматривают: