Nginx运行和控制命令
来源:互联网 发布:记账app 知乎 编辑:程序博客网 时间:2024/06/05 15:45
nginx命令行参数
Nginx 仅有几个命令行参数,完全通过配置文件来配置
-c </path/to/config> 为 Nginx 指定一个配置文件,来代替缺省的。
-t 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
-v 显示 nginx 的版本。
-V 显示 nginx 的版本,编译器版本和配置参数。
nginx控制信号
可以使用信号系统来控制主进程。默认,nginx 将其主进程的 pid 写入到 /usr/local/nginx/nginx.pid 文件中。通过传递参数给 ./configure 或使用pid 指令,来改变该文件的位置。
主进程可以处理以下的信号:
用新的配置开始新的工作进程
从容关闭旧的工作进程USR1重新打开日志文件USR2平滑升级可执行程序。WINCH从容关闭工作进程
尽管你不必自己操作工作进程,但是,它们也支持一些信号:
如何给主进程发送信号呢?首先要知道主进程的进程号PID?
获取PID有两个途径,
一个是,在Nginx启动后,默认在Nginx服务器安装目录下面的logs/nginx.pid文件,里面存储主进程的PID 。
#cat /usr/local/nginx/logs/nginx.pid
二个是,在Linux下面使用ps命令查看主进程的PID.
列出所有信号名称命令:
kill -l
先Nginx服务主进程发送信号也有两种方法:
第一种是使用nginx二进制文件
在nginx -s 参数后面有 stop,quit,reopen,reload等几个选项可以使用。
另一种方法是使用kill命令发送信号
nginx 启动、停止、重启命令
nginx启动
sudo /usr/local/nginx/nginx (nginx二进制文件绝对路径,可以根据自己安装路径实际决定)
nginx从容停止命令,等所有请求结束后关闭服务
kill -QUIT nginx主进程号 其实是信号SIGQUIT 3
nginx 快速停止命令,立刻关闭nginx进程
kill -TERM nginx主进程号 其实是信号SIGTERM 15
如果以上命令不管用,可以强制停止
kill -9 nginx主进程号 其实是信号SIGKILL 9
如果嫌麻烦可以不用查看进程号,直接使用命令进行操作
其中/usr/local/nginx/nginx.pid 为nginx.conf中pid命令设置的参数,用来存放nginx主进程号的文件
kill -信号类型(HUP|TERM|QUIT) `cat /usr/local/nginx/nginx.pid`
例如
kill -QUIT `cat /usr/local/nginx/nginx.pid`
nginx重启命令
nginx重启可以分成几种类型
1.简单型,先关闭进程,修改你的配置后,重启进程。
kill -QUIT `cat /usr/local/nginx/nginx.pid` 或者直接 TERM和INT
sudo /usr/local/nginx/nginx
2.重新加载配置文件,不重启进程,不会停止处理请求
3.平滑更新nginx二进制,不会停止处理请求
平滑重启
而最有趣的是能平滑改变 nginx 配置的选项(请注意,在重载前,要先测试一下配置文件):
# nginx -t -c /etc/nginx/nginx.conf2006/09/16 13:07:10 [info] 15686#0: the configuration file /etc/nginx/nginx.conf syntax is ok2006/09/16 13:07:10 [info] 15686#0: the configuration file /etc/nginx/nginx.conf was tested successfully如果-q和-t联用,配置文件无错误,将不输出上面的内容。-q suppress non-error messages during configuration testing 测试配置时只显示错误所以在测试的时候可以 -q -t -c 三个参数一起使用#ps aux | egrep '(PID|nginx)'USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 2213 0.0 0.0 6784 2036 ? Ss 03:01 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf# kill -HUP 2213
当 nginx 接收到 HUP 信号,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则使用默认的),成功的话,就应用新的配置文件(例如:重新打开日志文件或监听的套接 字)。之后,nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。 如果新的配置文件应用失败,nginx 将继续使用旧的配置进行工作。
平滑升级
为了实现Nginx服务器的平滑升级,新的服务器安装路径应该和旧的保持一致,建议在安装新服务器之前先备份旧服务器,
可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。首先,使用新的可执行程序替换旧的(最好做好备份),,依次启动新的主进程和新的工作进程:
在upgrade过程中,还涉及到3个信号(USR2、WINCH和QUIT)。
首先发送USR2信号给原master,原master进程会额外启动一个master进程和若干worker进程,新旧worker进程同时提供对外服务。
第二步发送WINCH信号,原worker进程停止服务并退出。
最后发送QUIT信号给原master使之退出,只保留新的master和worker。1.备份旧程序,下载新程序
备份原有的/usr/local/nginx下的所有文件,打包压缩到本地目录下
#tar -czvf old_nginx.tar.gz /usr/local/nginx/
首先下载新的Nginx从http://nginx.org/网站,下载解压
还是一套流程,configure,make,make install,其中
#./configure --prefix=/usr/local/nginx ##新的服务器安装路径应该和旧的保持一致
# make && make install
2.首先发USR2给旧版本的Nginx主进程号
#kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` 旧版本的Nginx主进程号
这个时候/usr/local/nginx/logs/nginx.pid无任何变化。
3.然后执行新的可执行程序
#/usr/local/nginx/sbin/nginx
主进程将重命名它的.pid 文件为.oldbin (比如:/usr/local/nginx/logs/nginx.pid.oldbin)
PID PPID USER %CPU VSZ WCHAN COMMAND33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)33135 33126 nobody 0.0 1380 kqread nginx: worker process (nginx)33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
在这时,两个 nginx 实例会同时运行,一起处理输入的请求。要逐步停止旧的实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭:
PID PPID USER %CPU VSZ WCHAN COMMAND33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx33135 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx)36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
一段时间后,旧的工作进程处理了所有已连接的请求后退出,就仅由新的工作进程来处理输入的请求了:
PID PPID USER %CPU VSZ WCHAN COMMAND33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
恢复到以前
旧的服务器还尚未关闭它监听的套接字,所以可以恢复旧的服务器:
- 发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程
- 发送 TERM 信号给新的主进程,迫使其退出
- 如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号
新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,一切就都恢复到升级之前了。
在发送WINCH信号之前,可以随时停止新的Nginx服务
升级成功
如果升级成功,那必然要关闭旧的服务器进程,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行:
PID PPID USER %CPU VSZ WCHAN COMMAND 36264 1 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
- Nginx运行和控制命令
- 运行和控制Nginx
- 运行和控制Nginx
- 运行和控制Nginx
- 运行和控制Nginx
- 运行和控制Nginx
- 运行和控制Nginx
- 运行和控制 Nginx - 命令行参数和信号
- 运行和控制 Nginx - 命令行参数和信号
- NginX控制命令
- nginx信号量控制命令
- 控制Nginx的shell命令
- Nginx的控制命令小结
- 控制台下运行cl命令
- nginx进程和实时控制
- 如何把apache和nginx 加入到系统服务,用service 命令来控制启动、停止
- 突然发现的关于控制进程停止和运行的命令
- 如何用运行命令打开鼠标控制
- 用队列写贪吃蛇(C语言版)
- 程序员的故事 008 编程语言之争
- MFC双缓冲绘图
- linux redis安装
- (java)Binary Tree Preorder Traversal
- Nginx运行和控制命令
- ***LeetCode 90 Subsets ii
- php性能优化学习记录一
- 面试
- 关于React使用中遇到的坑
- 个人进阶之路——安卓蓝牙模块(4)
- H-Index II
- unity——角色控制以及网络组件
- Hibernate学习篇05——联合主键(二)