1. 启动nginx

nginx的启动方式主要有两种,下面我们来介绍这两种启动方式。

1.1 方式一

  启动nginx,可以执行以下命令,如果nginx安装在/usr/local/nginx目录下(nginx默认安装路径),那么启动命令就是:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  参数”-c”指定了配置文件的路径,如果不加”-c”参数,nginx默认会加载nginx安装目录下conf目录的nginx.conf文件,即/usr/local/nginx/conf/nginx.conf。如果你在安装nginx时,nginx.conf是在放在别的目录,一定要加上-c参数指定路径。

1.2 方式二

这里,我们直接进入nginx的安装目录,不加”-c”参数,直接启动nginx

cd /usr/local/nginx/sbin/
./nginx

启动nginx之后,通过ps -aux | grep nginx命令查看nginx的状态

nginx 打开行号 nginx开启_重启


  从上图中我们可以看到nginx启动之后,会有两个进程,pid为10118的是master进程,pid为10119的是worker进程。在进程的tty一列可以看到,master和worker都是问号”?”,这表示它们都是后台进程,以daemon的方式在后台运行。

2. 停止nginx

  nginx的停止方式一般是通过kill命令由系统发送信号给nginx主进程来停止。我们可以通过ps -aux |grep nginx命令来查看mster进程的pid,还可以通过nginx.pid文件查看master进程的pid。

2.1 快速停止

快速停止nginx服务,命令如下:

cd /usr/local/nginx/sbin
./nginx -s stop

  这种方式相当于直接使用kill命令发送信号给进程,强制杀掉进程,-s参数就是告诉nginx程序向正在运行的nginx服务发送信号,nginx通过nginx.pid文件得到master进程的pid,再向运行中的master进程发送SIGTERM或SIGINT信号来快速关闭nginx服务。如果当前nginx工作进程正在处理任务时,使用此命令是不太好的,应尽量避免使用。

2.2 “优雅停止”

“优雅停止”nginx服务,命令如下:

cd /usr/local/nginx/sbin
./nginx -s quit

  这种方式和方式1是有区别的,当快速停止服务时,worker和master进程收到信号是直接退出,这种方式比较直接。而“优雅停止”服务则是等待nginx进程处理完任务请求,才退出进程停止nginx服务(推荐使用这种方式)。可以直接发送SIGQUIT信号给master进程停止nginx服务。与./nginx -s quit命令效果一样。

3. 重启nginx

3.1 方式一

  先停止再启动,相当于对nginx进行关机重启一样,通过./nginx -s quit让nginx进程先从容停止,然后再通过./nginx启动
命令如下:

./nginx -s quit
./nginx
3.2方式二

  当nginx的配置文件nginx.conf修改后,要想让配置生效需要重启nginx,使用 -s reload命令可以不用停止nginx,也就是说./nginx -s reload命令可以让正在运行的nginx服务重新加载nginx.conf文件。

./nginx -s reload

  实际上,对于这种方式,nginx会先检测nginx.conf配置是否正确,如果正确则“优雅”停止nginx服务,再重新启动nginx来实现的。

  不需要重启nginx就可以让配置文件生效是怎么做到的?对于这个问题,在后面介绍nginx进程模型时会再详细说明。

3. nginx平滑重启

  不管是哪种方式重启nginx,如果改变了nginx的配置文件,在重启nginx之前,应该先确认nginx的配置文件是否配置正确,否则nginx是不会加载新的配置文件。那么我们可以通过以下命令来判断nginx配置文件是否正确:

./nginx -t

通过执行./nginx -t命令给出的信息可知:

nginx 打开行号 nginx开启_重启_02

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok:表示nginx配置文件语法是正确的,ok的。
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful:测试加载nginx.conf配置文件是成功的

如果出现这两条信息,说明可以平滑重启nginx了