基于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文件路径信息

/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

猜你喜欢

转载自blog.csdn.net/weixin_34244102/article/details/91463280