Nginx控制命令

进入到Nginx安装目录的sbin文件夹中,找到nginx的执行脚本。对于Nginx来讲,经常进行的操作有启动、停止、重载等。

启动:

nginx -s start

对于启动,需要强调的就是配置错误或者80端口冲突引起的无法启动问题。在Nginx的配置文件更改完成后,我们可以先使用nginx -t命令来检验一下配置是否正确,如果有问题,查找并更改就可以;如果是80端口冲突,使用lsof软件进行查看80端口的占用情况lsof -i:80,结果如下:

[root@noteclass data]# lsof -i:80
COMMAND     PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
AliYunDun   885  root   19u  IPv4 692428      0t0  TCP noteclass:42202->100.100.30.25:http (ESTABLISHED)
nginx     15370  root    6u  IPv4 690493      0t0  TCP *:http (LISTEN)
nginx     15370  root    8u  IPv6 690495      0t0  TCP *:http (LISTEN)
nginx     15371 nginx    6u  IPv4 690493      0t0  TCP *:http (LISTEN)
nginx     15371 nginx    8u  IPv6 690495      0t0  TCP *:http (LISTEN)

如果发现有其他进程占用了80端口,直接使用Kill命令杀死即可。

kill -s 9 '想要杀死的PID'

停止
网上的很多教程都有使用Kill命令杀死nginx进程的介绍,但是本章并不介绍这种方法,也不推荐使用kill命令杀死nginx进程的做法。使用Nginx自带的停止方法感觉会好一些。
Nginx停止有两种方式:一种是立即停止,一种是优雅停止。

nginx -s stop    //立即停止
nginx -s quit    //优雅停止

这两种方式的区别在于:使用立即停止,nginx不管当前是否有未处理完的请求,都会直接关闭。而优雅停止则会拒绝新请求,对于未处理完的请求,继续进行处理,直到所有未处理请求全部处理完毕后再关闭。

重载

nginx -s reload

当我们修改Nginx的配置文件后,需要使新配置生效,重启固然好使,但是即便重启的速度很快,也需要一定的时间,对于访问量很大的网站来讲,也会造成问题,这时就可以使用上面的命令进行重载。
Nginx能够重载而不重启的原理就是Nginx是以多进程的方式来进行工作的,如下图:


Nginx启动时会产生一个master主进程和N个worker子进程,主进程负责管理子进程。当一个重载命令传到主进程时,主进程会发送信号给子进程,子进程在处理完当前正在处理的请求后就会关闭,此时主进程会根据最新配置重新建立一个子进程来处理后续请求,以此类推,直到所有的子进程都重新产生,这时Nginx就完成了重载。

重新打开日志

nginx -s reopen 

这个命令主要用于日志切割,为什么要进行日志切割?Nginx的架构就是所有的日志都记录在一个文件里面,我的Nginx服务器日志信息记录在access.log文件里面。时间的变长以及网站访问量的提升,都会使该文件变的越来越大,进而影响到服务器的性能。所以我们需要定期分割日志文件。

Linux中使用mv命令可以很方便的把文件移动走或者重命名,当把目前在用的日志文件移动走或者重命名,重新建立一个同名的日志文件后,会发现日志并没有记录在新建立的日志文件中,而是记录在以前的文件里面,虽然它被移动走或者重命名了。原因就是nginx的子进程在写日志信息时,它要写入数据的地方对应的是日志文件在磁盘中的资源地址,而不是对应文件系统中的某个文件。所以虽然文件名称或文件路径变更了,其在磁盘中的资源地址依然没变。所以信息仍被写入到旧的地址,也就是旧的文件中。

使用该命令可以变更nginx子进程写入日志的资源地址,地址变更后,就意味着会写入新的文件,这就完成了日志切割。

你可能感兴趣的:(Nginx控制命令)