Nginx 安装和操作
1.常用功能
- HTTP代理和反向代理
- 负载均衡
- Web缓存
2.服务器安装部署
cd /opt/software
mkdir nginx
cp nginx-1.2.3.tar.gz nginx/
cd nginx
tar xf nginx-1.2.3.tar.gz
cd nginx-1.2.3
ls -l
2.1安装包目录
目录 | 说明 |
---|---|
src | Nginx 源代码 |
man | Nginx 帮助文档 |
html | 存放静态网页文档 |
conf | Nginx 配置文件 |
auto | 脚本文件 |
configure | Nginx 自动脚本程序 |
配置生成Makefile
./configure --prefix=/nginx
--prefix
指定了Nginx 软件安装目录为刚建立的ngnix目录。
编译
make
安装
make install
如果在没有改动源代码的情况下,需要重新编译和安装Nginx 软件,就不必再使用 configure 脚本自动生成 Makefile 了。
可以先使用以下命令删除上次安装的 Nginx 软件:
rm -rf /nginx/*
然后定位到nginx-1.2.3.tar.gz 解压目录,清除上次编译的遗留文件:
cd /nginx/nginx-1.2.3/; make clean
之后再使用以下命令进行编译和安装:
make; make install
到此,我们就安装好了一个最基本的Nginx服务器了。
2.2 Nginx 服务器安装目录
目录 | 说明 |
---|---|
sbin | 只有一个nginx 文件,这就是Nginx服务器的主程序 |
conf | Nginx 所有配置文件 |
html | 存放静态网页文件 |
logs | 日志文件夹 |
3.Nginx 服务的启停
3.1 服务的信号控制
Nginx 服务在运行时,会保持一个主进程和一个或多个worker process 工作进程。
我们通过给Nginx 服务的主进程发送信号就可以控制服务的启停了。
如何给主进程发送信号呢?
首先得知道主进程的进程号PID。
获取PID有两种方法:
- 文件查看PID。启动Nginx 服务后,默认在Nginx 服务器的安装目录下的logs目录中,会产生文件名为
nginx.pid
的文件,此文件中保持的就是Nginx服务主进程的PID。 - 命令查看PID。
ps -ef |grep nginx
可以查看master process
主进程的PID。
向Nginx 服务主进程发送信号的方法。
格式
kill -[SIGNAL] PID
Nginx 服务可接收的信号
信号 | 说明 |
---|---|
kill -TERM PID | 快速停止Nginx 服务 |
kill -INT PID | 快速停止Nginx 服务 |
kill -9 PID | 强制关闭Nginx 服务 |
kill -QUIT PID | 平缓停止Nginx 服务 |
kill -HUP PID | 平滑重启Nginx 服务。使用新的配置文件启动进程,之后平缓停止原有进程。 |
kill -USR1 PID | 重新打开日志文件,常用于日志切割 |
kill -USR2 PID | 平滑升级。使用新版本的Nginx文件启动服务,之后平缓停止原有Nginx进程 |
kill -WINCH PID | 平缓停止 worker process,用于Nginx 服务器平滑升级 |
3.2 Nginx 服务的启动
启动Nginx 服务器直接运行安装目录下 sbin 目录中的二进制文件即可。
./sbin/nginx
查看Nginx 服务的进程状态
ps -ef |grep nginx
Nginx 的帮助信息
➜ nginx ./sbin/nginx -h
nginx version: nginx/1.14.0
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /opt/software/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
3.3 Nginx 服务的停止
停止 Nginx 服务有两种方法
- 快速停止(TERM 和 INT 信号用于快速停止)
- 平缓停止(QUIT用于平缓停止)
kill -[TERM | INT | QUIT] PID
强制关闭(不建议使用)
kill -9 PID
3.4 Nginx 服务的重启
更改Nginx 服务器的配置和加入新模块后,如果希望当前的Nginx 服务应用新的配置或使用新模块生效,就需要重启Nginx 服务。
平滑重启是这样一个过程:
- Nginx 服务进程接收到信号后,首先读取新的Nginx 配置文件。
- 如果配置语法正确,则启动新的Nginx服务,然后平缓关闭旧的服务进程。
- 如果新的Nginx 配置有问题,将显示错误,仍然使用旧的Nginx 进程提供服务。
使用以下命令平滑重启
kill -HUP PID
3.5 服务器的升级
如果要对当前的 Nginx 服务器进行版本升级,应用新模块,最简单的办法是停止当前 Nginx 服务,然后开启新的 Nginx 服务,但这样就会导致在一段时间内,用户无法访问服务器。
为了解决这个问题,Nginx 服务器提供平滑升级的功能。
平滑升级的过程是这样的:
- Nginx 服务接收到 USR2 信号后,首先将旧的 nginx.pid 文件添加后缀
.oldbin
,变为nginx.pid.oldbin
文件。 - 然后执行新版本的Nginx 服务器的二进制文件启动服务。
- 如果新的服务启动成功,系统中将有新旧两个Nginx 服务共同提供 Web 服务。
- 之后,需要向旧的 Nginx 服务进程发送 WINCH 信号,使旧的 Nginx 服务平滑停止,并删除
nginx.pid.oldbin
文件。 - 在发送 WINCH 信号之前,可以随时停止新的 Nginx 服务。
为了实现 Nginx 服务器的平滑升级,新的服务器安装路径应该和旧的保持一致。
因此建议在安装新服务器之前先备份旧服务器。
如果由于某种原因无法保持新旧服务器安装路径一致,则可以先使用以下命令将旧服务器的安装路径更改为新服务器的安装路径:
./Nginx/nginx -p newInstallPath
其中,newInstallPath 为新服务器的安装路径。之后,备份旧服务器,安装新服务器即可。
做好准备工作后,使用以下命令平滑升级 Nginx 服务。
kill -USR2 PID
通过 ps -ef |grep nginx
查看新的 Nginx 服务启动正常。
再使用 WINCH 信号用于发送平滑停止旧服务信号。
kill -WINCH PID
这样就在不停止提供 Web 服务的前提下完成了 Nginx 服务器的平滑升级。