场景需求:
在无外网访问权限的CentOS7虚拟机环境中,通过离线方式安装最新稳定版Nginx,并实现服务自启动与基础配置验证。
一、环境准备阶段
1.1 离线资源获取(需提前在有网络的机器操作)
(1) 下载Nginx源码包
# 访问官网获取最新稳定版链接(例如1.25.3)
wget https://nginx.org/download/nginx-1.25.3.tar.gz
(2) 收集依赖包(关键!)
在有网络的CentOS7机器上生成完整依赖清单:
# 安装下载工具
yum install yum-utils -y
# 生成依赖包列表(需提前模拟安装环境)
repotrack gcc pcre-devel zlib-devel openssl-devel make
生成的rpm
文件需全部拷贝至/opt/nginx_deps
目录(建议使用U盘或SCP传输)
二、离线安装流程
2.1 传输资源到目标机
将以下文件上传至虚拟机(示例路径):
-
/opt/nginx_src/nginx-1.25.3.tar.gz
-
/opt/nginx_deps/*.rpm
(所有依赖包)
2.2 安装编译依赖
# 进入依赖目录
cd /opt/nginx_deps
# 批量安装所有依赖(注意处理安装顺序)
for pkg in *.rpm; do rpm -ivh $pkg --nodeps --force; done
# 验证关键依赖
rpm -qa | grep -E 'gcc|pcre|zlib|openssl'
避坑提示:
若出现依赖冲突,尝试按顺序优先安装pcre-devel
和openssl-devel
2.3 编译安装Nginx
(1) 解压源码包
tar -zxvf /opt/nginx_src/nginx-1.25.3.tar.gz -C /usr/local/src/
cd /usr/local/src/nginx-1.25.3
(2) 配置编译参数(按需定制)
./configure \
--prefix=/usr/local/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/lock/nginx.lock \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-threads
(3) 编译并安装
make -j $(nproc) # 使用多核加速编译
make install
验证编译:
执行nginx -V
应显示编译参数,若报错command not found
需检查/usr/sbin
是否加入$PATH
三、服务配置与优化
3.1 创建Systemd服务文件(关键步骤)
cat > /etc/systemd/system/nginx.service <<EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=/var/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
EOF
3.2 初始化目录结构
mkdir -p /var/log/nginx /etc/nginx/conf.d
chown -R nobody:nobody /var/log/nginx
3.3 防火墙放行(若启用)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
四、服务管理与验证
4.1 启动及开机自启
systemctl daemon-reload
systemctl start nginx
systemctl enable nginx
4.2 验证安装结果
# 检查进程
ps -ef | grep nginx | grep -v grep
# 测试端口监听
netstat -tunlp | grep ':80'
# 模拟访问测试(返回Welcome即成功)
curl -I 127.0.0.1
五、故障排查指南
5.1 常见问题处理
▶ 报错:nginx: [emerg] mkdir() "/var/log/nginx" failed
# 手动创建日志目录并授权
mkdir -p /var/log/nginx
chmod 755 /var/log/nginx
▶ 服务启动失败
# 查看详细日志
journalctl -u nginx.service --since "5 minutes ago"
5.2 配置文件语法检查
nginx -t -c /etc/nginx/nginx.conf
六、升级维护方案
6.1 离线升级步骤
-
下载新版源码包并传输至目标机
-
重复编译安装流程(注意备份原配置)
-
平滑重启:
nginx -s reload
附录:
-
离线依赖包完整列表(样例):
pcre-devel-8.32-17.el7.x86_64.rpm
openssl-devel-1.0.2k-24.el7_9.x86_64.rpm
zlib-devel-1.2.7-21.el7_9.x86_64.rpm
gcc-4.8.5-44.el7.x86_64.rpm
...
-
编译参数优化建议:根据业务需求添加
--with-stream
等模块
原创声明:本文所有操作步骤均经过实际环境验证,针对离线场景的特殊需求进行了深度优化。转载请注明出处。