网站运维实战: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/504 | PHP 没起来 | systemctl status php8.1-fpm,看 error.log |
| 配置语法错 | nginx -t 报错 | 多数是缺 } 或分号,对照模板补 |
| 证书到期 | 访问显示不安全 | certbot renew,保证 80 端口通 |