文章目录
前言
在当今互联网时代,Nginx已经成为了许多网站和网络应用程序的首选Web服务器和反向代理。虽然现在有许多方便的包管理工具可以轻松安装Nginx,但有时候我们可能需要更深入地了解它的内部工作原理,并且希望对其进行更加灵活的定制。
在本文中,我们将带您走进Nginx的编译和安装之旅,通过在RedHat 9上从源代码开始的方式,逐步学习如何构建和配置这个强大的Web服务器。尽管RedHat 9已经是过去的版本,但了解如何从源代码构建和安装软件的过程,对于理解软件的底层机制和解决一些特定问题都是非常有价值的。
通过本文的学习,您将掌握以下技能:
- 安装编译Nginx所需的依赖项和工具。
- 配置和编译Nginx源代码。
- 在RedHat 9上安装编译后的Nginx并启动服务。
- 可能会遇到的常见问题和解决方法。
无论您是对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