快速安裝Nginx+PHP以Ubuntu為例

Posted by JSON on February 10, 2016

先更新套件清單,確保安裝的版本是最新的

sudo apt-get update

安裝Nginx

在Ubuntu上安裝Nginx就只要一個指令相當簡單(自己編譯的不算),還沒有安裝Nginx可以先執行:

sudo apt-get install nginx

安裝完成後,Nginx的設定檔位於/etc/nginx底下

安裝PHP

sudo apt-get install php5-fpm

修改PHP設定檔/etc/php5/fpm/php.ini,找到cgi.fix_pathinfo=1,將其值改為0:

cgi.fix_pathinfo=0

如此PHP的只會處理確切位置的檔案,一來加快速度二來更安全,修改完後重新啟動PHP:

sudo service php5-fpm restart

在Nginx掛上PHP

修改預設virtual host file:/etc/nginx/sites-available/default, 或是你想支援PHP的設定檔,加入如下設定:

location ~ \.php$ {
  try_files $uri =404;
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;     
}

如此會針對帶有.php副檔名的要求,嘗試尋找要求的php檔案交給php-fpm處理,加完設定後檔案樣貌大概如下:

# 略
server {
  listen 80;
  root /var/www;
  server_name example.com;

  # 略
  
  # pass the PHP scripts to FastCGI server listening on the php-fpm socket
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

}
# 略

完成後重新啟動Nginx:

sudo service nginx restart

最後加入info.php檔案到/var/www底下測試,內容如下:

<?php
phpinfo();
?>

可使用curl指令測試你的info.php是否產生了相關的回應:

curl http://127.0.0.1/info.php