Nginx serwer www z obsługą php@FastCGI part II
Jest to kontynuacja artykułu: Nginx z obsługą php@FastCGI part I
Przed rozpoczęciem konfiguracji nginx-a musimy zaopatrzyć sie w następujące pakiety: php5, php5-cgi, spawn-cgi, jeśli będziemy chcieli wykorzystywać bazę np. mysql to dodatkowo:php5-mysql, php5-mcrypt. Aplikację spawn-cgi, zapożyczymy z pakiety lighttpd.
- na wstępie konfigurujemy php5-cgi, edytując plik /etc/php5/cgi/php.ini
- a w nim ustawiamy: cgi.fix_pathinfo=1
- pobieramy pakiet lighttpd: wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.26.tar.gz
- rozpakowujemy go: tar -xvjf lighttpd-1.4.26.tar.gz , wchodzimy do katalogu
- ./configure
- kompilujemy make
- i bierzemy co nas interesuje: cp src/spawn-fcgi /usr/bin/spawn-fcgi
- nano /usr/bin/php-fastcgi i wklejamy:
#!/bin/sh /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 3 -u www-data -f /usr/bin/php5-cgi
gdzie:
-a - interfejs na którym nasłuchuje
-p - port na którym nasłuchuje
-C - ilość uruchomionych procesów
-u - z jakimi prawami uruchamiamy proces
- następnie tworzymy skrypt startowy do fastcgi, tworzymy plik /etc/init.d/fastcgi
#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
RETVAL=0
case "$1" in
start)
$PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php5-cgi
RETVAL=$?
;;
restart)
killall -9 php5-cgi
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
- Teraz przechodzimy do konfiguracji samego nginx-a W wielkim uproszczeniu różnica między konfiguracją serwującą statyczny kontent a do serowania dynamicznych stron znajduje się w dyrektywie location:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME katalog_naszej_strony$fastcgi_script_name;
include fastcgi_params;
}
}
Warto zoptymalizować konfigurację tak, aby do interpretera PHP trafiały wyłącznie żądania wymagające serwowanie "dynamicznych stron".
PHP potrafi też serwować statyczne pliki czy obrazki ale nginx zrobi to szybciej i mniejszym kosztem.
Na przykład:
location = /images {
auth_basic off;
root /var/www/strona/images;
}
location / {
root /var/www/strona;
index index.php;
}
location = /50x.html {
root /var/www/nginx-default;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/strona$fastcgi_script_name;
include fastcgi_params;
}
}
Powrót »