网站运维实战:Nginx 与 Web 服务器(LNMP 部署与排查)

分类:网站
标签: Nginx、Web、LNMP、PHP、ufw、HTTPS、WordPress
摘要: 一个网站能不能稳定对外,核心在 Web 服务器(我用的是 Nginx)。本文围绕”部署、重载、看日志、排障、防火墙”讲透 Nginx 和网站运维的常用命令,从空系统搭 LNMP 到 HTTPS 证书,全程亲测。


一、先搞清网站那套架构

我的博客是 LNMP 架构,四件套各司其职:

浏览器 → Nginx(Web服务器,接收请求)
           ├→ 静态文件:直接返回
           └→ 动态请求 → 转发给 PHP-FPM 处理
数据库 MySQL(存文章/内容) ← PHP 读写

一句话:Nginx 负责”接客”,PHP 负责”算”,MySQL 负责”记”。

二、Nginx 最常用命令(必须会)

nginx -t                 # 检查配置对不对(★改完必测)
nginx -s reload          # 平滑重载配置(不中断服务)
systemctl restart nginx  # 重启 nginx
systemctl status nginx   # 看运行状态

看日志(排障靠这个):

tail -f /var/log/nginx/access.log   # 访问日志(谁来过、返回多少)
tail -f /var/log/nginx/error.log    # 错误日志(哪里出错一目了然)

网站打不开,先看 error.log,90% 的答案都在里面。

三、改配置的正确姿势(防止改挂)

cp /etc/nginx/sites-enabled/default /root/nginx-default.bak   # ① 先备份
vim /etc/nginx/sites-enabled/default                          # ② 再改
nginx -t                                                      # ③ 校验
systemctl reload nginx                                        # ④ 通过才重载

⚠️ 最容易翻车:配置里少了右花括号 },nginx -t 直接报错。养成”改完必 nginx -t“的习惯。
域名 + 请求转发关键配置:

server {
    listen 80;
    server_name vale114.cn;
    location / {
        try_files $uri $uri/ /index.php?$args;    # WordPress 漂亮链接必需
    }
}

四、防火墙(网站访问不了先查它)

云服务器访问不通,往往不是服务挂了,是防火墙挡了。而且云服务器是”两层墙”都要放行:

ufw status              # 看当前规则
ufw allow 80/tcp        # 放行 HTTP
ufw allow 443/tcp       # 放行 HTTPS
ufw allow 8080/tcp      # 放行其他端口
ufw deny from 1.2.3.4   # 封禁某个 IP
ufw delete allow 8080   # 取消开放

云服务器(阿里云/腾讯云)还要去控制台安全组放行端口,光放 ufw 外网仍不通——这是新手 99% 会漏的一步。

五、动态站点(PHP-FPM 配合)

systemctl status php8.1-fpm      # 看 PHP 进程
tail -f /var/log/nginx/error.log # 看 PHP 相关报错
# 常用排障组合:先看 nginx 有没有起来,再看 fpm,再看日志
systemctl status nginx php8.1-fpm mysql

LNMP 里 Nginx 和 PHP 之间靠 socket 通信,nginx error.log 出现 connect() to unix:/run/php/php8.1-fpm.sock failed,多半是 PHP-FPM 没启动或版本不匹配。

六、HTTPS(Let’s Encrypt 免费证书)

apt install certbot                # 装 Certbot
certbot --nginx -d vale114.cn -d www.vale114.cn   # 自动签发并配到 nginx
# 成功后证书在:
# /etc/letsencrypt/live/vale114.cn/fullchain.pem   (公钥)
# /etc/letsencrypt/live/vale114.cn/privkey.pem     (私钥)
certbot renew                      # 证书快到期时续期(90天自动续期)

证书续期会自动跑,前提是 http(80) 端口能正常访问用于校验。

七、踩坑/易混点速记

场景现象解决
配置改了没生效还是老样子nginx -t + systemctl reload nginx
网站打不开浏览器超时① 服务起了吗 ② ufw ③ 云平台安全组
页面 502/504PHP 没起来systemctl status php8.1-fpm,看 error.log
配置语法错nginx -t 报错多数是缺 } 或分号,对照模板补
证书到期访问显示不安全certbot renew,保证 80 端口通
分类: 网站