从源代码开始:在RedHat 9上编译安装Nginx


前言

在当今互联网时代,Nginx已经成为了许多网站和网络应用程序的首选Web服务器和反向代理。虽然现在有许多方便的包管理工具可以轻松安装Nginx,但有时候我们可能需要更深入地了解它的内部工作原理,并且希望对其进行更加灵活的定制。

在本文中,我们将带您走进Nginx的编译和安装之旅,通过在RedHat 9上从源代码开始的方式,逐步学习如何构建和配置这个强大的Web服务器。尽管RedHat 9已经是过去的版本,但了解如何从源代码构建和安装软件的过程,对于理解软件的底层机制和解决一些特定问题都是非常有价值的。

通过本文的学习,您将掌握以下技能:

  1. 安装编译Nginx所需的依赖项和工具。
  2. 配置和编译Nginx源代码。
  3. 在RedHat 9上安装编译后的Nginx并启动服务。
  4. 可能会遇到的常见问题和解决方法。

无论您是对Nginx感兴趣的初学者,还是有经验的管理员,本文都将为您提供有价值的知识和实用的技能,帮助您更好地掌握Nginx,并将其应用于您的项目或生产环境中。让我们开始这段令人兴奋的旅程吧!

在Red Hat 9上编译安装Nginx之前,有几个前提条件需要满足。首先,确保你有一个可用的Red Hat 9系统,并且你有root权限来安装软件和执行系统级操作。其次,你需要一个可用的C编译器和GNU Make工具。最后,你需要下载并解压Nginx的源代码。


这里是从源代码开始编译和安装Nginx的步骤:

1. 下载安装必需的依赖项:GCC编译器、GNU Make工具、PCRE库和zlib库。

yum install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

在这里插入图片描述注意:我这里已经安装好了,如果安装不成功可以尝试换镜像源
换镜像源博客

2. 出于安全考虑,nginx以普通用户运行,可以创一个名为nginx的组,和一个名为nginx的用户账户。

groupadd nginx #创建名为nginx的组用户
useradd nginx -g nginx -s /sbin/nologin -M #创建一个属于该组的同名用户,不允许用户登录和创建主目录

在这里插入图片描述

3. 下载Nginx1.20.2的稳定版本源代码

wget https://nginx.org/download/nginx-1.20.2.tar.gz

在这里插入图片描述

4. 解压源代码。

tar -zxvf nginx-1.20.2.tar.gz

在这里插入图片描述

5. 切换到解压后的nginx目录。

cd nginx-1.20.2

6. 检查平台安装环境

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx

在这里插入图片描述

  • ./configure: 这是运行配置脚本的命令。configure脚本是一个用于自动配置软件包以适应特定系统环境的脚本。

  • --prefix=/usr/local/nginx: 这个选项指定了nginx的安装路径。在这个例子中,nginx将安装到/usr/local/nginx目录下。这意味着nginx的二进制文件将会在/usr/local/nginx/sbin目录下,配置文件将会在/usr/local/nginx/conf目录下。

  • --with-http_stub_status_module: 这个选项启用了nginx的stub_status模块。stub_status模块提供了一个简单的页面,可以实时地查看nginx的当前状态信息,比如当前的活动连接数、请求数等。

  • --with-http_ssl_module: 这个选项启用了nginx的http_ssl模块,用于支持HTTPS协议。启用这个模块后,nginx将能够处理加密连接。

  • --user=nginx --group=nginx: 这两个选项指定了nginx运行时所使用的用户和用户组。在这个例子中,nginx将以nginx用户和nginx用户组的身份运行。这是为了增加nginx的安全性,限制nginx进程的权限。

7. 执行make命令编译源代码,执行make install安装软件

make
make install

在这里插入图片描述
在这里插入图片描述

8. 测试nginx,我们可以在游览器输入输入直接IP进行测试

在这里插入图片描述
注意:如果无法访问我们可以试试以下方法:
(1)关闭防火墙:

sudo systemctl stop firewalld #使用 systemctl 命令停止防火墙服务
sudo systemctl status firewalld #检查防火墙状态,确保防火墙已停止

(2)如果有Apache,为了避免冲突执行命令:

systemctl stop http.server

9. 编写systemd单元文件管理nginx服务

vim  /lib/systemd/system/nginx.service

设置如下内容:

[Unit]
Description=nginx 
After=network.target 
   
[Service] 
Type=forking 
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true 
   
[Install] 
WantedBy=multi-user.target

在这里插入图片描述

10. 使用服务命令:

systemctl status nginx

可以使用命令是nginx随机启动:

systemctl enable nginx.service
  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

`869

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

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

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

打赏作者

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

抵扣说明:

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

余额充值