1. 程式人生 > >LNMP 一鍵安裝包優化

LNMP 一鍵安裝包優化

lnmp 作為現在phper的主流安裝包, 有其自身很強大的優點. 但是安裝完後, 也不是100%適配你自己的系統. 我在安裝後, 對其幾處不太合適的地方做了一下總結.

opcache 優化

通過 lnmp 的 addon 指令碼可以安裝 opcache, 但是安裝完後會發現, 每次改一個檔案, 總要60s 之後才生效.

修改 php.ini 中的配置項 validate_timestampsrevalidate_freq 兩個選項後, 仍然不起效果.

很明顯, 配置並沒有生效. 那我們查詢一下是否有 Additional ini 檔案.

php -i | grep Additional
Additional .ini files parsed =
> /usr/local/php/conf.d/004-opcache.ini,

ok, 修改004-opcache.ini檔案的相關選項.

php-fpm 報錯設定

修改 php.ini 檔案中 display_errors = On, 就可以顯示錯誤. 但是在線上環境強烈建議關閉此選項, 防止錯誤資訊暴露程式碼的路徑版本等資訊.

通過如下程式碼, 在單獨業務程式碼+環境中啟用報錯.

error_reporting("E_ALL");
ini_set("display_errors","On");

解釋 php.ini 其他報錯設定

display_startup_errors: php 啟動階段的錯誤. html_errors

: 配合另外一個docref_root, 錯誤用 html 形式展示.

502 Bad Gateway

The proxy server received an invalid response from an upstream server.

這種情況, 未開啟 PHP-fpm 報錯, 導致 fpm 未傳送任何資訊給 nginx 就關閉和 nginx 通訊. 開啟報錯, 就可以顯示出錯誤.

open_basedir restriction in effect

open_basedir是 php.ini 的一個配置, 主要是限制 php 僅能訪問配置目錄下的檔案. 可以通過 php-fpm.conf & nginx.conf 進行配置.

php web 系統中, 通常會將 index.php 檔案放入 web 目錄下, 其他業務程式碼放在其他目錄. LNMP 在預設的 nginx 配置檔案fastcgi.conf 中

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

修改為

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";