启动命令没有报错,终端里也出现了绿色的 active,很容易让人以为部署已经结束。实际上,进程存活、端口监听和业务可用,是三个不同的检查点。
先看服务状态
以一个名为 example.service 的服务为例:
systemctl status example.service --no-pager
journalctl -u example.service -n 80 --no-pager
状态里除了 active,还要看启动时间、主进程,以及是否反复重启。应用启动很快就退出,而 systemd 又把它拉起时,偶尔看到的绿色状态可能具有迷惑性。
日志不要只截最后一行。真正的原因可能在前面,比如读取配置失败、工作目录错误,或者依赖的数据库连接不上。
确认监听地址
ss -lntp
127.0.0.1:8080 表示只监听本机回环地址。它适合放在同机反向代理后面,但外部不能直接访问这个监听地址。0.0.0.0:8080 表示监听所有 IPv4 接口,也不等于云防火墙已经允许外部流量。
先确定预期架构,再判断监听是不是正确。不是所有服务都需要暴露到公网。
检查真实请求
健康检查返回 200 是一个信号,但不一定覆盖实际功能。一个博客至少要检查首页、文章页、样式文件和不存在的页面;有账号的应用,还要确认未登录时不会直接看到私密内容。
如果使用反向代理,建议分别检查后端本地地址和公开域名。后端正常而公开域名异常,问题就更可能在代理、证书或者入口网络。
留下一条恢复路径
变更前保留旧配置,修改后先做语法检查,确认无误再重载。Nginx 的常用做法是:
nginx -t
systemctl reload nginx
这两步有先后关系:第一步失败,就不应继续执行第二步。把恢复命令和验证地址一起记下来,比只留下“已经部署”四个字有用得多。