服务公告

服务公告 > 常见问题 > 服务器重启后网站没起来:服务没设自启的补救

服务器重启后网站没起来:服务没设自启的补救

发布时间:2026-10-15 12:06
## 症状现象 机器因为维护、断电或宿主机迁移重启了,SSH 登上去一切正常,网站却打不开:Nginx、PHP-FPM、数据库、缓存,一个个都是 stopped 状态。手工 start 全部拉起后恢复。这不是故障,是配置欠账:服务安装后没有设置开机自启,重启把欠账暴露出来。顺带暴露的还有依赖顺序问题——数据库比 Web 起得晚,应用启动时连库失败。另一种变体更隐蔽:服务都起了但顺序乱了,应用比数据库先起,连接失败退出,看起来同样是没起来。 ## 补救:enable 与依赖顺序 逐个补自启并立即拉起: ```bash systemctl enable --now nginx systemctl enable --now mysqld systemctl enable --now php-fpm redis ``` enable 写入自启,now 顺带启动,一条命令两件事。验证自启配置生效: ```bash systemctl is-enabled nginx mysqld php-fpm ``` 输出都是 enabled 才算数。依赖顺序在服务单元的 After 与 Requires 里声明,自编译或自定义单元要补上数据库与网络的依赖,应用单元加个启动重试参数,短暂等待比直接失败优雅得多。enable 的同时检查单元的依赖段落,写错的依赖会让自启形同虚设。 ## 验证:重启演练 补完配置不能只看 is-enabled,做一次真实的重启演练:低峰期重启,起来后核对一张清单——所有服务状态 active、网站可访问、数据库可写、定时任务在跑、端口监听齐全。演练通过,这次补救才算收口。重启后验证清单值得固化成脚本,下次任何重启自动跑一遍,输出做成清单式报告,任何一项失败都明确标注。 ## 预防建议 顺云云服务器的部署规范里写死一条:每新增一个服务,enable 是部署动作的一部分,不是可选项。docker 容器配 restart 策略,crontab 天然随 cron 服务自启无需操心,supervisor 与各类自建进程同样确认托管层自启。重启是一次免费的容灾演练,把每次重启都当成检验机会,欠账会越查越少,重启同时也检验了挂载与网络配置。把自启检查加进部署流程的最后一步,自动化里没有忘记这个选项。真正的教训是:没经历过重启的配置,都当它没配过。