单独拆分一篇小文章,貌似上一篇文章篇幅有点多,更多内容可以见上一篇文章,答疑解惑之nginx,欢迎各位大佬去提出意见啊!!!
针对macOs系统,我们一般用Homebrew去安装nginx,但是我们执行nginx重启命令有时候会遇到以下错误:
nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
看字面大概意思是没有nginx.pid文件,下面我们进到/usr/local/var/run/目录发现确实没有这个文件。大家都知道一般解决办法都是在终端执行下面的命令:
sudo nginx -c /usr/local/etc/nginx/nginx.conf
那为什么执行这个命令就有这个文件了呢?
我们都知道 nginx -c 命令是指定一个配置文件,当在终端执行完后发现不报错了,我们现在可以看下这个文件的内容究竟是什么。
在终端执行下面的命令:
cat /usr/local/var/run/nginx.pid
查看该文件的内容,发现内容只有一行数字。
这个数字其实是该进程的id,这个文件的作用是为了防止启动多个进程副本。
我们可以用ps -ef|grep nginx查看nginx的进程信息:
这个时候问题又出来了,为什么会有多个id?
nginx遵循Master-Worker设计模式,是以多进程的方式来工作的,nginx在启动后,会有一个master进程和多个worker进程,master进程主要用来管理worker进程(所以也可以用kill -QUIT 主进程号等方法关闭nginx)。
当主进程存在时,nginx.pid文件就会存在,内容为主进程id,当进程关掉后nginx.pid文件也就自动删除了,所以需要我们去指定配置文件。
更多内容可以见上一篇文章,答疑解惑之nginx 🎉🎉🎉🎉🎉