分享最新优惠信息
购买主机更加划算

RHEL、CentOS、Rocky Linux和AlmaLinux系统从源代码构建NGINX图文详解

Nginx是当前面向Internet服务器上增长最快的Web服务器,因为它具有免费的开源模块化模型、高性能、稳定性好、简单的配置文件、异步架构(事件驱动)和低资源运行等核心优势。

在本文中,惠主机小编主要介绍从源代码在基于RHEL的发行版上安装最新稳定版本的Nginx,因为官方系统存储库不提供二进制包。当然,如果你不想通过源安装,那么可以添加一个官方的Nginx存储库,并在yum或dnf包管理器的帮助下安装二进制包。

方法一:使用Yum存储库安装NGINX

在安装Nginx之前,需要在RHEL及其衍生产品(如CentOS、Rocky Linux、AlmaLinux和Oracle Linux)上启用Nginx包存储库。之后,可以从存储库安装和更新Nginx。首先,如下所示命令安装yum-utils包:

# yum install yum-utils

要启用Nginx官方yum存储库,请使用以下内容创建名为/etc/yum.repos.d/nginx.repo的文件:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

添加Nginx Yum存储库

接下来,可以从存储库安装和更新Nginx,命令如下:

# yum install nginx

在Linux上安装Nginx

重要提示:请注意,按照上面的官方Nginx yum存储库会给你一个旧版本的Nginx,如果想构建最新版本的Nginx,那么建议按照下面的方法进行源安装。

使用源代码编译和安装有一些好处,因为你可以安装可用的最新版本Nginx,而且还可以通过添加或删除模块来调整Nginx配置,并更改安装系统路径或其他重要设置,换句话说,你可以完全控制 Nginx安装过程。

方法二:从源码编译安装NGINX

在开始Nginx编译和安装过程之前,请确保计算机上安装了C/C++编译器、PCRE(Perl兼容正则表达式)、Zlib压缩库和OpenSSL(如果打算运行支持SSL的 Nginx)包,输入以下命令进行安装:

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

安装GCC 和C++编译器

现在,转到Nginx下载页面并使用以下wget命令获取Nginx源代码压缩包的最新稳定版本,然后提取Nginx压缩文件并移动到Nginx提取目录,命令如下:

# wget http://nginx.org/download/nginx-1.23.4.tar.gz 
# tar xfz nginx-1.23.4.tar.gz 
# cd nginx-1.23.4 
# ls -all

下一步是使用configure文件自定义Nginx安装过程,并使用以下命令可视化Nginx编译过程所需的配置选项和模块,命令如下:

# ./configure --help

Nginx编译配置选项

现在是时候用特定配置和启用/禁用的模块编译Nginx对于本文演示内容,使用了以下模块和规范,当然你可以根据自身需要进行灵活调整编译。

  • --user=nginx– 设置Nginx将运行的系统用户。
  • --group=nginx– 设置Nginx将运行的系统组。
  • --prefix=/etc/nginx– 服务器文件目录(nginx.conf文件和其他配置文件)– 默认为/usr/local/nginx目录。
  • --sbin-path=/usr/sbin/nginx– Nginx可执行文件位置。
  • --conf-path=/etc/nginx/nginx.conf– 设置nginx.conf配置文件的名称 – 你也可以更改它。
  • --error-log-path=/var/log/nginx/error.log– 设置Nginx错误日志文件位置。
  • --http-log-path=/var/log/nginx/access.log– 设置Nginx访问日志文件位置。
  • --pid-path=/var/run/nginx.pid– 设置主进程ID文件的名称。
  • --lock-path=/var/run/nginx.lock– 设置Nginx文件锁的名称。
  • --with-http_ssl_module– 启用构建HTTPS模块 – 默认不构建,需要OpenSSL库。
  • --with-pcre– 设置PCRE库源的路径 – 默认情况下不构建,需要PCRE库。

要查看所有Nginx模块的列表,请访问位于nginx.org/en/docs/的Nginx文档网页。如果不需要在Nginx上安装特定模块,可以使用以下命令禁用它:

--without-module_name

现在通过输入以下命令开始编译Nginx,它将使用上面列出的所有配置和模块(确保命令保持在一行中):

# ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre

从源代码编译Nginx

在编译过程验证所有系统所需的实用程序(如GNU C编译器、PCRE和OpenSSL库)之后,它会创建make.conf文件并输出所有配置的摘要,具体如下:

Configuration summary
  + using system PCRE2 library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/etc/nginx"
  nginx binary file: "/usr/sbin/nginx"
  nginx modules path: "/etc/nginx/modules"
  nginx configuration prefix: "/etc/nginx"
  nginx configuration file: "/etc/nginx/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

最后一步是使用make命令构建二进制文件,这可能需要一些时间才能完成,具体取决于你Linux服务器资源配置。同时,需要使用make install命令在系统上安装Nginx。

请注意,make install命令需要root权限才能执行安装,因此如果没有使用root帐户登录,请使用具有sudo的特权用户。

# make
# make install

安装过程成功完成后,添加Nginx系统用户(使用/etc/nginx/作为它的主目录并且是no shell用户),通过输入以下useradd命令,Nginx将添加新的用户:

注意:/sbin/nologin :no shell用户是无法登陆系统和管理系统的,它仅作为运行进程或访问FTP的用户。

# useradd -d /etc/nginx/ -s /sbin/nologin nginx

添加Nginx用户

另外,在编译时,我们已经指定Nginx将从Nginx系统用户运行,打开Nginx.conf文件并将用户语句更改为Nginx。

# nano /etc/nginx/nginx.conf
或者
# vi /etc/nginx/nginx.conf

在这里找到并更改用户,同时还可以使用以下选项记录根位置位置。

user nginx;
location / {
                root /var/www/html;
                autoindex on;
                index index.html index.htm;

配置Nginx用户和Document Root

在启动Nginx之前,请确保已经创建了Web文档根路径,然后使用以下命令启动nginx:

# mkdir -p /var/www/html 
# /usr/sbin/nginx

如果要使用Shell Prompt检查Nginx是否正在运行,请运行netstat命令以验证TCP连接。

# netstat -tulpn | grep nginx

启动Nginx服务

要从远程系统验证Nginx,还需添加防火墙规则以在端口80和443上打开与外部的连接,命令如下:

# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-service=https
# systemctl restart firewalld

最后,打开浏览器,并将URL指向服务器IP地址:

http://服务器_IP

检查Nginx页面

如果需要管理Nginx进程,请使用以下命令:

# /usr/sbin/nginx -V [显示Nginx模块和配置] 
# /usr/sbin/nginx -h [帮助选项] 
# /usr/sbin/nginx -t [检查配置文件] 
# /usr/sbin/nginx [启动Nginx进程] 
# /usr/sbin/nginx -s stop [停止Nginx进程] 
# /usr/sbin/nginx -s reload [重新加载Nginx进程]

如果需要通过systemd脚本来管理Nginx守护进程,在/lib/systemd/system/nginx.service中创建如下文件,然后就可以使用systemctl命令来管理进程了:

# vi /lib/systemd/system/nginx.service

并且添加以下文件内容:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

创建Nginx systemd文件后,使用以下命令管理守护进程:

# systemctl start nginx
# systemctl stop nginx
# systemctl status nginx

通过以上教程设置之后,就已经在基于RHEL发行版的系统上安装了最新版本Nginx,过程相对来说有点复杂并且耗时,但只要按照上述步骤进行安装,肯定是可以成功的。

众所周知,Nginx是一款高性能的Web服务器、反代服务器和负载均衡器。Nginx被设计为轻量级的、高性能的服务器,可以处理大量的并发连接,同时占用较少的内存资源。在RHEL发行版中安装Nginx的好处体现在:

  1. 可扩展性:Nginx支持多进程和多线程处理请求,可以轻松扩展服务器资源。
  2. 可靠性:Nginx的稳定性得到了广泛认可,并在许多生产环境中得到了广泛应用。
  3. 安全性:Nginx提供了多种安全功能,如SSL加密和反代功能,可以帮助保护Web应用程序免受攻击。
  4. 灵活性:Nginx可以通过模块扩展来支持各种功能,如缓存、负载均衡和动态内容。

所以,在RHEL发行版上安装Nginx可以使你的Web服务器更加强大和可靠,能够处理更多的请求并提供更好的用户体验。

未经允许不得转载:惠主机 » RHEL、CentOS、Rocky Linux和AlmaLinux系统从源代码构建NGINX图文详解