今天來筆記如何在 Ubuntu 底下完整安裝 Nginx + PHP FastCGI,以及了解 Nginx 基本設定。我想大家都知道 Apache 是一個很好的 Web Server 伺服器,也常常用在個人網站,或者一般小型專案,網路上也有一堆懶人包,如 Appserv, Xampp,對於新手入門來說 Apache 是一個很好的選擇,但是您會發現用了 Apache 後,系統記憶體常常飆高 XD,載入太多額外不必要的模組,所以非常肥大,那這次就來嘗試另外一套 Web 伺服器 Nginx 吧。
安裝套件
Ubuntu 可以透過 apt-get 方式安裝
代碼: 選擇全部
$ apt-get update
$ apt-get upgrade
$ apt-get install nginx php5-cli php5-cgi spawn-fcgi psmisc
開機自動執行 PHP FastCGI
建立 PHP FastCGI 開機啟動 Script,首先打開 /etc/init.d/php-fcgi (如果無此檔案,請用 touch 方式產生),將底下 shell script 程式碼放入
代碼: 選擇全部
#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=15
PHP_FCGI_MAX_REQUESTS=1000
PHP_CGI=/usr/bin/php5-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0
start() {
echo -n "Starting PHP FastCGI: "
start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: php-fcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
代碼: 選擇全部
chmod +x /etc/init.d/php-fcgi
代碼: 選擇全部
# start the fast cgi
/etc/init.d/php-fcgi start
# stop the fast cgi
/etc/init.d/php-fcgi stop
# restart fast cgi
/etc/init.d/php-fcgi restart
代碼: 選擇全部
update-rc.d php-fcgi defaults
Nginx 設定檔目錄在 /etc/nginx/,我們打開設定檔 nginx.conf
代碼: 選擇全部
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
代碼: 選擇全部
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
keepalive_timeout 0;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
}
代碼: 選擇全部
location / {
root /var/www;
index index.php index.html index.htm;
}
代碼: 選擇全部
/etc/init.d/nginx restart
代碼: 選擇全部
<?php
phpinfo();
?>
代碼: 選擇全部
# 建立目錄
mkdir /var/www/www.example.com
# 建立設定檔
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
# 連結
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
# 重新啟動伺服器
/etc/init.d/php-fcgi start
/etc/init.d/nginx restart
請注意網站設定檔是否設定錯誤
代碼: 選擇全部
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
其他參考網站:
PHP FastCGI with nginx on Ubuntu
架設 Nginx + PHP FastCGI 於 Ubuntu Linux 10.04
Nginx and PHP-FastCGI on Ubuntu 10.10 (Maverick)
官方 Wiki: PHPFcgiExample (必看)
官方 Wiki: Configuration