Hexo博客 整合升级攻略

背景

老规矩,先上背景,前段日子,我服务器又又又又挂了,这次原因很简单,我那台陪了我快8年的笔记本报废了

可能跟供暖有关系吧,家里很热,那天听到了笔记本惨叫了一整天后我意识到不对了,打开一看,果不其然,系统挂了,也得亏发现的早,不然起火了就危险了


后来博客挂了一段时间后,想着不能没有用的呀,于是乎开启了我折腾2.0版本的服务器


服务器

痛定思痛,我决定重组一台服务器,花了些心思组出来如下配置:

  • cpu:二手i5-4690 ¥420
  • 主板:h81 matx ¥0
  • 内存:16G ddr3 ¥300
  • 机箱:金河田 ¥153
  • 电源:长城200w ¥100
  • 硬盘:TOSHIBA 2T 5400转 ¥300
  • 合计:¥1273

主板是我朋友送的,老实说这些花了1200大洋,我还是挺心疼的,但是看一下阿里云的服务器配置我就放下心了
去哪找¥1200的4c6t+16G+2T+10MB上行带宽的服务器去


网络

我买的阿里云的域名,deep-blue.cloud,以前的是qingheyang.studio还有一个shouwangzhe.online

在域名解析那里输入了我家公网ip算是第一步成了
如果你家里ip不是公网ip,那就另说了

反向解析

当然明白人都会知道一个问题,就是如果ip变了怎么办,个人在运营商的ip不是固定的,所以存在你家里路由器重启一次就会ip变化的问题,还得去阿里云解析,就很累心
我经历过很多挫折后,找到了三种解决办法:

  • 路由器做手脚,刷路由器系统openWrt系统,里面有会软件
  • 调用阿里云的sdk
  • 调用阿里云的api

路由器解析

刷系统的代价比较大,因为普通路由器刷系统要去改变硬件及引脚,也可能硬件不足以支撑系统,所以一般都需要软路由,而软路由一般可能是树莓派或者x86的普通的主板,我用的就是J1900

不过有个好处,就是稳定,不用自己敲代码

阿里云sdk

前期需要自己准备出来阿里云的accessKey

推荐这个法子,官方给的sdk,支持三种语言:Java,PHP,Python
阿里云sdk传送门
maven:

1
2
3
4
5
6
7
8
9
10
11
12
13
<repositories>
<repository>
<id>sonatype-nexus-staging</id>
<name>Sonatype Nexus Staging</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

jar包:

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-alidns</artifactId>
<version>2.0.10</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.3.2</version>
</dependency>

demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class DemoListDomains {

private static IAcsClient client = null;

static {
String regionId = "cn-hangzhou"; //必填固定值,必须为“cn-hanghou”
String accessKeyId = ""; // your accessKey
String accessKeySecret = "";// your accessSecret
IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
// 若报Can not find endpoint to access异常,请添加以下此行代码
// DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Alidns", "alidns.aliyuncs.com");
client = new DefaultAcsClient(profile);
}

public static void main(String[] args) {

DescribeDomainsRequest request = new DescribeDomainsRequest();
DescribeDomainsResponse response;
// describeRegionsRequest.setProtocol(ProtocolType.HTTPS); //指定访问协议
// describeRegionsRequest.setAcceptFormat(FormatType.JSON); //指定api返回格式
// describeRegionsRequest.setMethod(MethodType.POST); //指定请求方法
// describeRegionsRequest.setRegionId("cn-hangzhou");//指定要访问的Region,仅对当前请求生效,不改变client的默认设置。
try {
response = client.getAcsResponse(request);
List<Domain> list = response.getDomains();
for (Domain domain : list) {
System.out.println(domain.getDomainName());
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}

可以自己用idea打出一个jar包,然后服务器定期执行,记录上次ip,及当前ip是否有变化,如果有变化,就可以继续执行下去

阿里云API

阿里云还提供一种方法,为非上述三种语言使用者使用
阿里云api传送门
这个就不具体细说了,毕竟restful的api,没什么好说的,也是实现起来最简单的


Hexo插件库

这次换博客更换了一个主题,ayer,就是你看到的这个,感觉这个主题风格更成熟了 一些
这次增加了看板娘的存在,手机端可能看不到
增加了seo优化
增加了部署到阿里云oss
各位可以自行尝试


更换存储桶

这次整合升级,从当初的github.io更换到了oss存储桶,添加了CDN加速
使用我上面写的部署到oss的插件,按照要求填写key后,执行:

1
2
3
hexo clean  
hexo g
hexo d

博客文件夹下的public目录就会上传到你对应oss的bucket中
接下来为你的bucket添加cdn地址

配置cdn:

解析cname:

!!前提是你的域名已经备案过了!!
我也是费了很大劲备案的…
不过结局还是值得的,这样总算是让自己博客速度更快一些了


就先写到这里吧,这算是自建服务器+搭博客的一套方案,有什么不懂,留言问我吧,但是不太保证能立马回复

请我喝杯咖啡吧~

支付宝
微信