这里基于
Mac( MacOS 10.14.0 )
自带的
nginx (1.12.0)
和
php (PHP 7.1.23)
,主要有以下几个方面:
- php-fpm 配置
- nginx 配置
- php-fpm/nginx 进程管理
Mac自带nginx文件路径信息
/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,回车)
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.conf
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 进程信号及作用列表:
信号
|
作用
|
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
|
转载于:https://juejin.im/post/5cf33ff16fb9a07f091b8b4a