栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

虚拟机重启后再次重启nginx: [error] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

虚拟机重启后再次重启nginx: [error] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory)

昨天,服务器进行清理,关闭了服务器,今天,输入域名想要访问服务器发现网页打不开了,首先想到的是nginx的问题,然后就登录服务器重启了nginx,结果出现了这个错误:nginx: [error] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory) 问题分析: 提示信息提示在/var/run/nginx/目录下找不到nginx.pid文件 解决方法: 方法一、修改nginx.conf配置文件 1.cd /usr/local/nginx/conf 进入conf目录,编辑配置文件nginx.conf 2.配置文件中有个注释的地方: #pid        logs/nginx.pid; 将注释解开,并修改为pid    /usr/local/nginx/logs/nginx.pid; 此时,如果我们启动nginx可能会存在这个问题:nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory) 2021/10/30 19:08:56 [emerg] 6996#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory) 这是为什么呢?因为我们/usr/local/nginx目录下没有logs文件夹呀!继续后面的步骤: 3.在/usr/local/nginx目录下创建logs目录:mkdir /usr/local/nginx/logs 4.启动nginx服务: /usr/local/nginx/sbin/nginx 启动成功,查看nginx启动情况 方法二、创建目录/var/run/nginx/ 1.cd /var/run 进入run目录,创建nginx文件夹 2.创建nginx.pid文件:touch nginx.pid 3.启动nginx服务: /usr/local/nginx/sbin/nginx 启动成功,查看nginx启动情况 最后,我们分析一下为什么会产生这个问题: nginx被停止时,var/run/nginx.pid被删除了。 reload命令需要通过nginx.pid获取进程号,会去找var/run.nginx.pid ,如果不存在,就报错了。  reload是在nginx启动的情况下做平滑重启的,他们都依赖于nginx进程存在的情况下,如果我们服务器关闭,那么应该是用nginx的启动命令进行启动,而不是重启。 最近每天都关闭服务器,设置nginx开机自启没有成功,两天都鼓捣这个nginx启动了,今天发现原来自己闹了个大笑话,,,,,,不过有收获啦,嘿嘿 另外,启动nginx之后,如果发现浏览器依旧打不开,那么,我们可以从下面两方面排查: 1.nginx端口号是否启动(nginx默认端口号是80) #查看要用的端口号是否开启 sudo firewall-cmd --zone=public --query-port=端口号/tcp #防火墙启动了但是端口号没有被开启,则开启要用的端口号 sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent 2.端口号启动了网页还是不能打开,考虑防火墙是否开启 #重启防火墙 sudo systemctl restart firewalld.service 如果上面两个方法还是没有解决您的问题,那么就要去查更多的资料啦,不过不要难过,解决问题的过程才是成长的过程嘛~~~ 小tips: 启动nginx的命令为     /usr/local/nginx/sbin/nginx   没有提示表示启动成功 停止nginx的命令为    /usr/local/nginx/sbin/nginx -s stop 重启nginx的命令为    /usr/local/nginx/sbin/nginx -s reload 检查语法                   /usr/local/nginx/sbin/nginx -t 另外,启动成功之后发现一个有意思的情况,一个服务,好多个进程,有一个master和多个worker,查了些资料和大家分享: nginx.pid文件就是一个纯文本文件,存放的是nginx的master进程的进程号。 nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制等控制。 nginx -s  reload 命令加载修改后的配置文件,命令下达后会发生如下事件: 1. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作 2. Nginx启动新的worker进程,采用新的配置文件 3. Nginx将新的请求分配新的worker进程 4. Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程 5. 重复上面过程,直到全部旧的worker进程都被关闭掉。 重启之后,master的进程号不变,worker的进程号会改变。 漂亮~~~
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/388841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号