nginx結合php使用FastCGI方式 apache結合php,php是做爲一個模塊加載到apache中 #(1)FastCGI工做原理 php
1.用戶發送http請求報文給nginx服務器 2.nginx會根據文件url和後綴來判斷請求 3.若是請求的是靜態內容,nginx會將結果直接返回給⽤戶 4.若是請求的是動態內容,nginx會將請求交給fastcgi客戶端,經過fastcgi_pass將這個請求發送給php-fpm 5.php-fpm收到請求後會經過本地監聽的socket交給wrapper 6.wrapper收到請求會生成新的線程調用php動態程序解析服務器 7.若是用戶請求的是博文、或者內容、 PHP會請求MySQL查詢結果 8.php會將查詢到的結果交給Nginx 10.nginx會生成一個響應報文返還給用戶
php-fpm負責接收請求,/etc/php.ini wrapper生成子進程解析用戶的請求(php文件),配置文件/etc/php-fpm.conf /etc/php-fpm.d
#(2)php-ini優化nginx
#vim /etc/php.ini sql.safe_mode = Off //打開php的安全模式,控制php執⾏危險函數, 默認是Off,改成On expose_php = On //關閉php頭部信息, 隱藏版本號, 默認是On,該爲Off display_error = Off //記錄錯誤日誌至後臺,方便追溯 error_reporting = E_WARNING & E_ERROR memory_limit = 128M //每一個腳本時間最大內存 upload_max_filesize = 2M //上傳文件最大許可,默認2M,建議調整爲16,32M allow_url_fopen = On //禁止遠程執行phpshell,默認On,建議Off date.timezone = PRC //時區調整,默認PRC, 建議調整爲Asia/Shanghai
優化後的配置文件詳情sql
sql.safe_mode = Off expose_php = Off display_error = Off error_reporting = E_WARNING & E_ERROR log_errors = On error_log = /var/log/php_error.log upload_max_filesize = 50M allow_url_fopen = Off date.timezone = Asia/Shanghai
#(3)php-fpm優化 1.php-fpm生產環境配置文件,適合4核16G和8核16Gshell
# cat /etc/php-fpm.d/www.conf [global] pid = /var/run/php-fpm.pid error_log = /var/log/php/php-fpm.log log_level = warning rlimit_files = 655350 events.mechanism = epoll [www] user = nginx group = nginx listen = 127.0.0.1:9000 listen.owner = www listen.group = www listen.mode = 0660 listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 512 pm.start_servers = 10 pm.min_spare_servers = 10 pm.max_spare_servers = 30 pm.process_idle_timeout = 15s; pm.max_requests = 2048 php_flag[display_errors] = off php_admin_value[error_log] = /var/log/php/php-www.log php_admin_flag[log_errors] = on request_slowlog_timeout = 5s slowlog = /var/log/php/php-slow.log
2.php-fpm配置詳解apache
[global] pid = /var/run/php-fpm.pid //pid設置, 記錄程序啓動後pid error_log = /var/log/php/php-fpm.log //php-fpm程序啓動錯誤日誌路徑 log_level = warning //錯誤級別,默認: notice. rlimit_files = 655350 //文件打開描述符的rlimit限制 events.mechanism = epoll //epoll模型 [www] user = nginx //啓動進程的用戶和組 group = nginx listen = 127.0.0.1:9000 //fpm監聽端口 listen.owner = www listen.group = www listen.mode = 0660 listen.allowed_clients = 127.0.0.1 //容許訪問FastCGI進程的IP,any不限制 pm = dynamic //pm設置動態調度 pm.max_children = 512 //同一時刻最大的php-fpm子進程數量 pm.start_servers = 10 //動態方式下的起始php-fpm進程數量 pm.min_spare_servers = 10 //動態方式下服務器 空閒時最小php-fpm進程數量 pm.max_spare_servers = 30 //動態 方式下服務器 空閒時最大php-fpm進程數量 pm.process_idle_timeout = 15s; //空閒超時時間 pm.max_requests = 2048 //最大請求 php_flag[display_errors] = off //FPM狀態頁面,用於監控php-fpm狀態使用 php_admin_value[error_log] = /var/log/php/php-www.log php_admin_flag[log_errors] = on request_slowlog_timeout = 5s //配置php慢查詢,以及慢查詢記錄日誌位置 slowlog = /var/log/php/php-slow.log