close

 

前情提要:

 

Fedora 29 架站實務 之 Part 3 安裝 Nginx 網頁伺服器

 

 

關於Nginx 執行PHP網頁的方式:

 

 

 

php-fpm 的執行在Fedora 29 Server上的重要資訊:

 

  • 服務名稱: php-fpm
  • 預設的執行帳號: apache
  • 設定檔案位置: /etc/php-fpm.conf /etc/php-fpm.d/www.conf
  • Nginx Hook-Up設定: /etc/nginx/default.d/php.conf
  • Cache/Session資訊儲存: /var/lib/php/
  • Log檔案位置: /var/log/php-fpm/
  • 預設通訊Socket: /run/php-fpm/www.sock
  • 服務預設狀態: 不開機啟動,停止

 

 

備註:

 

還記得我們討論過Linux上都是以apache 作為預設的HTTP伺服器嗎,還記得前面Fedora 是個Bloody-Cutting Edge 導向的Linux?

是的,在這邊我們看出了非常荒謬的Script:

安裝軟體時,Script 有偵測到nginx安裝,於是便很貼心的寫好了nginx的設定放在nginx的設定資料夾下,做好hook-up,但執行權限卻是apache,而不是nginx,這會導致權限喬不攏,會變成: nginx 可以執行php網頁,但是一旦php網頁需要進行網頁資料夾寫入的時候就會出現問題。

 

 

安裝 php-fpm:

 

# dnf install php-fpm

 

 

 

改權限:

 

 

更改php-fpm執行的使用者:

 

# nano /etc/php-fpm.d/www.conf

 

找到 user = apache group = apache

改成 user = nginx group = nginx

按下Ctrl + O 儲存之後,再按下Ctrl + X 離開

 

 

 

當然這樣還不夠,我們仍要調整其他目錄的權限:

 

# chown -R root.nginx /var/lib/php/opcache

# chown -R root.nginx /var/lib/php/session

# chown -R root.nginx /var/lib/php/wsdlcache

 

 

 

Log 目錄的權限調整給nginx:

 

# chown -R nginx.root /var/log/php-fpm/

 

 

 

請注意:

 

chown 是更改一個目錄或檔案的擁有者,語法是:

chown [-R(是否要連資料夾中的所有子項目都要套用)] [屬於的擁有者](點或冒號)[屬於的Group] [目標目錄] (範例: chown -R nginx.root /some/folder/ chown -R nginx:root /some/folder/)

所以 chown -R nginx.root chown -R root.nginx 意義是截然不同的,前後不可對調

至於為什麼一個是root.nginx 一個是nginx.root 的原因在於 一個原先的權限設定是root.apache 一個是apache.root,我們僅只將apache調換,但一個是屬於的Group一個是屬於的擁有者。

關於Linux的權限,請參閱Google,本站尚未細述。

 

 

將服務設定為開機啟動:

 

# systemctl enable php-fpm

 

 

將服務啟動:

 

# systemctl start php-fpm

 

 

 

重新啟動nginx:

 

方才php-fpmnginx 的設定資料夾中加入的設定檔,在nginx 沒有重新啟動前,新加入的設定或調整都是無效的:

 

# systemctl restart nginx

 

 

 

求救:

 

我很手X,我還沒做完上述動作就啟動了php-fpm 服務怎麼辦 ?

: 請先停止php-fpm 服務,照上述的動作做一次。之後再重新啟動服務。

 

 

測試php-fpm 是否在nginx上運作正常:

 

我們這時在nginx 的預設網站目錄裡面建立一個php測試網頁: phptest.php

# cd /usr/share/nginx/html/

# nano phptest.php

檔案內容:

<? php

phpinfo();

?>

完成後請儲存。

 

回到電腦,打開測試網頁:

 

打開瀏覽器,輸入: http://[你的IP]/phptest.php

 

如果出現以下畫面代表php-fpm nginx能夠hook-up,設定也正確:

 

 

完成後,請移除測試檔:

 

# rm -rf /usr/share/nginx/html/phptest.php

 

 

為什麼你應該移除phpinfo() 的測試網頁:

phpinfo 含有許多敏感資訊: 目前執行的php版本,php附加的元件,這些都可以成為資安漏洞(e.g. 假如我是駭客,我清楚你的php執行之版本漏洞,我也清楚你使用了什麼元件,因此來決定我下手的方式)

arrow
arrow

    狼志浩 發表在 痞客邦 留言(0) 人氣()