Всем привет.
Под капотом приведен пример того, как можно настроить php-cgi на основе unix:sockets.
Пример рассчитан на дистрибутивы Ubuntu и Debian.
Лично мне этот способ очень нравится, по этому решил поделится с общественностью, которая с ним не знакома.
Ну во-первых, потому что он очень простой.
Во-вторых, гибкий благодаря сокетам
В-третьих, быстрый.
Ну и другие вытекающие возможности, в том числе и с правами)
Дальше не чего особенного, стандартные действия:
sudo apt-get update
sudo apt-get install nginx
sudo apt-get install php5-cgi
Для связывания, достаточно воспользоваться скриптом одного хорошего человека Till Klampaeckel.
И так, в дириктории /etc/init.d/ создаем файл php-fcgid
записываем в него следующее:
В настройках nginx настраиваем соответствие пользователя с fastcgi_pass.
Пример конфига:
Первый запуск скрипта:
sudo bash /etc/init.d/php-fcgid
Перезапуск nginx, после изменений, думаю занаете как.
Собственно на этом все.
Enjoy!
Под капотом приведен пример того, как можно настроить php-cgi на основе unix:sockets.
Пример рассчитан на дистрибутивы Ubuntu и Debian.
Введение
Лично мне этот способ очень нравится, по этому решил поделится с общественностью, которая с ним не знакома.
Ну во-первых, потому что он очень простой.
Во-вторых, гибкий благодаря сокетам
В-третьих, быстрый.
Ну и другие вытекающие возможности, в том числе и с правами)
Установка
Дальше не чего особенного, стандартные действия:
nginx
sudo apt-get update
sudo apt-get install nginx
php
sudo apt-get install php5-cgi
Связываем php и nginx
Для связывания, достаточно воспользоваться скриптом одного хорошего человека Till Klampaeckel.
И так, в дириктории /etc/init.d/ создаем файл php-fcgid
записываем в него следующее:
#!/bin/sh # # Author: Till Klampaeckel <till@php.net> # 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 { listen 80; server_name myhost.com; access_log /var/log/nginx/myhost.com.access.log; location / { autoindex on; root /var/www/myhost.com; index index.php index.html index.htm; } location ~ .php { include fastcgi_params; fastcgi_pass unix:/tmp/.fastcgi.www-data/socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/myhost.com/$fastcgi_script_name; } }
Первый запуск скрипта:
sudo bash /etc/init.d/php-fcgid
Перезапуск nginx, после изменений, думаю занаете как.
Собственно на этом все.
Enjoy!