今天有位朋友找我,咨询 Linode 服务器上的 WordPress 网站无法访问的问题。
我们用的 linode 服务器,到期没有及时续费(信用卡到期了),现在网站打不开了,你能帮忙恢复系统吗?
没有续费的话,服务器应该已经被销毁了吧。我的第一反应是这样的。但是印象中 Linode 似乎有一个宽限期,可以在一定时间内恢复数据。 过年的阿里云也有类似的机制,就是服务器如果不续费,或者者欠费了,阿里云会在一段时间内保留数据,用户可以在这段时间内续费,恢复服务器。
但是,如果服务器已经被销毁,代码和数据库理论上也没有了。 好在,这个朋友一直有自动备份,使用 Linode 的备份功能,定期备份了服务器上的数据。
现在的情况是,数据恢复了,但是网站还是不能访问。
排查过程
如果网站服务是 php wordpress 的,理论上服务器启动后,网站服务会自动启动。
于是要了服务器账号,登录上去看了一下:
- php 服务正常
- mysql 服务正常
- nginx 服务正常
- nginx 配置文件正常
- nginx 日志不正常,从浏览器访问域名,在 log 日志中看不到请求记录。
所以,ping 了一下域名。发现域名解析到的 IP 地址不是 Linode 服务器的 IP 地址,而是之前没有续费的服务器 IP 地址。
那问题就简单了。
解决
把 GoDaddy 域名解析到新的 Linode 服务器的 IP 地址即可。
然后就恢复访问了。
HTTPS 问题
但是,我发现一个不好解决的问题。就是这个服务器的系统版本很低:
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.3 (jessie)
Release: 8.3
Codename: jessie
python 版本还是 2.7 的。
我查了一下,Debian 8 已经 EOL(End of Life)了,官方不再提供安全更新。 而且 certbot 也不支持这个版本的 Debian。所以,无法使用 certbot 自动申请 Let's Encrypt 的证书。
有一种简单的配置方法,可以不用在服务器上配置 HTTPS 证书。 就是 GoDaddy 的域名解析,切换到 cloudflare,这个是全球最大的 CDN 网站,然后在 cloudflare 上将域名解析到现在的服务器上,同时在 cloudflare 上配置 ssl 即 https 的配置。这样就不需要在服务器上配置了。 同时还有个好处,就是这个服务器操作系统版本很旧,wordpress 版本也低,其实会有很多漏洞,可能被攻击。cloudflare 会帮忙拦截,同时 cloudflare 有全球节点加速功能,访问速度更快。
好了,记录到这里吧,方便以后遇到类似问题,直接转发这个文档就可以了。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式