迁移 Hexo 博客至服务器上

从前端时间刚把 Twikoo 在服务器上自建,原因是因为腾讯云开发砍免费套餐。

现在腾讯云又对 CDN 动刀了。

尊敬的腾讯云用户,您好!

您(账号 ID:*******,昵称:*******)当前享有的腾讯云CDN产品每月10G免费试用流量包,为了让您可根据实际的业务高峰期灵活领用,避免过期失效。从北京时间2022.9.28起,流量包发放方式将由原来的自动发放变更为手动领取,您可根据实际使用需求,在每月任意时间领取该流量包(例如:您可在当月20号领取流量包,次月1号再领取新流量包)。活动开始后,您可以通过下方链接前往领取或通过控制台内概览页内活动入口进入领取,感谢您的支持与理解!

之前 CDN 每月免费 10 GB 都是自动发放,现在改成了手动领取,这还不是关键。

关键是将之前承诺的免费套餐偷换概念成了优惠活动,并且指定了活动结束日期,那么后续的动作可想而知。

「福利」

这每个月还要想着去领流量包也怪麻烦的,算了,这意思不就是让我们这些白嫖用户走人嘛。

那我走就是了。

2022.12.06 更新:在 Nginx 配置中加入 404 页面的相关配置。

在服务器上部署博客

服务器端

Git

走了,那么博客就扔自己的服务器上吧。

其实对于 Hexo 来说之前的使用工序都没变化,只是最后部署的时候变了一下。

首先在服务器上新建一个 git 用户,按照引导建立完成后切换到该用户:

1
2
adduser git
su git

切换用户后先别急,先回到自己的用户目录,然后建立一些文件夹,做一些简单的操作:

1
2
3
4
cd ~
mkdir hexo
mkdir repos && cd repos
git init --bare hexo.git

配置一下 hook(在 repos 目录下):

1
vim post-receive
1
2
#!/bin/sh
git --work-tree=/home/git/hexo --git-dir=/home/git/repos/hexo.git checkout -f
1
2
chmod +x post-receive
chown -R git:git /home/git/repos/hexo.git

这样就算完成了。

最后再配置一下 ssh 相关:

1
2
3
cd ~
mkdir .ssh
vim ./.ssh/authorized_keys

将个人的公钥放进去,保存即可。

那么在 git 用户上要做的事情就做完了,使用 exit 回到 root 用户还有点事情要收尾。

更改 git 用户的默认 Shell:

1
vim /etc/shells

找到以下内容(数字可能不同):

1
git:x:1003:1003:,,,:/home/git:/bin/bash

更改为:

1
git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell

保存退出。

这时候再使用 su 切换用户就切不过去了。

如果后期有其他设备利用 git 更新博客,可以直接用 root 用户来修改 /home/git/.ssh/authorized_keys

Nginx

<2022.12.06 更新>

加入 404 页面的相关配置。

写个简单的 Nginx 配置文件就可以了:

1
vim /etc/nginx/conf.d/hexo.conf
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
server {
listen 80;
server_name www.neko7ina.com;
return 301 https://$server_name$request_uri;
}

server {
listen 80;
server_name neko7ina.com;
return 301 https://www.neko7ina.com$request_uri;
}

server {
listen 443;
server_name neko7ina.com;
return 301 https://www.neko7ina.com$request_uri;
}

server {
listen 443;
server_name www.neko7ina.com;

ssl_certificate /home/syncthing/ssl/cert.pem;
ssl_certificate_key /home/syncthing/ssl/key.pem;

location / {
root /home/git/hexo;
index index.html;
}
error_page 404 /404.html;
}

证书的问题之前刚好解决了(看 这里),这里直接用上就行了。

客户端

客户端这边要做的就很简单了,只需要更改 Hexo 的配置文件 _config.yml,将其中 deploy 重新配置即可。

1
2
3
4
5
6
7
8
9
10
11
12
deploy:
# type: cos
# secretId: *******
# secretKey: *******
# bucket: *******
# region: ap-shanghai
# pathPrefix: /
# deleteInPathPrefix: false
type: git
repository:
git@<your_server_ip>:/home/git/repos/hexo.git
branch: master

如果没问题,使用 hexo d 就可以把博客部署上去了——什么,报错?我猜是没装 hexo-deployer-git 吧,还不赶紧装一个?

1
npm install hexo-deployer-git --save

DNS 解析

最后别忘了把指向 CDN 的域名重新解析到自己的服务器上啊。

销毁腾讯云 COS 及 CDN

首先去腾讯云控制台,到 内容分发网络 - 域名管理 里把所有的域名都停了删了,然后再切换到 对象存储 把所有的桶数据清除,然后销毁。

全都给你扬完!

本来用 CDN 就是为了 COS 的,现在你 CDN 砍了,那我 COS 也没必要继续消费了呗。

可惜了账户里还有的一点余额。

不多,但再用到不知是何时了

写在最后

可能近两年经济确实不太好,要砍就大大方方砍呗,别又当又立的。

您随意,我是不陪您玩了,拜拜了您嘞!