Nginx开源版安装

1. 版本安装选择

1.1 windows版本

Windows版本有两个明显的问题:

  • Windows版的Nginx其UDP功能不被支持。
  • Windows版的Nginx的worker个数设置无效,实际只有一个worker在工作。

1.2 安装选择

安装方式有两种: yum安装和编译安装。不推荐直接使用yum安装,因为存在如下两个问题:

  1. 版本太旧,以CentOS为例,直接yum安装的版本是1.12.2版本,已经严重脱离了时代;
  2. 无法自定义安装模块,安装目录等等,不方便后续的使用。

2. 下载Nginx

访问https://nginx.org/en/download.html ,下载最新稳定版nginx-1.26.3 Alt text

3. 编译安装

3.1 上传解压

上传到/opt/software, 解压:

sh
tar -xvf nginx-1.26.3.tar.gz -C ../module/

3.2 配置环境

Nginx编译需要C编译环境,linux系统中需要使用gcc编译器:

sh
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
sh
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
### 3.3 编译 进入nginx解压后的文件夹下: ```sh [root@qjk-console nginx-1.26.3]# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src ``` Nginx自带的configure脚本,指定安装路径和编译的模块,一般会添加所有nginx模块一块编译: ```sh ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-stream \ --with-http_realip_module \ --with-http_flv_module \ --with-http_random_index_module \ --with-mail \ --with-pcre \ --with-http_v2_module \ --with-stream_ssl_module \ --with-stream_realip_module ``` 执行编译安装: ```sh make && sudo make install ``` 编译安装完毕后,会在/usr/local/nginx目录下生成对应的文件。 ## 4. Nginx启停 进入安装好的目录/usr/local/nginx/sbin ```sh ./nginx 启动 ./nginx -s stop 快速停止 ./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求 ./nginx -s reload 重新加载配置 ```

5. 安装成系统服务

sh
vim /usr/lib/systemd/system/nginx.service

## 服务脚本内容

[Unit]

Description=nginx - web server

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

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

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

ExecQuit=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

[Install]

WantedBy=multi-user.target
sh
vim /etc/systemd/system/nginx.service

## 服务脚本内容

[Unit]

Description=nginx - web server

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

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

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

ExecQuit=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

[Install]

WantedBy=multi-user.target
重新加载系统服务 ```sh systemctl daemon-reload ``` 启动服务 ```sh systemctl start nginx.service ## 开机启动 systemctl enable nginx.service ```

6. Nginx命令

基本格式:nginx [选项] [参数]

6.1 常用选项

选项 功能
-c <配置文件> 指定一个自定义nginx.conf文件路径
-g <全局配置> 在命令行中指定全局配置选项
-p <工作目录> 设置工作目录,
用于存放日志文件和临时文件
-s <信号> 向nginx发送信号,常用的有stop(停止nginx进程)
和reload(重新加载配置文件)
-t 测试配置文件语法是否正确
-q 在测试配置文件时,
以静默模式运行,只输出关键信息
-V 显示nginx的版本、编译信息和配置参数
-h 显示帮助信息,包括所有可用的命令行选项
-s <文件> 启动nginx并将
master进程的PID写入指定的文件
-e <错误日志文件> 设置错误日志文件的路径
-g <配置指令> 设置全局配置指令。可以在命令行中
设置多个全局配置指令,用分号分隔
-T 测试配置文件,并打印出解析后的配置内容
-q <文件> 检查配置文件,并打印出解析后的配置内容,
但不启动nginx

6.2 信号参数

nginx -s 信号

信号 描述
stop 快速停止nginx进程,
可能会中断现有连接。
quit 优雅地停止nginx进程,
等待现有连接完成后再停止。
reload 重新加载配置文件,
优雅地应用新配置,不中断现有连接。
reopen 重新打开日志文件,
用于日志切割或日志重定向。
term 快速停止nginx进程,
可能会中断现有连接,
与stop信号类似。
usr1 重新打开日志文件,
用于日志切割或日志重定向,
与reopen信号类似。
usr2 平滑地升级nginx可执行文件。
hup 重新加载配置文件,
优雅地应用新配置,与reload信号类似。
winch 当nginx以master/worker工作模式运行时,
重新生成worker进程以适应新的配置
usr3 向worker进程发送自定义信号。

评论