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子进程写入日志的资源地址,地址变更后,就意味着会写入新的文件,这就完成了日志切割。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,048评论 2 89
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,811评论 24 1,002
  • 自己现在梳理出来了就是写作是可以融合我所有想做的事情。所以接下来自己的人生过程自己就是可以通过小说来创造出来,这样...
    吾宗老孙子阅读 1,022评论 0 0
  • contains方法的源码是用equals()比较的,也就是说比较的是地址,所以要在类中重写equals()方法....
    xiaoliman阅读 5,549评论 0 0