基於Mac自帶nginx、php,配置php服務器

這裏基於 Mac( MacOS 10.14.0 )自帶的 nginx (1.12.0)php (PHP 7.1.23),主要有如下幾個方面:
  • php-fpm 配置
  • nginx 配置 
  • php-fpm/nginx 進程管理

Mac自帶nginx文件路徑信息php

/usr/local/bin/nginx    // 符號連接路徑
/usr/local/var/www  	// 默認服務器根目錄
/usr/local/etc/nginx 	// nginx配置目錄,nginx配置相關的文件都在這個目錄

// 啓動nginx
nginx
// or: /usr/local/bin/nginx複製代碼
php-fpm 相關信息

/etc/php-fpm.conf.default          // php-fpm默認配置文件
/etc/php-fpm.d/www.conf.default    // 進程擴展配置文件
/usr/sbin/php-fpm                  // 符號連接路徑複製代碼

由於是Mac自帶的nginx和php,因此免去安裝部分,直接說明運行和配置

♢ 啓動nginx服務器

經過 nginx --version (or -v) 查看nginx的版本信息

啓動nginx服務器(能夠直接在控制檯輸入nginx,回車)html

nginx
複製代碼
沒有報錯的話,能夠在瀏覽器裏面輸入127.0.0.1:8080,看是否顯示出nginx啓動成功的提示信息



♢ 配置php-fpm

一樣能夠使用, php-fpm -v (或 --version) 查看版本信息

若是沒有指定配置文件直接啓動php-fpm,會報錯,雖然在 /private/etc/ 目錄有 php-fpm.conf.default 文件,但 php-fpm啓動時默認找的是 php-fpm.conf


因此先從php-fpm.conf.default copy 一份 php-fpm.confnginx

cd /private/etc
cp php-fpm.conf.default php-fpm.conf複製代碼

打開php-fpm.conf 找到 ; error_log = log/php-fpm.log 這一行,在下面加一行 error_log = /usr/local/var/log/php-fpm.log,以指定錯誤日誌文件,防止報錯
而後進入到php-fpm.d 目錄

cd php-fpm.d
cp www.conf.default www.conf    // 一樣copy一份 www.conf複製代碼

嘗試啓動php-fpm:

php-fpm
// or
php-fpm -D複製代碼

驗證是否啓動成功,一樣經過 ps -ef | grep php-fpm 查看是否 php-fpm的相關進程


也能夠爲php-fpm 指定配置文件啓動瀏覽器

php-fpm –c php.ini –y php-fpm.conf複製代碼

php-fpm 的關閉、重啓,先經過 ps -ef | grep php-fpm 找到運行中的php-fpm進程的PID,而後經過 kill -s signal PID 的方式進行管理.  相關signal有:

信號
做用
INT
當即終止
QUIT
平滑終止
USR1
從新打開日誌文件
USR2
重啓(平滑重載全部worker進程並從新載入配置和二進制模塊)

♢ 配置nginx

在默認的server 配置裏面,找到註釋掉的php相關配置,放開註釋,並修改爲以下配置(修改過程當中注意分號,不要落了,不然nginx啓動時會報錯)

location ~ \.php$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;     // 主要爲這一行
    include fastcgi_params;
 }複製代碼
root html指向nginx 服務器默認根目錄 /usr/local/var/www,在這裏建立一個index.php 並寫入一行php代碼,以驗證服務可用性

cd /usr/local/var/www
echo "<?php echo 11;" > index.php複製代碼
重啓nginx服務器

nginx -s reload複製代碼

沒有報錯,就能夠使用 ps -ef | grep nginx 查看是否有相關進程,以驗證nginx是否啓動成功。在瀏覽器輸入: 127.0.0.1:8080/index.php
若是頁面顯示php中echo 的 11,說明配置成功。

♢ nginx進程管理

nginx -s stop       // fast shutdown
nginx -s quit       // graceful shutdown
nginx -s reload     // reloading the configuration file
nginx -s reopen     // 從新打開日誌文件複製代碼
nginx 的進程分爲 mater process (master 進程)worker process(worker進程),master(主)進程負責worker(工做)進程的管理,而worker 進程則負責處理請求, 還有可能有cache相關進程。

有兩種工做模式:
  • 單進程模式:nginx只會有一個進程,該進程即充當master進程角色,又充當worker進程角色
  • 多進程模式:nginx會有一個master進程(也只有一個),且至少有一個worker進程

stop 信號會立刻結束全部進程,而quit 信號是等到完成當前請求的相關服務後,才退出進程。

當配置文件更改後,須要經過reload 信號通知nginx使用新的配置來啓動新進程,nginx master 進程收到reload信號後,會檢查新配置文件的正確信,若是沒有問題,則會fork出基於新配置的新worker進程,接收新的請求,併發送通知基於就配置文件的工做進程關閉,收到關閉信號的進程經過quit信號的形式,先結束服務,再關閉。若是有問題,則master進程會回滾配置,繼續使用舊的配置文件。

也能夠經過kill 命令發送相應的指令給指定的pid,來結束nginx對應的nginx工做進程。如經過 ps -ef | grep nginx (或經過 ps -ax | grep nginx)來找到nginx的worker進程process ID

ps -ef | grep nginx
501 83158     1   0  4:44PM ??         0:00.01 nginx: master process nginx
501 85683 83158   0  5:58PM ??         0:00.00 nginx: worker process複製代碼

而後,kill -s QUIT 85683 經過quit信號的形式結束PID 爲85683 的worker進程。 nginx mater 進程信號及做用列表:bash

信號
做用
INT,TERM
當即終止
QUIT
平滑終止
HUP
changing configuration, keeping up with a changed time zone (only for FreeBSD and Linux), starting new worker processes with a new configuration, graceful shutdown of old worker processes
USR1
從新打開日誌文件
USR2
upgrading an executable file
WINCH
graceful shutdown of worker processes
相關文章
相關標籤/搜索