售前咨询400-838-0503

云服务器重启后网站打不开怎么办?

发布:2026-10-01 12:37

搜索全部帮助分类的文档

Linux 云服务器重启以后,偶尔会出现服务器本身能够正常连接,但网站却突然打不开的情况。

常见表现包括:

网站一直加载;

浏览器提示连接超时;

出现 502 Bad Gateway;

出现 503 Service Unavailable;

Nginx 或 Apache 无法启动;

Docker 容器没有恢复;

数据库服务没有启动;

网站目录所在的数据盘没有自动挂载。

这种情况下,不建议一开始就重新安装服务器或者修改大量配置。

可以按照下面的顺序逐项排查。

一、先确认服务器是否已经正常启动

首先确认云服务器当前状态为运行中。

然后通过 SSH 登录服务器。

例如:

ssh root@服务器IP -p SSH端口

如果 SSH 也无法连接,需要先排查服务器本身、SSH 端口或者网络情况,而不是继续检查网站。

如果 SSH 可以正常登录,说明服务器操作系统基本已经启动,可以继续排查 Web 服务。

二、检查服务器当前时间和运行时间

执行:

uptime

可以确认服务器是否确实刚刚完成重启。

再执行:

date

确认系统时间是否正常。

部分网站、HTTPS、Token 或数据库连接可能受到系统时间明显错误的影响。

如果服务器时间异常,应先检查时区和时间同步服务。

三、检查是否存在启动失败的服务

检查启动失败的系统服务

这是服务器重启后非常值得优先检查的一步。

执行:

systemctl --failed

如果没有异常服务,通常会显示没有 failed units。

如果看到类似:

nginx.service      loaded failed failed
php8.2-fpm.service loaded failed failed

说明对应服务启动失败。

可以进一步查看:

systemctl status nginx --no-pager

如果是 PHP-FPM,可以根据实际 PHP 版本检查。

例如:

systemctl status php8.2-fpm --no-pager

如果是 MySQL:

systemctl status mysql --no-pager

或者部分系统使用:

systemctl status mariadb --no-pager

重点查看 Active 状态以及最后几行错误提示。

四、检查 Nginx 或 Apache 是否运行

如果网站使用 Nginx,可以执行:

systemctl status nginx --no-pager

正常情况下应该看到:

Active: active (running)

如果没有运行,可以先检查配置:

nginx -t

如果配置检查正常,再尝试启动:

systemctl start nginx

如果服务器使用 Apache,Debian 或 Ubuntu 常见服务名称为:

systemctl status apache2 --no-pager

CentOS、Rocky Linux、AlmaLinux 等系统常见:

systemctl status httpd --no-pager

请根据实际环境判断。

五、检查 80 和 443 端口是否监听

检查网站端口监听状态

网站通常需要监听:

80

以及:

443

可以执行:

ss -lntp | grep -E ':80|:443'

如果 Nginx 正常工作,通常可以看到类似:

LISTEN 0 511 0.0.0.0:80
LISTEN 0 511 0.0.0.0:443

如果完全没有相关输出,说明 Web 服务可能没有正常监听网站端口。

此时应该继续检查 Nginx、Apache 或其他反向代理服务。

如果端口已经正常监听,可以在服务器本机测试:

curl -I http://127.0.0.1

如果能够返回:

HTTP/1.1 200 OK

或者其他正常 HTTP 状态码,说明 Web 服务本机访问基本正常。

六、本机正常但公网打不开怎么办?

如果:

curl -I http://127.0.0.1

能够正常返回,但通过公网 IP 或域名无法打开,就需要继续检查网络入口。

可以查看系统防火墙。

如果使用 UFW:

ufw status

如果使用 firewalld:

firewall-cmd --list-all

如果使用 nftables:

nft list ruleset

另外还需要确认云平台安全组是否仍然允许网站使用的端口。

通常网站至少需要根据实际业务开放:

80/TCP

443/TCP

如果重启之前网站正常、重启以后公网异常,也不要随意大范围放行所有端口。

应该先确认具体被拦截的位置。

七、出现 502 Bad Gateway 怎么办?

如果网站能够打开,但提示:

502 Bad Gateway

通常说明 Nginx 本身可以正常提供服务,但后端程序没有正常响应。

如果是 PHP 网站,可以检查 PHP-FPM。

例如:

systemctl status php8.2-fpm --no-pager

实际服务名称需要根据安装的 PHP 版本修改。

也可以查看当前 PHP-FPM 服务:

systemctl list-units --type=service | grep php

如果 PHP-FPM 没有启动,可以查看日志和具体错误。

例如:

journalctl -u php8.2-fpm -n 100 --no-pager

如果网站使用其他后端,例如 Node.js、Java 或 Python,也需要检查对应服务是否已经重新启动。

八、检查数据库是否正常启动

部分网站 Web 服务正常,但数据库没有启动,也会导致网站报错或者无法正常加载。

MySQL 可以检查:

systemctl status mysql --no-pager

MariaDB 可以检查:

systemctl status mariadb --no-pager

如果数据库启动失败,可以查看日志:

journalctl -u mysql -n 100 --no-pager

或者:

journalctl -u mariadb -n 100 --no-pager

数据库启动失败常见方向包括:

磁盘空间不足;

数据盘未挂载;

配置错误;

权限问题;

异常关机后的恢复过程;

其他服务占用端口。

不要直接删除数据库文件尝试修复。

九、Docker 网站重启后打不开怎么办?

如果网站通过 Docker 或 Docker Compose 部署,可以先查看容器状态:

docker ps -a

如果使用 Compose:

docker compose ps

重点观察容器是否显示:

Up

Exited

Restarting

或者其他异常状态。

如果容器没有运行,可以查看日志:

docker logs --tail 100 容器名称

如果是 Compose 项目,也可以进入项目目录后执行:

docker compose logs --tail 100

如果容器在服务器重启后没有自动启动,还需要检查 Compose 中是否配置了合适的重启策略。

例如:

restart: unless-stopped

不过不要只是增加自动重启配置。

如果容器本身因为数据库、权限或配置问题启动失败,即使设置自动重启,也只会不断进入 Restarting 状态。

十、检查 Docker 服务本身

如果所有 Docker 容器都没有运行,可以先检查 Docker 服务:

systemctl status docker --no-pager

如果 Docker 没有启动:

systemctl start docker

再检查:

docker ps -a

如果希望 Docker 服务随系统启动,可以确认:

systemctl is-enabled docker

如果显示没有启用,可以根据实际需要执行:

systemctl enable docker

十一、检查网站数据盘是否自动挂载

检查数据盘自动挂载

这是服务器重启以后比较容易被忽略的问题。

假设:

网站文件;

MySQL 数据;

Docker 数据;

用户上传文件

位于额外数据盘。

如果重启以后数据盘没有自动挂载,Nginx 或数据库就可能找不到原来的文件。

首先执行:

lsblk -f

再查看当前挂载:

findmnt

例如网站数据原本位于:

/data

可以执行:

findmnt /data

如果没有正常返回挂载信息,就需要继续检查数据盘。

同时可以检查:

cat /etc/fstab

确认开机自动挂载配置。

修改 /etc/fstab 前一定要谨慎。

配置错误可能导致服务器下次启动异常。

如果需要验证当前配置,可以在确认重要数据已备份后使用:

mount -a

如果出现报错,应先修正挂载配置。

十二、检查网站目录是否存在

如果数据盘已经挂载,可以继续检查网站目录。

例如:

ls -lah /www/wwwroot/

或者根据实际网站路径:

ls -lah /data/www/

确认:

网站目录存在;

网站文件没有丢失;

目录权限正常;

实际挂载位置正确。

如果 Nginx 配置中的网站目录不存在,也可能导致网站访问异常。

可以通过:

nginx -T

查看当前加载的 Nginx 配置。

输出内容可能较多,可以结合网站域名搜索。

例如:

nginx -T 2>&1 | grep -n "example.com"

十三、检查磁盘空间是否已满

服务器重启以后部分服务无法启动,也可能只是磁盘空间已经不足。

执行:

df -h

如果看到某个重要分区已经达到:

100%

MySQL、Docker、PHP 和其他程序都可能因为无法写入数据而启动失败。

还可以检查 inode:

df -i

如果 inode 使用率达到 100%,同样可能出现:

No space left on device

即使 df -h 看起来还有一定剩余空间。

十四、检查域名是否仍然解析到正确地址

如果直接访问服务器 IP 正常,但域名打不开,需要检查域名解析。

可以执行:

getent hosts 你的域名

确认解析结果是否与当前服务器地址一致。

如果服务器迁移、重装或产品发生变化,应以客户中心当前显示的信息为准。

如果刚刚修改 DNS,解析更新还可能需要一定时间。

十五、检查网站服务是否设置开机自启

如果已经确认某个服务每次重启服务器以后都不会自动运行,可以检查:

systemctl is-enabled nginx

如果返回:

disabled

并且确认该服务确实需要开机启动,可以执行:

systemctl enable nginx

MySQL:

systemctl enable mysql

PHP-FPM 需要根据实际版本:

systemctl enable php8.2-fpm

Docker:

systemctl enable docker

只对实际需要开机运行的服务启用自启动。

十六、快速排查表

问题现象 优先检查 常见原因
SSH 也连接不上 服务器状态、SSH、网络 系统或网络尚未恢复
网站完全打不开 80/443、Nginx Web 服务未启动
出现 502 PHP-FPM、后端应用 后端服务没有启动
出现数据库错误 MySQL / MariaDB 数据库未启动
Docker 网站打不开 docker ps -a 容器未恢复或启动失败
重启后网站目录消失 lsblk、findmnt 数据盘没有自动挂载
服务启动失败 systemctl --failed 配置、权限或依赖异常
本机正常公网不通 防火墙、安全组 网络入口未放行
IP 能打开但域名不行 DNS 域名解析异常
服务经常重启后不运行 systemctl is-enabled 未配置开机自启

建议按照:

服务器状态 → failed 服务 → Web 服务 → 80/443 → PHP → 数据库 → Docker → 数据盘 → 磁盘空间 → DNS

的顺序进行排查。

十七、仍然无法解决怎么办?

如果已经完成以上检查,网站仍然无法访问,可以通过莱卡云客户中心提交工单。

建议提供:

服务器 IP;

操作系统;

问题发生时间;

网站使用 Nginx 还是 Apache;

是否使用 Docker;

具体浏览器错误;

是否出现 502、503 等状态码。

如果方便,还可以提供以下命令输出:

systemctl --failed
ss -lntp
df -h

如果运行 Docker:

docker ps -a

请不要在公开截图或聊天中提供服务器密码、数据库密码、Token、私钥等敏感信息。

总结

云服务器重启后网站打不开,并不一定是网站文件损坏。

更常见的原因包括:

Nginx 或 Apache 没有启动;

PHP-FPM 或数据库启动失败;

Docker 容器没有恢复;

80/443 端口没有监听;

数据盘没有自动挂载;

磁盘空间不足;

网站依赖服务没有配置开机自启。

建议首先执行:

systemctl --failed

检查失败服务。

然后通过:

ss -lntp | grep -E ':80|:443'

确认网站端口监听情况。

如果网站数据位于额外数据盘,还应该通过:

lsblk -f

和:

findmnt

确认数据盘已经正常挂载。

按照这个顺序逐层排查,通常可以较快定位服务器重启后网站无法访问的具体原因。

按文档操作后还是不行,把机器编号、出问题的时间点和现象截图一起提工单,能少来回一轮。

提交工单