前言
对于tomcat和Nginx,不管是开发,测试,还是运维,我们都应该对其很熟悉。不能说我是开发,Nginx的日常操作,我们不需要关注。其实对于Nginx的基础操作,我们还是很有必要去学习下,无非就是几个简单的命令,多操作几次就会了。这里简单记录下常见Nginx操作,记笔记是好事,但是最终目的还是希望大家从记笔记中脱离笔记,达到熟能生巧的境界。不能说重启个Nginx,还得去找之前记得小笔记来看看,那可真是大写的尴尬。。。。。。
假设Nginx安装在 /usr/local/nginx 目录中,那么启动 nginx 的命令就是:
[root@localhost~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
参数 "-c" 指定了配置文件的路径,如果不加 "-c" 参数,Nginx 会默认加载其安装目录的 conf 子目录中的 nginx.conf 文件。
从容停止
Nginx停止的方式有好多种,这里大致列举下,大家可以根据自己的需求来使用对应的方式。首先我先来查看Nginx的主进程ID,通过ps -ef|grep Nginx来查看
root 4198 1 0 Jun18 ? 00:00:00 nginx: master process ./nginx
root 17167 4198 0 Jun20 ? 00:00:13 nginx: worker process
root 17168 4198 0 Jun20 ? 00:00:22 nginx: worker process
上面可以看到此时有一个主进程和两个工作进程,这两个工作进程是主进程的子进程。我们只需要停掉主进程,子进程也会自动结束。所以接下来
kill -QUIT4198
上面这种是通过Kill主进程Id来停止Nginx。如果在 nginx.conf 配置文件中指定了 pid 文件存放的路径,该文件中存放的就是Nginx当前的主进程号。默认是放在Nginx安装目录的 logs 目录下的Nginx.pid文件,这个文件就是对应主进程,我们可以直接kill这个pid文件就可以了。
kill -QUIT `/usr/local/nginx/logs/nginx.pid`
快速停止
kill-TERM4198或者kill-INT4198
强制停止
pkill -9nginx
对于Nginx重启,有的小伙伴可能回想,前面已经说了停止和启动了,我先停止再启动不就是重启了,这里又何必多次一举呢?这种方式确实可以,但是不是平滑重启,想想在生产环境中,我们先停止Nginx,再启动。那么在停止之后,启动成功之前,这段时间是不是Nginx处于不可用状态,这在现网是很危险的。所以下面讲的是如何平滑重启Nginx。在日常开发或者生产环境中,我们有时候需要修改Nginx的配置文件,想重启Nginx,不过在重启之前,要确认 nginx 配置文件的语法是否正确的。否则 nginx 将不会加载新的配置文件。可以通过以下命令来判断配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
#这种方式,没有指定Nginx的配置文件,默认会检查 /usr/local/nginx/conf/nginx.conf 文件
/usr/local/nginx/sbin/nginx -t -c /home/my-nginx.conf
#如果我们不使用默认的配置文件 那么我们可以自己指定配置文件
在验证完Nginx的配置文件之后,我们就可以平滑重启Nginx了
kill-HUP4198
#或者
/usr/local/nginx/sbin/nginx -s reload
当Nginx接收到HUP信号时,它会尝试先解析配置文件,如果成功,就应用新的配置文件。之后,Nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。所有的客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败,Nginx将继续使用旧的配置文件进行工作。所以在重启之前,最好先验证Nginx的配置文件的正确性,否则重启之后用的还是以前旧的配置文件。