Nginx 编译安装【CentOS 7】

1. 前言

本文使用的操作系统:

名称描述
Oracle VM VirtualBox虚拟机软件
CentOS-7-x86_64-Minimal-2009.isoCentOS 7.9 最小化安装镜像文件

操作系统信息如下所示

 
  1. cat /etc/redhat-release

2. 源码包

进入 nginx 官网:https://nginx.org,查看最新稳定版,复制链接地址,本文使用的是当前最新稳定版本 v1.24.0

 
  1. https://nginx.org/download/nginx-1.24.0.tar.gz

3. 编译安装

本文将 nginx 源码包存放在 /usr/local/src 目录

 
  1. # 进入目录
  2. cd /usr/local/src
  3. # 下载 nginx 源码包
  4. wget https://nginx.org/download/nginx-1.24.0.tar.gz

当使用 wget 下载 nginx 源码包时,提示命令不存在。使用 yum 安装即可,然后重新使用 wget 下载 nginx 源码包

 
  1. yum install wget -y

解压 nginx 源码包,进入源码包目录,执行预编译命令

nginx 的安装目录默认是 /usr/local/nginx--prefix 配置项缺省时默认就是该目录,但不建议省略该参数选项

 
  1. tar -zxf nginx-1.24.0.tar.gz
  2. cd nginx-1.24.0
  3. ./configure --prefix=/usr/local/nginx

当预编译出现以下报错时,表示没有 gcc 编译器,使用 yum 安装即可

nginx 是使用 c 语言编写的程序,因此想要运行 nginx 就需要安装一个编译工具。gcc 就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了 c 语言,运行以下命令安装即可

 
  1. # 安装 gcc 编译器
  2. yum install gcc -y
  3. # 可通过以下命令来查看 gcc 是否安装成功
  4. gcc --version

当预编译出现以下报错时,表示缺少 pcre(兼容正则表达式库),使用 yum 安装即可

nginx 在编译过程中需要使用到 pcre 库,因为在 nginx 的 Rewrite 模块和 http 核心模块都会使用到 pcre 正则表达式语法

 
  1. # 安装 pcre 库
  2. yum install pcre pcre-devel -y
  3. # 可以通过以下命令来查看是否安装成功
  4. rpm -qa pcre pcre-devel

当预编译出现以下报错时,表示缺少 zlib,使用 yum 安装即可

zlib 库提供了开发人员的压缩算法,在 nginx 的各个模块中需要使用 gzip 压缩,所以我们也需要安装其库及源代码

 
  1. # 安装 zlib 库
  2. yum install zlib zlib-devel -y
  3. # 可以通过以下命令来查看是否安装成功
  4. rpm -qa zlib zlib-devel

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

当我们配置 SSL 证书,实现 HTTPS 访问时,会将监听的端口改为 443 ssl,重载配置发现报错了

 
  1. server {
  2. listen 443 ssl;
  3. server_name www.itqaq.com;
  4. }
 
  1. nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:36

这是因为没有安装 SSL 模块,不支持配置 SSL,运行以下命令安装即可

 
  1. # 安装 openssl 库
  2. yum install openssl openssl-devel -y
  3. # 可以通过以下命令来查看是否安装成功
  4. rpm -qa openssl openssl-devel
 
  1. ./configure --prefix=/usr/local/nginx --with-http_ssl_module

4. 安装总结

环境准备:安装 wget 和 编译 nginx 所需要的依赖包

 
  1. yum install wget -y
  2. yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

下载 nginx 源码包

 
  1. # 源码包存放目录
  2. cd /usr/local/src
  3. # 下载 nginx 源码包
  4. wget https://nginx.org/download/nginx-1.24.0.tar.gz
  5. # 解压缩 nginx 源码包
  6. tar -zxf nginx-1.24.0.tar.gz
  7. # 进入源码包目录
  8. cd nginx-1.24.0

执行编译安装

 
  1. # 预编译
  2. ./configure --prefix=/usr/local/nginx \
  3. --with-http_stub_status_module \
  4. --with-http_ssl_module
  5. # 编译并安装
  6. make && make install

当 nginx 安装成功后,/usr/local/nginx 目录内容如下所示

关闭防火墙

 
  1. # 关闭防火墙状态
  2. systemctl stop firewalld
  3. # 关闭防火墙开机自启
  4. systemctl disable firewalld
5. 启动 nginx

进入 /usr/local/nginx/sbin 目录,运行以下命令启动 nginx 服务

 
  1. # 进入 nginx 安装目录下的 sbin 目录
  2. cd /usr/local/nginx/sbin
  3. # 启动 nginx 服务,相对路径写法,./ 不能省略,表示执行 nginx 文件
  4. ./nginx

也可以使用绝对路径写法

 
  1. /usr/local/nginx/sbin/nginx

绝对路径命令比较长,可以定义命令的别名简化命令

 
  1. # 定义命令别名
  2. alias nginx=/usr/local/nginx/sbin/nginx
  3. # 使用别名控制 nginx 服务启停
  4. nginx # 启动
  5. nginx -s stop # 停止
  6. nginx -s reload # 重启

命令补充:

 
  1. ./nginx -s stop # 快速停止
  2. ./nginx -s quit # 优雅关闭,在关闭前完成已经接受的连接请求
  3. ./nginx -s reload # 重新加载配置

使用 curl 命令测试访问,看到以下内容说明启动成功

 
  1. curl 127.0.0.1

6. 关闭防火墙

通过以下命令查看虚拟主机的局域网 IP

 
  1. ip addr | grep 192.168

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

运行以下命令,即可关闭防火墙,如果只是使用虚拟机进行测试,可以直接关闭防火墙

在正式环境中,可以开启防火墙,只需要开放相应端口即可。https://www.lengleng.net

 
  1. # 查看防火墙状态(running|not running)
  2. firewall-cmd --state
  3. # 关闭防火墙状态
  4. systemctl stop firewalld
  5. # 关闭防火墙开机自启
  6. systemctl disable firewalld

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

7. 设置系统服务

创建服务脚本

 
  1. vi /usr/lib/systemd/system/nginx.service

服务脚本内容

 
  1. [Unit]
  2. Description=nginx - web server
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
  7. ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  8. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  9. ExecStop=/usr/local/nginx/sbin/nginx -s quit
  10. PrivateTmp=true
  11. [Install]
  12. WantedBy=multi-user.target

运行以下命令,创建的 nginx 系统服务生效

 
  1. # 重新加载系统服务
  2. systemctl daemon-reload

nginx 系统服务相关命令,可以更加方便的管理 nginx 服务

 
  1. # 查看 nginx 服务状态
  2. systemctl status nginx
  3. # 启动 nginx 服务
  4. systemctl start nginx
  5. # 关闭 nginx 服务
  6. systemctl stop nginx
  7. # 重载 nginx 配置
  8. systemctl reload nginx
  9. # 启用 nginx 服务开机自启
  10. systemctl enable nginx
  11. # 关闭 nginx 服务开机自启
  12. systemctl disable nginx
8. 卸载 nginx

步骤一:停止 nginx 服务

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

步骤二:将安装的 nginx 删除

 
  1. rm -rf /usr/local/nginx

步骤三:将安装包之前编译的环境清除掉

 
  1. cd /usr/local/src/nginx-1.24.0
  2. make clean
  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超酷的站长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值