导读:本期聚焦于大卫创作的《CentOS离线安装Nginx详细教程是什么?常见问题一篇讲清楚》,敬请观看详情。服务器处于内网环境无法联网时,如何在CentOS上顺利装好Nginx?这篇文章把离线安装的完整流程拆开讲透:先说明为什么要准备gcc、openssl、pcre、zlib这些依赖包,再给出在联网机器上下载rpm包和源码包的具体方法,然后一步步演示编译安装Nginx的全过程,包括configure参数配置、make编译以及systemd服务配置。针对安装过程中经常报错的场景,比如缺少C编译器、pcre找不到、端口被占用、防火墙拦截等,文中也逐一给出排查思路和解决办法,最后还整理了离线升级和常用目录说明,方便随时查阅。

内网服务器、政务云、金融机房,这些环境往往不允许直接连外网,yum源用不了,想在CentOS上部署Nginx就只能走离线安装这条路。离线安装的核心思路其实不复杂:把编译环境和依赖包提前在有网的机器上下载好,拷贝到目标服务器,再通过源码编译完成安装。这篇文章把整个过程和常见的坑都梳理一遍,照着做基本能一次成功。

CentOS离线安装Nginx详细教程是什么?常见问题一篇讲清楚

一、为什么离线安装Nginx要准备那么多依赖

Nginx的官方发行包是源码形式,需要在本机编译后才能运行,而编译工作依赖几个基础组件。第一个是gcc编译器,没有它make这一步直接报错,提示找不到C编译器。第二个是openssl-devel,Nginx如果要开启HTTPS支持,编译时必须能找到openssl的头文件和库。第三个是pcre-devel,Nginx的rewrite模块依赖PCRE库来实现正则匹配,日常配置里的location规则、伪静态跳转都靠它。第四个是zlib-devel,gzip压缩功能需要这个库。

很多人在联网环境下用yum安装时感觉不到这些依赖的存在,因为yum会自动把依赖一并装上。但离线环境下没有这回事,缺一个包编译就会中断,所以提前把依赖备齐是整个流程中最关键的一步。可以简单记一个口诀:gcc管编译,openssl管HTTPS,pcre管rewrite,zlib管gzip,四个都不能少。

二、在联网机器上下载依赖包和源码包

找一台能联网的CentOS机器,系统版本尽量和目标服务器一致,比如都是CentOS 7.9。下载rpm依赖包有两种方式,推荐用yumdownloader,它能把rpm文件连同依赖一起下载到本地目录而不安装。如果系统里没有这个命令,先安装yum-utils包。

mkdir /root/nginx-offline-rpm
cd /root/nginx-offline-rpm
yum install -y yum-utils
yumdownloader --resolve --destdir=/root/nginx-offline-rpm gcc gcc-c++ openssl-devel pcre-devel zlib-devel
# 如果不装yum-utils,也可以用这条命令只下载不安装
yum install -y --downloadonly --downloaddir=/root/nginx-offline-rpm gcc gcc-c++ openssl-devel pcre-devel zlib-devel

源码包去Nginx官方站点下载即可,一般选择稳定版,比如nginx-1.24.0.tar.gz。下载完成后,把rpm目录和源码包一起用U盘或者scp拷贝到内网服务器上的某个目录,比如放在/root/nginx-offline下。

三、内网服务器上的完整安装步骤

先把依赖包装上。进入rpm所在目录,执行rpm批量安装,--force --nodeps参数可以避免个别包顺序问题导致的报错,依赖之间有前后关系时加上更稳妥。

cd /root/nginx-offline/nginx-offline-rpm
rpm -Uvh *.rpm --force --nodeps
# 验证编译器是否可用
gcc --version

接着解压源码包并编译。configure阶段的prefix参数指定安装目录,建议放在/usr/local/nginx,目录结构清晰,后续升级和排查都方便。如果明确不需要某些模块,可以加--without参数精简体积,一般默认配置就够用了。

cd /root/nginx-offline
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module
make && make install

安装完成后,主程序在/usr/local/nginx/sbin/nginx,配置文件在/usr/local/nginx/conf/nginx.conf。为了方便直接敲nginx命令启动,可以做个软链接到系统PATH目录下,然后启动并验证。

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
nginx -t          # 检查配置文件语法
nginx             # 启动
curl http://127.0.0.1   # 本机验证,返回html内容即成功

四、配置systemd服务实现开机自启

源码安装的Nginx默认没有服务脚本,直接执行nginx命令启动虽然能用,但服务器重启后不会自动拉起。建议在/usr/lib/systemd/system目录下新建nginx.service文件,交给systemd统一管理。

vim /usr/lib/systemd/system/nginx.service

文件内容如下,注意pid文件路径要和nginx.conf里pid配置保持一致,否则restart时会报错找不到进程。

[Unit]
Description=nginx - high performance web server
After=network.target

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存后执行systemctl daemon-reload刷新配置,之后就可以用systemctl start nginx启动、systemctl enable nginx设置开机自启了。

五、常见报错和解决办法汇总

1、configure时报错C compiler cc is not found。说明gcc没有装上或者rpm安装失败,回到rpm目录重新执行安装命令,用rpm -qa | grep gcc确认包是否存在。

2、报错the HTTP rewrite module requires the PCRE library。这是pcre-devel没装或者装的是pcre而不是pcre-devel,devel包里才有编译需要的头文件,两者不能混用。同理,报错ssl modules require the OpenSSL library就是缺openssl-devel。

3、启动时报80端口被占用。内网服务器经常预装了httpd服务,用netstat -tlnp | grep 80或者ss -tlnp | grep 80查一下,被占用就停掉对应服务并禁用它:systemctl stop httpd && systemctl disable httpd,或者修改nginx.conf里的listen端口。

4、本机能访问但其他机器访问不通。大概率是防火墙问题,执行firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload放行端口。内网环境如果确认安全,也可以直接systemctl stop firewalld临时关闭验证。

5、修改配置后不生效。nginx重新加载配置用的是nginx -s reload,如果直接重复执行nginx会报端口占用错误,因为那会启动第二个进程。另外修改后先执行nginx -t检查语法是个好习惯。

六、离线升级和日常维护建议

离线升级Nginx版本时不需要卸载旧版,把新版本源码包按同样的configure参数编译,但make之后只执行make install覆盖安装,不要执行make clean之前的任何清理动作。覆盖前记得备份旧的sbin/nginx二进制文件和配置目录,万一新版本有问题可以快速回退。

日常运维中记住几个关键路径:日志在/usr/local/nginx/logs下,access.log和error.log分别记录访问和错误信息,排查问题时先看error.log往往最直接;网页根目录默认是/usr/local/nginx/html,上线业务时把静态文件放这里或者修改root指向业务目录即可。建议把logs目录加入日志切割计划,长期运行不清理日志会撑满磁盘,这在离线内网机器上尤其麻烦,因为排查起来更费周折。

CentOS离线安装nginxnginx离线部署Linux运维修改时间:2026-09-03 21:49:10

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260903/49827.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。