nginx在linux reload报错,nginx reload和reopen
nginx被停止(nginx -s stop)或者直接杀掉了进程(kill -9 nginx的进程号)后,调用命令(nginx -s reload 或者 nginx -s reopen)会报错:无法找到 "var/run/nginx.pid"文件。
这句话中,有好几个知识点,也包含了一些错误,错误得把reload或者reopen当做了启动的命令。来依次总结一下:
1.nginx的常用命令
停止:
直接杀nginx进程。 ps aux|grep nginx 查看nginx的主进程号, 调用 kill -9 nginx的进程号 来强制停止nginx。(还有 ”kill -quit nginx的进程号” 来从容停止nginx, ”kill -term nginx的进程号”来快速的停止nginx)
调用 nginx -s stop 快速停止nginx
调用 nginx -s quit 完整有序的停止nginx
启动:
进入nginx安装目录/sbin/下执行
nginx 或者 nginx -c 特定位置的nginx.conf (一般默认是 nginx -c ./logs/nginx.conf)
重启:
nginx -s reload 平滑的重启。配置重载。
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制等控制。
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
1. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
2. Nginx启动新的worker进程,采用新的配置文件
3. Nginx将新的请求分配新的worker进程
4. Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
5. 重复上面过程,知道全部旧的worker进程都被关闭掉。
所以,重启之后,master的进程号不变,worker的进程号会改变。
日志分割:
nginx -s reopen 重新打开日志文件。
为什么要切割日志?一般Nginx安装好后有些人会打开日志记录,有些人会关闭日志记录,打开日志记录的人一般都会把架设在Nginx上的所有网站日志都存在同一个文件里(比如我存在access.log日志文件里),
这样日积月累所有网站的访问记录就会把日志文件越积越大,当需要查看日志文件的时候一看就是一大串,不方便查找。现在,如果我把每天的日志文件分割开来用相应的日期标识出来这样就大大方便查找了。
我是建议打开日志记录,日志记录里面存放着很多有用的东西。比如:浏览器名称,可以方便你对网站的排版做出调整;IP地址,如果网站收到攻击,你就可以查到那个IP地址。
Linux下我们可以简单的把日志文件mv走,但是你会发现mv走后新的日志文件没有重新生成,一般linux下用的文件句柄,文件被打开情况下你mv走文件,但是原来操作这个文件的进程还是有这个文件的inode等信息,
原进程还是读写原来的文件,因此简单的mv是无法生效的。
因此建议过程如下
1. mv原文件到新文件目录中,这个时候 nginx还写这个文件(写入新位置文件中了)
2. 调用nginx -s reopen用来打开日志文件,这样nginx会把新日志信息写入这个新的文件中
这样完成了日志的切割工作, 同时切割过程中没有日志的丢失。
测试当前配置文件是否正确: nginx -t
测试指定配置文件是否正确: nginx -t 指定配置文件路径
2.var/run/nginx.pid文件
首先 var/run这个目录是干嘛用的?
此文件夹包含描述系统启动以来系统信息的数据。此文件夹下的文件必须在启动过程初期清除(删除或归零)。程序可以在/var/run下有自己的子文件夹。原先放在/etc下的进程标识(PID)文件必须放
在/var/run里面。PID文件的命名惯例是.pid。所以,nginx的PID文件名为/var/run/nginx.pid。
nginx.pid存放的是nginx的master进程的进程号。
3.为什么会报错
nginx被停止时,var/run/nginx.pid被删除了。 而 reopen和 reload命令需要通过nginx.pid获取进程号,会去找var/run.nginx.pid ,如果不存在,就报错了。
4.总结
reopen是在nginx启动的情况给做分割日志用的, reload也是在nginx启动的情况下做平滑重启的,他们都依赖于nginx进程存在的情况下。 并不是字面上启动或打开的意思。
真正的启动命令是: nginx 或者 nginx -c 指定目录的配置文件 nginx.conf。 查看进程存在即表明启动成功,之后再调用reload和reopen就不会报错了。
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
[root@VM_16_6_centos sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
nginx在linux reload报错,nginx reload和reopen相关推荐
- nginx在linux reload报错,nginx关于reload的两个错误解决方法,nginxreload
nginx关于reload的两个错误解决方法,nginxreload 解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid 重新启动服务器, ...
- nginx.exe -s reload 重启Nginx报错nginx: [error] OpenEvent(“Global\ngx_reload_1840“) failed
windows系统执行nginx.exe -s reload报错,解决办法: 在任务管理器中结束已经运行着的nginx 来到你本地nginx的目录下,找到nginx.exe,双击nginx.exe重启 ...
- nginx 缓存配置及报错解决
研究了2天的nginx缓存 出现各种报错 我把配置文件修改过后还是报错 1 2 3 4 5 6 7 location ~ /purge(/.*) { ...
- Nginx报错:nginx: [emerg] CreateFile() nginx.conf“ failed (3: The system cannot find the path specified
windows下启动nginx报错: nginx: [emerg] CreateFile() "D:\桌面\nginx-1.12.0/conf/nginx.conf" failed ...
- nginx限速方法以及报错处理
本文出自 "技术成就梦想" 博客,转载请与作者联系! 注意: nginx 1.1.8 之后的版本的语法改为limit_conn_zone $binary_remote_addr z ...
- nginx proxy_pass 使用变量报错_nginx自定义变量与内置预定义变量
nginx可以使用变量简化配置与提高配置的灵活性,所有的变量值都可以通过这种方式引用: $变量名 而nginx中的变量分为两种,自定义变量与内置预定义变量 内置变量 声明 可以在sever,http, ...
- phpstudy中的nginx无法启动,报错:10049
phpstudy中的nginx无法启动,报错:10049 最近使用phpstudy的nginx+php环境编写laravel项目,老是报错,nginx无法启动,闪了一下,又变成了红色.下面整理一下解决 ...
- Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放;服务器端口开放与关闭
Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放:服务器端口开放与关闭 文章目录: 1 问题分析 2 在Centos上开启和关闭端口 2.1 C ...
- 安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法
安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法 参考文章: (1)安装linux 系统报错:No DEFAULT or ...
- linux启动报错+centos关闭和开启ipv6
LINUX启动报错,dmesg | grep -i erro 当前位置:洪哥笔记 >Linux >centos 6关闭或开启ipv6 centos 6关闭或开启ipv6 关键词 ipv6 ...
最新文章
- 白话hash和数字签名,保证你看得懂
- 超强1000个jquery极品插件!(连载中。。。。最近更新20090710)
- 本地Yum生成数据库及常用命令
- 管理员端API——任仲行
- 使用next_permutation()的坑,你中招了么?
- 冷却水的循环方式有哪几种_一种清洁环保高效的方法处理工业循环冷却水
- python dict遍历文件_python 字典(dict)遍历的四种方法性能测试报告
- 使用Spring Form标签探索Spring Controller
- 解决Warning: Cannot modify header information - headers already sent b...
- java已被弱化签名,高效Java第四十条建议:谨慎设计方法签名
- egg extend ts_电竞5.21日王者荣耀KPL分析:DYG冲击西部榜首,TS战队能否虐菜?
- SESSION和COOKIE的使用
- android软键盘挡住输入框问题解决方法
- Sublime Text3 插件:convertToUTF8
- 【SpringBoot】24、SpringBoot中实现数据字典
- Neo4j3.5学习笔记——Traversal遍历之黑客帝国
- 2021年黑龙江企业享受税收优惠政策,财政扶持高达90%
- MacOS下无屏幕通过共享WiFi的方式为树莓派4B安装64-bit系统
- 基于Idea的Spark大数据分析--scala
- Android高级编程.
热门文章
- 蓝瘦香菇!美国帅小伙作死尝试无人机剪头发
- 模版之家第三方解析下载不用开年或终身会员也能下载
- 面相对象的总结项目(嗖嗖业务大厅)
- 常见荧光染料修饰多种基团及其激发和 发射波长数据一览数据
- 如何去实现机械灵巧手玩魔方和弹钢琴_我学会了玩魔方
- Linux环境下进行本地Blast比对——操作流程
- cc2538 BSL下载固件
- 用Python实现一个简易的“听歌识曲”demo(一)
- 路由器把服务器的地址修改,路由器修改服务器地址
- Invalid argument: Subshape must have computed start >= end since stride is negative, but is 0 and 2