Nginx php

From Help system
Jump to: navigation, search

nginx + php + spawn-fcgi

wget http://www.sysoev.ru/nginx/nginx-0.5.30.tar.gz
tar -zxf nginx-0.5.30.tar.gz
cd nginx-0.5.30

wget http://internap.dl.sourceforge.net/sourceforge/pcre/pcre-6.1.tar.gz
tar -zxf pcre-6.1.tar.gz

./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=pcre-6.1

make
make install

cd ..
wget http://www.php.net/get/php-5.2.3.tar.gz/from/uk.php.net/mirror
tar -zxf php-5.2.3.tar.gz
cd php-5.2.3

патчи, если нужно ... и т.д. но --enable-fastcgi обязательно

php -i | grep configure | sed "s/'//g" | sed "s/'//g"

'./configure'  '--prefix=/usr/local/nginx/php' '--enable-fastcgi'

make
make install

cd ..
wget http://www.lighttpd.net/download/lighttpd-1.4.16.tar.gz
tar -zxf lighttpd-1.4.16.tar.gz
cd lighttpd-1.4.16
./configure
make

cp src/spawn-fcgi /usr/local/bin/spawn-fcgi
cp doc/spawn-php.sh /usr/local/nginx/

В /usr/local/nginx/spawn-php.sh подправить

SPAWNFCGI="/usr/local/bin/spawn-fcgi"
FCGIPROGRAM="/usr/local/nginx/php/bin/php-cgi"

и дальше в зависимости от нагрузки.

/usr/local/nginx/spawn-php.sh

Проверить lsof -i tcp:1026, должно быть что-то вроде:

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
php-cgi 547 user 0u IPv4 3147032 TCP *:1026 (LISTEN)
php-cgi 548 user 0u IPv4 3147032 TCP *:1026 (LISTEN)
...
...
php-cgi 549 user 0u IPv4 3147032 TCP *:1026 (LISTEN)


/etc/init.d/nginx

#!/bin/sh
# nginx - this script starts and stops the nginx daemin
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/nginx.conf
# pidfile: /var/run/nginx.pid

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/nginx"
prog=$(basename $nginx)

[ -e /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx

start() {
echo -n $"Starting $prog: "
daemon $nginx -c /usr/local/nginx/nginx.conf
/usr/local/nginx/spawn-php.sh
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
killall -9 php-cgi
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
stop
start
}

reload() {
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

fdr_status() {
status $prog
}

case "$1" in
start|stop|restart|reload)
$1
;;
force-reload)
force_reload
;;
status)
fdr_status
;;
condrestart|try-restart)
[ ! -f $lockfile ] || restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
exit 2
esac

/usr/local/nginx/nginx.conf

location ~ \.php$ {
            fastcgi_pass   127.0.0.1:1026;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            fastcgi_param  QUERY_STRING     $query_string;
            fastcgi_param  REQUEST_METHOD   $request_method;
            fastcgi_param  CONTENT_TYPE     $content_type;
            fastcgi_param  CONTENT_LENGTH   $content_length;
        }
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox