网站迁移笔记

7 月 5 日至 8 日,本站自上线以来遭遇了第一次长时间无法访问。原因有些用户可能已经看到了当时的提示:网站没有按照要求在工信部备案。此事说来甚委屈,毕竟博客仅仅上线一年,只是用来总结一下自己从事基础 GNSS 数据处理工作的一点人生经验。况且,网站并没有太多用户,我一个小博客,怎么就无法访问了呢?

值得庆幸的是,网站终于在 8 日下午得到恢复。本文简单总结这次搬家的过程,既可以说是对中断原因的解释,也算是一次教训检讨。若今后再出现网站不能访问的问题时,请大家及时反馈,并耐心等待解决方案。

中断原因

本网站的域名通过阿里云旗下的万网购买,自上线之日起,域名解析和网站一直托管在阿里云服务器上。之前也听说过托管在境内服务器的网站需要备案的事情,但在尝试备案时,系统提示该域名后缀无法备案。但网站一直能够访问,就想当然的以为该类后缀无需备案了。直至网站突然无法访问才领悟到,当时的想法太想当然了。

出现网站不能访问的情况后,第一时间联系了阿里云的工作人员。经过客服的解释,才终于理清了思路:

  1. 凡是托管在在境内(除港澳台)的网站,都需要在上线之前在工信部备案;
  2. 工信部目前已经批准了包括 .help、.info、.me 等后缀的域名注册;
  3. 工信部当前仅接受 .com、.cn、.net 等传统后缀域名备案的申请。

是的,有些类似于第二十二条军规:你可以在国内注册,我也很乐意批准,但你不可以在国内服务器上线。

迁移过程

ECS 购买

好的,要恢复网站有两条路可以走:要么将网站更换成能备案的域名;要么将其迁移到港澳台或国外的机房,绕过备案的限制。经过权衡之后,忍痛租了一台位于香港的 ECS 云服务器。价格虽然贵了一些,但考虑到以后还能用来扩展一些其他的功能,还是值得的。

这次购买的是阿里 ECS 最低配置的版本:1 个内核,1 GB 内存,40 GB 磁盘空间,运行 CentOS 7 操作系统。

安全设置

初始化之后的服务器环境,基本禁用了除 SSH 或 RDP 远程控制外所有的功能端口。因此,设置服务器的第一步就是先开放服务器的 HTTP 端口。

进入阿里云的 ECS 管理控制台,找到“安全组”的“配置规则”页面,在“入方向”上添加 HTTP 的入站规则。

程序安装

下一步是安装 nginx 程序,它是一个轻量级的 Web 服务器程序,可用来托管网站和电子邮件服务。CentOS 7 操作系统安装该程序的命令为:

1
2
$ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum install nginx

之后还需要开启操作系统防火墙的 80 端口,nginx 将通过该端口对外提供服务。CentOS 7 系统默认的防火墙程序已经由 iptables 换成了 firewalld,并且默认没有启动。可使用下面的命令来启动防火墙,并将其添加到开机启动项:

1
2
$ systemctl start firewalld
$ systemctl enable firewalld.service

然后使用下面的指令来永久开放 80 端口,并重启防火墙:

1
2
$ firewall-cmd --add-port=80/tcp --permanent
$ firewall-cmd --reload

服务器设置

最后就是对网站运行环境的设置了。首先为系统创建一个新用户,用于保管网站的文件。这样既方便以后的网站部署,也有利于保护服务器的安全。使用新用户将 hexo 生成的 public/ 文件夹上传至该用户的主文件夹下。作为一个静态站,该文件夹已经包含了网站的全部资源。

修改 nginx 程序的配置文件:/etc/nginx/nginx.conf,在其中添加网站配置。主要修改的部分如下:

server {
listen     80 default_server;
listen     [::]:80 default_server;
server_name  www.gnss.help gnss.help;
root      /home/writer/public;
index      index.html;
}

在该文件中,listen 为服务器监听的端口,这里保持默认即可;server_name 项为网站域名;root 项代表文件资源所在的目录;index 项为网站主页文件的文件名。

配置完成后,开启 nginx 就可以通过服务器的公网 IP 访问网站了:

1
$ nginx &

如果访问时提示 “403 Forbiden” 的错误,说明启动 nginx 程序的用户没有访问网站资源文件夹的权限。更改网站资源文件夹及其上层文件夹的权限为 755 即可解决。

完成以上操作之后,网站就已经能够访问了。以后每次发布新的文章时,只要通过 SFTP 用本地的 public/ 文件夹覆盖服务器上的同名文件夹即可。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏