在前一個章節裡:
Part 3 安裝 NGINX 網頁伺服器關於Nginx 執行PHP網頁的方式:
php-fpm 的執行在Fedora 29 Server上的重要資訊:
- 預設的執行帳號: 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-fpm在nginx 的設定資料夾中加入的設定檔,在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
留言
張貼留言