Налаштування nginx+php-fcgi для linux Ubuntu, Debain

Січень 25th, 2010 | Теґи: , , , , , , ,

Ще одна модифікація статті про налаштування зв’язки nginx+php-fcgi в обхід Apache.

Тут обійдемося без компіляції програм, все тягнемо з репозиторіїв, там досить актуальні версії.
Також це дозволить без проблем оновлюватися.

Ставимо nginx, php-cgi/fcgi та spawn-fcgi для запуску РНР на порту:

apt-get install nginx
apt-get install php5-cgi
apt-get install spawn-fcgi

Конфігуримо spawn-fcgi:

### /etc/init.d/php-fcgi ###
#################

#!/bin/sh                                                                                                                                                                           

### BEGIN INIT INFO
# Provides: php-fcgi
# Required-Start: $all
# Required-Stop: $all 
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6   
# Short-Description: starts the php-cgi in fast-cgi mode
# Description: configure and starts php-cgi processes in fast-cgi mode using spawn-fcgi
### END INIT INFO                                                                       
                                                                                        
PATH=/sbin:/bin:/usr/sbin:/usr/bin                                                      
SCRIPTNAME="/etc/init.d/php-fcgi"                                                      
                                                                                        
FCGI_PIDFILE="/var/run/spawn-php-fcgi.pid"                                             

#    Absolute path to spawn-fcgi
FCGI_DAEMON="/usr/bin/spawn-fcgi.standalone"
                                            
#   user and group for php daemons
USER=www-data                                                              
GROUP=www-data                                                             

#    Absolute path to php interpreter
FCGI_PROGRAM="/usr/bin/php5-cgi"

#     num php-fcgi processes, for details use:
#     http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:PerformanceFastCGI#How-many-PHP-processes-do-I-need
PHP_FCGI_CHILDREN=1                                                                                                                                        

#    Max requests processed before restart php child daemon
PHP_FCGI_MAX_REQUESTS=1000

#    php-fcgi listen TCP-port
FCGI_PORT="8888"                           

#    Bind IP for php-fcgi
FCGI_IP="127.0.0.1"                                             

test -x $FCGI_PROGRAM || exit 0
test -x $FCGI_DAEMON || exit 0

set -e

export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS

. /lib/lsb/init-functions

case "$1" in
start)
log_daemon_msg "Starting spawn-fcgi"
if ! $FCGI_DAEMON -a $FCGI_IP -p $FCGI_PORT -f $FCGI_PROGRAM -u $USER -g $GROUP -C $PHP_FCGI_CHILDREN -P $FCGI_PIDFILE; then
log_end_msg 1
else
log_end_msg 0
fi
RETVAL=$?
;;

stop)
log_daemon_msg "Killing all spawn-fcgi processes"
start-stop-daemon --stop --pidfile $FCGI_PIDFILE --signal 2 && log_end_msg 0 || log_end_msg 1
RETVAL=$?
;;

restart|force-reload)
$0 stop
sleep 1
$0 start
;;

*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 1
;;

esac

exit $RETVAL

Конфігурація nginx детально описана тут: Налаштування nginx+php-fcgi для linux CentOS, Fedora, RedHat , тому зупинятися на ній не буду.

Встановлюємо php-fcgi в автозавантаження і запускаємо:

chmod +x /etc/init.d/php-fcgi
update-rc.d php-fcgi defaults
/etc/init.d/php-fcgi start

Якщо все пройшло вдало в налаштуванні обох програм, то маємо отримати приблизно таке:

# ps ax | grep 'nginx\|php'
 1428 ?        Ss     0:00 nginx: master process /usr/sbin/nginx
 1429 ?        S      0:00 nginx: worker process
 8746 pts/2    S+     0:00 grep nginx\|php
30840 ?        Ss     0:00 /usr/bin/php5-cgi
30845 ?        S      0:00 /usr/bin/php5-cgi

Все працює нормально, перевіряємо функціональність веб-ресурсів.

Ще немає коментарів.