1. 前言
本文使用的操作系统:
| 名称 | 描述 | |
|---|---|---|
| Oracle VM VirtualBox | 虚拟机软件 | |
| CentOS-7-x86_64-Minimal-2009.iso | CentOS 7.9 最小化安装镜像文件 |
操作系统信息如下所示
cat /etc/redhat-release

2. 源码包
进入 nginx 官网:https://nginx.org,查看最新稳定版,复制链接地址,本文使用的是当前最新稳定版本 v1.24.0
https://nginx.org/download/nginx-1.24.0.tar.gz

3. 编译安装
本文将 nginx 源码包存放在 /usr/local/src 目录
# 进入目录cd /usr/local/src# 下载 nginx 源码包wget https://nginx.org/download/nginx-1.24.0.tar.gz
当使用 wget 下载 nginx 源码包时,提示命令不存在。使用 yum 安装即可,然后重新使用 wget 下载 nginx 源码包
yum install wget -y

解压 nginx 源码包,进入源码包目录,执行预编译命令
nginx 的安装目录默认是 /usr/local/nginx,--prefix 配置项缺省时默认就是该目录,但不建议省略该参数选项
tar -zxf nginx-1.24.0.tar.gzcd nginx-1.24.0./configure --prefix=/usr/local/nginx
当预编译出现以下报错时,表示没有 gcc 编译器,使用 yum 安装即可
nginx 是使用 c 语言编写的程序,因此想要运行 nginx 就需要安装一个编译工具。gcc 就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了 c 语言,运行以下命令安装即可
# 安装 gcc 编译器yum install gcc -y# 可通过以下命令来查看 gcc 是否安装成功gcc --version

当预编译出现以下报错时,表示缺少 pcre(兼容正则表达式库),使用 yum 安装即可
nginx 在编译过程中需要使用到 pcre 库,因为在 nginx 的 Rewrite 模块和 http 核心模块都会使用到 pcre 正则表达式语法
# 安装 pcre 库yum install pcre pcre-devel -y# 可以通过以下命令来查看是否安装成功rpm -qa pcre pcre-devel

当预编译出现以下报错时,表示缺少 zlib,使用 yum 安装即可
zlib 库提供了开发人员的压缩算法,在 nginx 的各个模块中需要使用 gzip 压缩,所以我们也需要安装其库及源代码
# 安装 zlib 库yum install zlib zlib-devel -y# 可以通过以下命令来查看是否安装成功rpm -qa zlib zlib-devel

当看到以下内容,表示预编译成功,目前最小化安装成功了,也就是使用最少的参数

当我们配置 SSL 证书,实现 HTTPS 访问时,会将监听的端口改为 443 ssl,重载配置发现报错了
server {listen 443 ssl;server_name www.itqaq.com;}
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:36
这是因为没有安装 SSL 模块,不支持配置 SSL,运行以下命令安装即可
# 安装 openssl 库yum install openssl openssl-devel -y# 可以通过以下命令来查看是否安装成功rpm -qa openssl openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module

4. 安装总结
环境准备:安装 wget 和 编译 nginx 所需要的依赖包
yum install wget -yyum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
下载 nginx 源码包
# 源码包存放目录cd /usr/local/src# 下载 nginx 源码包wget https://nginx.org/download/nginx-1.24.0.tar.gz# 解压缩 nginx 源码包tar -zxf nginx-1.24.0.tar.gz# 进入源码包目录cd nginx-1.24.0
执行编译安装
# 预编译./configure --prefix=/usr/local/nginx \--with-http_stub_status_module \--with-http_ssl_module# 编译并安装make && make install
当 nginx 安装成功后,/usr/local/nginx 目录内容如下所示

关闭防火墙
# 关闭防火墙状态systemctl stop firewalld# 关闭防火墙开机自启systemctl disable firewalld
5. 启动 nginx
进入 /usr/local/nginx/sbin 目录,运行以下命令启动 nginx 服务
# 进入 nginx 安装目录下的 sbin 目录cd /usr/local/nginx/sbin# 启动 nginx 服务,相对路径写法,./ 不能省略,表示执行 nginx 文件./nginx
也可以使用绝对路径写法
/usr/local/nginx/sbin/nginx

绝对路径命令比较长,可以定义命令的别名简化命令
# 定义命令别名alias nginx=/usr/local/nginx/sbin/nginx# 使用别名控制 nginx 服务启停nginx # 启动nginx -s stop # 停止nginx -s reload # 重启
命令补充:
./nginx -s stop # 快速停止./nginx -s quit # 优雅关闭,在关闭前完成已经接受的连接请求./nginx -s reload # 重新加载配置
使用 curl 命令测试访问,看到以下内容说明启动成功
curl 127.0.0.1

6. 关闭防火墙
通过以下命令查看虚拟主机的局域网 IP
ip addr | grep 192.168

目前局域网内其他电脑无法访问虚拟主机,如下所示,这是因为防火墙是开启状态

运行以下命令,即可关闭防火墙,如果只是使用虚拟机进行测试,可以直接关闭防火墙
在正式环境中,可以开启防火墙,只需要开放相应端口即可。https://www.lengleng.net
# 查看防火墙状态(running|not running)firewall-cmd --state# 关闭防火墙状态systemctl stop firewalld# 关闭防火墙开机自启systemctl disable firewalld

此时,就可以发现能访问了

7. 设置系统服务
创建服务脚本
vi /usr/lib/systemd/system/nginx.service
服务脚本内容
[Unit]Description=nginx - web serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.target
运行以下命令,创建的 nginx 系统服务生效
# 重新加载系统服务systemctl daemon-reload
nginx 系统服务相关命令,可以更加方便的管理 nginx 服务
# 查看 nginx 服务状态systemctl status nginx# 启动 nginx 服务systemctl start nginx# 关闭 nginx 服务systemctl stop nginx# 重载 nginx 配置systemctl reload nginx# 启用 nginx 服务开机自启systemctl enable nginx# 关闭 nginx 服务开机自启systemctl disable nginx
8. 卸载 nginx
步骤一:停止 nginx 服务
/usr/local/nginx/sbin/nginx -s stop
步骤二:将安装的 nginx 删除
rm -rf /usr/local/nginx
步骤三:将安装包之前编译的环境清除掉
cd /usr/local/src/nginx-1.24.0make clean



















