将hexo next迁移至云服务器上

前言

还是觉得放github太慢,上传还要翻墙。添加到国内节点访问也麻烦,正好有台国内的服务器,备案过,方便被搜索引擎收录。

安装环境

1.Node官网下载Windows版本
安装后命令行输入node -v,显示版本号,就证明安装成功。
2.Git官网下载Windows版本
安装git会很慢,大概等个十分钟吧。

安装hexo

安装hexo

1
npm install hexo-cli -g


这里提示要升级npm,先运行npm install -g [email protected]升级下,很快。
hexo安装完后执行hexo -v,显示版本号就说明安装成功。

拷贝必要文件和目录

_config.yml
themes
source
scaffolds
package.json
.gitignore

将以上6个文件及目录拷贝到云服务器上,一起放一个目录,在此目录终端运行npm install生成hexo文件。

完成后本地测试下

1
2
3
hexo clean
hexo g
hexo s

访问http://localhost:4000

成功,插件和主题都不需要安装了,因为前面已经将文件备份过来了。

域名解析

下载nginx

nginx官网下载稳定版本。

80端口解析

运营商那边做好解析后,修改nginx.conf中的server字段,server_name填域名,root填hexo的public目录。

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
server_name blog.wengesoft.com;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root C:\hexo\public;
index index.html index.htm;
}

443端口解析

运营商那边申请好域名证书,一块钱可以买一年,下载后和nginx.conf文件放一个目录,方便添加证书路径。
在80端口的server字段上面,再加入以下server字段,给443端口用的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 443 ssl;
server_name blog.wengesoft.com;
ssl on;
ssl_certificate blog.wengesoft.com.crt;
ssl_certificate_key blog.wengesoft.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;

location / {
root C:\hexo\public;
index index.html index.htm;
}

location =/robots.txt {
default_type text/html;
add_header Content-Type "text/plain; charset=UTF-8";
return 200 "User-Agent: *\nDisallow: /";
}
}

域名替换成你的域名,然后我们用https访问下看看。

访问成功,证书是TrustAsia Technologies, Inc.颁发的。

SEO优化

location =/robots.txt {这一行里面的内容是给搜索引擎收录用的,进入百度资源平台成功检测到Robots文件。

80端口无条件跳转到443

在80端口的server字段:

1
2
3
server {
listen 80;
server_name blog.wengesoft.com;

下一行加入:

1
rewrite ^/(.*)$ https://blog.wengesoft.com:443/$1 permanent;

这样哪怕不加https也自动跳转为https了。
以下指定80端口主页路径的配置也可以删掉了:

1
2
3
4
location / {
root C:\hexo\public;
index index.html index.htm;
}

在服务器运营商后台里,80端口也可以关闭掉。

故障排除

443端口访问失败

如果访问时像被墙了一样,一直在等待,就是防火墙阻止了连接。先检查下服务器运营商后台是否开放了443端口,没有再查看系统自带的防火墙是否打开。如下图,防火墙公用网络已打开,这样443端口是会被阻止的,需要我们手动放行入站端口。

在防火墙高级设置中添加入站规则,允许nginx.exe放行。图省事可以复制以下命令,修改nginx.exe路径,在cmd中运行:

1
netsh advfirewall firewall add rule name="nginx" dir=in program="这里修改成nginx.exe的绝对路径" protocol=TCP localport=443 action=allow

以上命令会给nginx在入站放行tcp的443端口。

添加底部备案号啥的,暂时没那么多时间折腾了。迁移到云服务器的过程已经完成了,以后再写其他方面的优化。

参考文献

如何迁移Hexo博客到新电脑
Windows安装hexo并配置nginx