在现代互联网应用中,Nginx 作为高性能的 HTTP 和反向代理服务器,被广泛应用于各种网站和应用系统中。它以其轻量级、高并发处理能力和稳定性而著称。然而,在某些网络受限的环境中,直接在线安装 Nginx 及其依赖项可能会遇到困难。为了满足这些环境的需求,本文将详细介绍如何在离线环境下安装 Nginx 及其所有必要的依赖项。我们将使用 CentOS7 作为示例操作系统,但这些步骤同样适用于其他 Linux 发行版。
1. 准备工作
以安装到/export/server目录下为例:
mkdir -p /export/server
本篇文章所用的Nginx离线安装包汇总:nginx: 离线nginx的安装包汇总
亦可根据下面的步骤的网址自行下载最新版。
2. 安装G++和Gcc环境
1. 下载G++和Gcc离线安装包
从 GitCode 或其他可信源下载 G++ 和 Gcc 的离线安装包。
2. 解压并上传 G++ 和 Gcc
将下载的安装包解压并上传到 /export/server 目录。
3. 安装 G++ 和 Gcc
进入解压后的目录并安装:
cd /export/server/gcc
rpm -ivh *rpm --nodeps --force
4. 验证安装
安装完成后,可以通过以下命令检查 G++ 和 Gcc 是否安装成功:
gcc -v
gcc --version
3. 安装 PCRE
1. 下载并上传 PCRE
从PCRE 官方网站下载并上传 pcre-8.45.tar.gz 到 /export/server 目录。
https://sourceforge.net/projects/pcre/files/pcre/8.45/https://sourceforge.net/projects/pcre/files/pcre/8.45/2. 安装并解压 PCRE
安装并解压 PCRE:
cd /export/server
tar -zxvf pcre-8.45.tar.gz
cd pcre-8.45
./configure
sudo make && make install
3. 验证安装
检查 PCRE 是否安装成功:
pcre-config --version
4. 安装 zlib
1. 下载并上传 zlib
从zlib 官方网站下载并上传 zlib.tar.gz 到 /export/server 目录。
zlib Home Sitehttps://www.zlib.net/
2. 安装并解压 zlib
安装并解压 zlib:
cd /export/server
tar -zxvf zlib.tar.gz
cd zlib-1.3.1
./configure
sudo make && make install
3. 验证安装
检查 zlib 是否安装成功:
pkg-config --modversion zlib
5. 安装 perl-IPC-Cmd
1. 下载 perl-IPC-Cmd
从 GitCode 下载 perl-IPC-Cmd 的 RPM 包。
将下载的 RPM 包上传到 /export/server 目录。
3. 安装 perl-IPC-Cmd
进入解压后的目录并安装:
cd /export/server/rpm
rpm -ivhU * --nodeps --force
4. 验证安装
检查 perl-IPC-Cmd 是否安装成功:
perldoc -l IPC::Cmd
6. 安装 OpenSSL
1. 下载并上传 OpenSSL
从OpenSSL 官方网站下载并上传 openssl-3.4.0.tar.gz 到 /export/server 目录。
https://www.openssl.org/source/https://www.openssl.org/source/
2. 安装并解压 OpenSSL
安装并解压 OpenSSL (该步骤执行耗时7-10分钟):
cd /export/server
tar -zxvf openssl-3.4.0.tar.gz
cd openssl-3.4.0
./config --prefix=/export/server/openssl
./config -t
sudo make depend
sudo make install
3. 配置环境变量
编辑 /etc/ld.so.conf 文件,添加 OpenSSL 库路径:
sudo vi /etc/ld.so.conf
G 跳转到文件尾行,$ 跳转到当前行末尾,i 编辑文件。在文件末尾新建一行添加:
/export/server/openssl/lib
ESC 退出编辑,:wq 保存并退出。切换目录,并更新系统动态链接库缓存:
cd /export/server/openssl
sudo ldconfig
编辑 /etc/profile 文件,添加 OpenSSL 的环境变量:
sudo vi /etc/profile
G 跳转到文件尾行,$ 跳转到当前行末尾,i 编辑文件。在文件末尾新建一行添加:
export OPENSSL=/export/server/openssl/bin
export PATH=$OPENSSL:$PATH:$HOME/bin
ESC 退出编辑,:wq 保存并退出。重新加载系统配置文件 /etc/profile,使其中的环境变量和设置立即生效:
source /etc/profile
4. 验证安装
检查 OpenSSL 是否安装成功:
ldd /export/server/openssl/bin/openssl
确保每一个可执行文件或共享库所依赖的库文件名称对应实际路径,而非 not found 。
7. 安装 Nginx
1. 下载并上传 Nginx
从Nginx 官方网站下载并上传 nginx-1.22.1.tar.gz 到 /export/server 目录。
nginx: downloadhttps://nginx.org/en/download.html
2. 安装并解压 Nginx
安装并解压 Nginx:
cd /export/server
tar -zxvf nginx-1.22.1.tar.gz
mv nginx-1.22.1 nginx
cd nginx
./configure --prefix=/export/server/nginx --with-http_mp4_module --with-http_flv_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_gunzip_module --with-file-aio
sudo make && make install
mkdir -p /export/server/nginx/logs
./configure 脚本后面可以跟许多参数来定制 Nginx 的配置,详情看官网:Building nginx from Sources。以下是一些常用的参数及其说明:
参数 | 说明 |
--prefix=PATH | 指定 Nginx 安装目录,默认为 /usr/local/nginx |
--sbin-path=PATH | 指定 Nginx 可执行文件的路径,默认为 PREFIX/sbin/nginx |
--conf-path=PATH | 指定 Nginx 配置文件的路径,默认为 PREFIX/conf/nginx.conf |
--error-log-path=PATH | 指定错误日志文件的路径,默认为 PREFIX/logs/error.log |
--http-log-path=PATH | 指定访问日志文件的路径,默认为 PREFIX/logs/access.log |
--pid-path=PATH | 指定 PID 文件的路径,默认为 PREFIX/logs/nginx.pid |
--lock-path=PATH | 指定锁文件的路径,默认为 PREFIX/logs/nginx.lock |
--user=USER | 指定 Nginx 工作进程运行的用户,默认为 nobody |
--group=GROUP | 指定 Nginx 工作进程运行的用户组,默认为 nobody |
--with-http_ssl_module | 启用 SSL 支持 |
--with-http_v2_module | 启用 HTTP/2 支持(需要 OpenSSL 1.0.2 或更高版本) |
--with-http_gzip_static_module | 启用 gzip 静态文件压缩支持 |
--with-http_realip_module | 启用获取客户端真实 IP 地址的支持 |
--with-http_stub_status_module | 启用状态页面模块,用于监控 Nginx 状态 |
--with-http_sub_module | 启用响应内容替换模块 |
--with-http_dav_module | 启用 WebDAV 支持 |
--with-http_flv_module | 启用 FLV 视频流支持 |
--with-http_mp4_module | 启用 MP4 视频流支持 |
--with-http_gunzip_module | 启用 gunzip 模块,用于解压 gzip 压缩的内容 |
--with-http_auth_request_module | 启用基于子请求的认证模块 |
--with-http_random_index_module | 启用随机索引模块 |
--with-http_secure_link_module | 启用安全链接模块 |
--with-http_degradation_module | 启用降级模块 |
--with-http_perl_module | 启用 Perl 模块(需要 Perl 5.6.1 或更高版本) |
--with-mail | 启用邮件代理模块 |
--with-mail_ssl_module | 启用邮件代理模块的 SSL 支持 |
--with-stream | 启用流媒体模块 |
--with-stream_ssl_module | 启用流媒体模块的 SSL 支持 |
--with-stream_realip_module | 启用流媒体模块的获取客户端真实 IP 地址支持 |
--with-stream_geoip_module | 启用流媒体模块的 GeoIP 支持(需要 GeoIP 库) |
--with-http_geoip_module | 启用 HTTP 模块的 GeoIP 支持(需要 GeoIP 库) |
--with-file-aio | 启用文件异步 I/O 支持 |
--with-threads | 启用线程池支持 |
--with-compat | 启用兼容模式,允许使用第三方模块 |
--without-http | 不编译 HTTP 模块 |
--without-http-cache | 不编译 HTTP 缓存模块 |
--without-mail_pop3_module | 不编译 POP3 邮件协议模块 |
--without-mail_imap_module | 不编译 IMAP 邮件协议模块 |
--without-mail_smtp_module | 不编译 SMTP 邮件协议模块 |
3. 配置环境变量
编辑 /etc/profile 文件,添加 Nginx 的环境变量:
sudo vi /etc/profile
G 跳转到文件尾行,$ 跳转到当前行末尾,i 编辑文件。在文件末尾新建一行添加:
export NGINX_HOME=/export/server/nginx
export PATH=$PATH:$NGINX_HOME/sbin
ESC 退出编辑,:wq 保存并退出。重新加载系统配置文件 /etc/profile,使其中的环境变量和设置立即生效:
source /etc/profile
4. 创建 Nginx 服务
创建并编辑 Nginx 服务文件:
sudo vi /lib/systemd/system/nginx.service
文件内容如下:
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/export/server/nginx/sbin/nginx
ExecReload=/export/server/nginx/sbin/nginx -s reload
ExecStop=/export/server/nginx/sbin/nginx -s quit
PrivateTmp=true
[Third_party]
WantedBy=multi-user.target
ESC 退出编辑,:wq 保存并退出。
5. 启动 Nginx
启动 Nginx 并设置开机自启动:
# 启动nginx
systemctl start nginx
# 查看nginx状态
systemctl status nginx
# 设置开机自启动
systemctl enable nginx
Systemd 服务其他命令:
# 重启nginx systemctl restart nginx # 停止nginx服务 systemctl stop nginx
6. 验证 Nginx
访问本地服务器以验证 Nginx 是否正常运行:
curl http://localhost