内网开发不求人:手把手教你搞定openEuler 22.03 LTS离线安装Nginx 1.20.2
内网开发不求人手把手教你搞定openEuler 22.03 LTS离线安装Nginx 1.20.2刚接手一台全新的openEuler服务器却发现它孤零零地躺在内网角落连不上外网作为开发或运维人员这种场景再熟悉不过了。本文将带你一步步解决这个棘手问题从零开始完成Nginx的离线安装让你在内网环境中也能轻松搭建Web服务。1. 准备工作构建离线安装环境1.1 获取离线安装包首先需要在一台能够访问互联网的同架构机器上建议使用相同版本的openEuler系统准备离线安装包。这里推荐使用yumdownloader工具它能自动解析并下载所有依赖包。mkdir -p ~/nginx-offline-install cd ~/nginx-offline-install yumdownloader --resolve nginx关键点说明--resolve参数会自动下载所有依赖包建议使用与目标机器相同的系统版本避免兼容性问题如果目标机器是ARM架构需添加--archaarch64参数1.2 传输安装包到目标机器将下载好的rpm包传输到内网环境常见方式包括使用U盘等物理介质拷贝通过内网文件共享服务传输使用scp命令如果内网有SSH连接scp -r ~/nginx-offline-install usertarget_ip:/tmp/2. 安装Nginx及处理依赖问题2.1 基础安装命令进入存放rpm包的目录执行安装cd /tmp/nginx-offline-install sudo rpm -Uvh *.rpm这个命令会按依赖关系自动安装所有包。如果遇到依赖问题可以尝试以下变通方案2.2 处理常见依赖冲突场景1已有新版本依赖但Nginx需要旧版本sudo rpm -Uvh --oldpackage *.rpm场景2跳过依赖检查慎用sudo rpm -Uvh --nodeps *.rpm注意--nodeps会强制安装可能导致运行时问题仅作为最后手段使用2.3 验证libstdc版本兼容性Nginx对C运行时库版本有要求检查方法strings /usr/lib64/libstdc.so.6 | grep CXXABI输出应包含CXXABI_1.3.9如果不满足需要额外安装兼容版本的libstdc。3. 配置与权限设置3.1 基础配置文件调整Nginx主配置文件通常位于/etc/nginx/nginx.conf。安装后建议立即备份sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak然后根据需求修改配置常见调整包括worker_processes数量监听端口日志路径静态文件目录3.2 关键目录权限设置正确的权限设置能避免很多运行时问题# 创建日志目录 sudo mkdir -p /var/log/nginx sudo chown nginx:nginx /var/log/nginx # 配置文件权限 sudo chown root:nginx /etc/nginx/nginx.conf sudo chmod 644 /etc/nginx/nginx.conf # 网页文件目录权限 sudo chown -R nginx:nginx /usr/share/nginx/html sudo chmod -R 755 /usr/share/nginx/html3.3 SELinux策略调整如果系统启用了SELinux可能需要临时或永久调整策略# 临时禁用 sudo setenforce 0 # 永久禁用需重启生效 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config4. 服务管理与故障排查4.1 服务控制命令# 启动服务 sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx # 检查状态 sudo systemctl status nginx # 测试配置 sudo nginx -t4.2 防火墙配置内网环境可能需要关闭防火墙或开放端口# 查看防火墙状态 sudo firewall-cmd --state # 开放80端口 sudo firewall-cmd --permanent --add-port80/tcp sudo firewall-cmd --reload # 或完全关闭防火墙内网环境适用 sudo systemctl stop firewalld sudo systemctl disable firewalld4.3 常见问题排查问题1Nginx启动失败检查错误日志journalctl -xe tail -n 50 /var/log/nginx/error.log问题2403 Forbidden通常是权限问题检查文件所有者是否为nginx用户目录是否有执行权限(x)SELinux上下文是否正确问题3端口冲突检查端口占用情况sudo netstat -tulnp | grep :805. 高级配置与优化5.1 编译安装选项备选方案如果rpm安装不满足需求可以考虑源码编译安装tar -xzvf nginx-1.20.2.tar.gz cd nginx-1.20.2 ./configure --prefix/usr/local/nginx \ --with-http_ssl_module \ --with-http_realip_module make sudo make install5.2 性能调优建议修改nginx.conf中的以下参数worker_processes auto; worker_connections 1024; keepalive_timeout 65; gzip on;5.3 日志分割配置添加日志分割脚本到cron#!/bin/bash mv /var/log/nginx/access.log /var/log/nginx/access_$(date %Y%m%d).log mv /var/log/nginx/error.log /var/log/nginx/error_$(date %Y%m%d).log kill -USR1 $(cat /var/run/nginx.pid)6. 实际应用场景示例6.1 静态网站部署配置简单的静态网站server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } }6.2 反向代理设置配置Nginx作为反向代理server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }6.3 负载均衡配置简单的负载均衡设置upstream backend { server 192.168.1.101:8080; server 192.168.1.102:8080; } server { listen 80; location / { proxy_pass http://backend; } }在内网环境中部署服务最重要的是提前做好充分准备。建议在测试环境先验证所有步骤准备好应急方案。遇到问题时多检查日志文件它们往往能提供最直接的线索。