2 Nginx 安装
2 Nginx 安装
安装
Nginx 服务器的软件版本包括 Windows 版和 Linux 版两种,可以在官方网站上找到对应版本的下载链接。
Window 安装
Nginx 的 Window 安装比较简单,即下载后得到类似nginx-1.16.1.zip
的安装包,使用解压工具解压此压缩文件后,点击 nginx.exe 启动即可。Window 安装包文件夹结构及简介如下:
- conf 存放 Nginx 服务器的配置文件,包括 Nginx 服务器的基本配置文件和对部分特性的配置文件。
- contrib 配置 contrib 让 nginx 脚本文件有色彩类似其它开发环境。
- docs 存放了 Nginx 服务器的文档资料。
- html 存放了两个后缀名为 .html 的静态网页文件。
- logs 存放了 Nginx 服务器的运行日志文件。
- nginx.exe 启动 Nginx 服务器的运行程序。
- temp 临时目录。
Centos Stream 9 安装
dnf install -y nginx
# 安路径为 /etc/nginx
Centos 7 安装
Linux 安装使用源码安装方式安装,步骤如下:
1. 安装依赖
$ yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2. 安装 nginx
$ wget https://nginx.org/download/nginx-1.17.9.tar.gz
$ tar -zxvf nginx-1.17.9.tar.gz -C /usr/local/
$ mv /usr/local/nginx-1.17.9 /usr/local/nginx
$ cd /usr/local/nginx
// 定制化生成 Makefile 文件
$ ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_stub_status_module --with-http_ssl_module
// 编译&安装
$ make & make install
安装编译后默认路径:/usr/local/nginx
3. 启动/停止/重启
配置软连接: $ ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
启动:`$ /usr/local/nginx/sbin/nginx`
停止nginx:`$ /usr/local/nginx/sbin/nginx -s stop`
重启nginx:`$ /usr/local/nginx/sbin/nginx -s reload`
ps -ef|grep nginx
netstat -anpl|grep 80
Linux 安装包nginx-1.17.9.tar.gz
解压后的文件夹结构及简介如下:
- src 存放了 Nginx 软件的所有源代码。
- man 存放了 Nginx 软件的帮助文档,可以使用
$ man nginx
查看。 - auto 存放了大量脚本文件,和 configure 脚本程序有关。具体脚本有如检查环境,检查模块,处理脚本参数等。
- conf 同 Windows。
- configure Nginx 软件的自动脚本程序。
- contrib 同 Windows。
- html 同 Windows。
- README 同 Windows 版本 docx 目录下同名文件。
- LICENSE 同 Windows 版本 docx 目录下同名文件。
- CHANGES 同 Windows 版本 docx 目录下同名文件。
- CHANGES.ru 同 Windows 版本 docx 目录下同名文件。 其中 configure 脚本支持的常用选项见nginx中configure脚本支持的常用选项。
make & make install
安装完后,安装目录会多出两个目录。
- logs:日志目录。
- sbin:Nginx服务器的主程序。
服务的启停控制
nginx 命令相关语法可使用man nginx
查看相关语法。
信号控制
获取 nginx 的 pid 有两个途径:
- 默认的 logs 目录里有
nginx.pid
文件,可以里面保存有进程 id 信息。 - 使用 linux 命令
ps -ef|grep nginx
,可以看到 nginx 的主进程和工作进程。
Nginx 服务主进程能够接收的信号如下表:
信号 | 作用 |
---|---|
TERM 或 INT | 快速停止 Nginx 服务 |
QUIT | 平缓停止 Nginx 服务 |
HUP | 使用新的配置文件启动进程,之后平缓停止原有进程,也就是所谓的"平滑重启" |
USR1 | 重新打开日志文件,常用于日志切割 |
USR2 | 使用新版本的 Nginx 文件启动服务,之后平缓停止原有 Nginx 进程,也就是所谓的"平滑升级" |
WINCH | 平缓停止 worker process,用于 Nginx 服务器平滑升级 |
向 nginx 服务主进程发送信号也有两种方法:
1.使用 nginx 二进制文件,如./sbin/nginx -h
。 2.使用 kill 命令发送信号,其用法是kill signal pid
,signal 取值范围为上述表格信号 key。
启动
启动前配置检查:
nginx -V
:显示版本号和 Nginx 服务器的编译情况。nginx -t
: 检查 Nginx 服务器配置文件是否有语法错误。
配置项介绍:
-s signal
:用来向 Nginx 服务的主进程发送信号。-p prefix
:用来改变 Nginx 的安装路径,常用于平滑升级 Nginx 服务器的场合。-c filename
:用来指定启动 Nginx 服务使用的配置文件。-g directives
:用来补充 Nginx 配置文件,向 Nginx 服务指定启动时应用于全局的配置。
启动命令:./sbin/nginx
。
停止
停止 Nginx 服务有两种方法:一种是快速停止;一种是平缓停止。
- 快速停止:立即停止当前 Nginx 服务正在处理的所有网络请求,马上丢弃连接,停止工作。
- 平缓停止:允许 Nginx 服务将当前正在处理的网络请求处理完成,但不再接收新的请求,之后关闭连接,停止工作。
停止 Nginx 服务的操作比较多。可以发送信号:
- 方式一:
./sbin/nginx -g TERM | INT | QUIT
,其中 TERM 与 INT 信号用于快速停止,QUIT 用于平缓停止。 - 方式二:
kill TERM | INT | QUIT '/nginx/logs/nginx.pid'
WARNING
实际测试时,两种停止命令都遇到了问题,直接使用kill TERM pid
过了
[root@VM-0-17-centos nginx]# kill TERM `/usr/local/nginx/logs/nginx.pid`
-bash: /usr/local/nginx/logs/nginx.pid: No such file or directory
-bash: kill: TERM: arguments must be process or job IDs
[root@VM-0-17-centos nginx]# nginx -g TERM
nginx: [emerg] unexpected end of parameter, expecting ";" in command line
TIP
思考:为什么平滑停止后还有 master 和 worker 进程存在?
重启
更改 Nginx 服务器的配置和加入新模块后,如果希望当前的 Nginx 服务应用和新的配置或使新模块生效,就需要重启 Nginx 服务。当然我们可以先关闭 Nginx 服务,然后使用新的 Nginx 配置文件重启服务。这里主要介绍 Nginx 服务的平滑重启。
平滑重启:Nginx 服务进程接收到信号后,首先读取新的 Nginx 配置文件,如果配置语法正确,则启动新的 Nginx 服务,然后平缓关闭旧的服务进程;如果新的 Nginx 配置有问题,将显示错误,仍然使用旧的 Nginx 进程提供服务。
使用以下命令实现 Nginx 服务的平滑重启
- 方式一:
./sbin/nginx -g HUP [-c newConfFile]
HUP 信号用于发送平滑重启信号。newConfFile,可选项,用于指定新配置文件的路径。 - 方式二:使用新的配置文件代理了旧的配置文件后,使用
kill HUP '/.../logs/nginx.pid'
。
升级
主要关注点是平滑升级知识点,略,可参考网络知识点内容。
简单配置示例
修改首页配置
location / {
root /data/dist/; # 项目路径
index index.html;
try_files $uri $uri/ /index.html; # 匹配不到任何静态资源,跳到同一个 index.html
}
常见问题
- 解决 Nginx 出现 403 forbidden
- [Nginx 高性能 Web 服务器详解]
生成 SSL 证书
- 参考 Window-Nginx 服务器 SSL 证书安装部署。 首先创建私钥。
openssl genrsa -des3 -out localhost.key 1024
密码设置为 123456
去除之前创建私钥设置的密码,不然配置到 nginx 后启动还要输入密码,太麻烦。
首先复制一份 localhost.key 文件,命名为:localhost.key.org
输入命令:openssl rsa -in localhost.key.org -out localhost.key
然后输入之前设置的密码:123456
创建 csr 文件。
openssl req -new -key localhost.key -out localhost.csr
以下是输入的一系列信息:注意域名是最重要的。
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:CHINA
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:localhost
Organizational Unit Name (eg, section) []:test
Common Name (e.g. server FQDN or YOUR name) []:test
Email Address []:test
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:localhost
生成 crt 证书。
openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt