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 install 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
现在,转到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。对于本文演示内容,使用了以下模块和规范,当然你可以根据自身需要进行灵活调整编译。
--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
在编译过程验证所有系统所需的实用程序(如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.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之前,请确保已经创建了Web文档根路径,然后使用以下命令启动nginx:
# mkdir -p /var/www/html # /usr/sbin/nginx
如果要使用Shell Prompt检查Nginx是否正在运行,请运行netstat命令以验证TCP连接。
# netstat -tulpn | grep nginx
要从远程系统验证Nginx,还需添加防火墙规则以在端口80和443上打开与外部的连接,命令如下:
# firewall-cmd --permanent --add-service=http # firewall-cmd --permanent --add-service=https # systemctl restart firewalld
最后,打开浏览器,并将URL指向服务器IP地址:
http://服务器_IP
如果需要管理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的好处体现在:
- 可扩展性:Nginx支持多进程和多线程处理请求,可以轻松扩展服务器资源。
- 可靠性:Nginx的稳定性得到了广泛认可,并在许多生产环境中得到了广泛应用。
- 安全性:Nginx提供了多种安全功能,如SSL加密和反代功能,可以帮助保护Web应用程序免受攻击。
- 灵活性:Nginx可以通过模块扩展来支持各种功能,如缓存、负载均衡和动态内容。
所以,在RHEL发行版上安装Nginx可以使你的Web服务器更加强大和可靠,能够处理更多的请求并提供更好的用户体验。