0%

网站介绍

欢迎来到知识记录站点!本篇内容将讲述站点建设过程,包括了所采用的技术、维护策略以及相关花费。本站点以Hexo为基础,选择了NexT主题美化界面。本站点由自托管GiteaDrone提供相关仓库、集成服务。本站点源站架设在西部数码的体验型虚拟主机上。为降低源站压力,增加用户访问速度,采用了ABXCDN所提供的融合CDN服务。

本文章并不适合萌新,阅读本文章需要具备一定的专业知识

NexT

安装Hexo

1
$ npm install hexo-cli -g

安装成功后创建博客目录

1
$ mkdir blog

初始化博客目录

1
2
$ cd blog
$ hexo init

Github下载NexT主题最新发布版本

解压至themes并改名为next

解压后目录结构为,此处隐藏文件未列出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
themes
└── next
├── _config.yml 主题配置文件
├── crowdin.yml
├── docs 相关文档
├── languages 语言文件夹
├── layout 主题样式源码
├── LICENSE.md
├── package.json
├── README.md
├── renovate.json
├── scripts
├── source 主题的静态资源
├── test
└── _vendors.yml

可以手动将themes/next/_config.yml改名_config.next.yml移动至themes同级目录下,此处为blog文件夹

完成上述步骤后,开始着手配置网站内容

配置时一定要看注释!!!

配置时一定要看注释!!!

配置时一定要看注释!!!

_config.yml中涉及到网站标题、作者以及hexo相关配置设定

_config.next.yml则是主题配置,其中支持ICP备案及公安备案信息设置

NexT主题默认存在四个Scheme,可以认为是四套样式,本站所使用的就是Gemini,并在此基础上进行少量修改

  • Muse
  • Mist
  • Pisces
  • Gemini

配置完毕后可以进行下面操作

本地预览

1
$ hexo server

生成静态文件

1
$ hexo generate

清理静态文件

1
$ hexo clean

部署,需要提前在_config.yml中进行部署配置

1
$ hexo deploy

Drone

此处先决条件为已为该博客配置Git库

Github可通过.github文件夹来进行CI/CD

此节存在技术门槛,仅提供blog的Drone配置文件

.drone.yml

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
kind: pipeline
type: docker
name: blog

steps:
- name: restore
image: appleboy/drone-sftp-cache
pull: if-not-exists
settings:
server: cache
port: 22
username: cache
password: cache
path: /cache
restore: true
mount:
- node_modules
- name: build
image: node:lts-alpine
pull: if-not-exists
commands:
- npm config set registry https://registry.npmmirror.com
- npm install -g hexo-cli
- npm install
- hexo clean
- hexo g
- name: publish
image: cschlosser/drone-ftps
pull: if-not-exists
environment:
FTP_USERNAME:
from_secret: username
FTP_PASSWORD:
from_secret: password
PLUGIN_SECURE: false
settings:
hostname:
from_secret: hostname
dest_dir: wwwroot
src_dir: /public
- name: rebuild
image: appleboy/drone-sftp-cache
pull: if-not-exists
settings:
server: cache
port: 22
username: cache
password: cache
path: /cache
rebuild: true
mount:
- node_modules
- name: prefetch
image: curlimages/curl
pull: if-not-exists
commands:
- cd public
- curl "abxcdn-app-1:3000/purge?path=https://www.extcraft.com/&action=fire"
- sleep 75
- find ./ -type f |
sed 's|^\./||' |
sed 's/index\.html//' |
awk '{print "https://www.extcraft.com/" $0}' |
xargs -I {} curl "abxcdn-app-1:3000/prefetch?path={}"
- curl "abxcdn-app-1:3000/prefetch?action=fire&area=mainland"

Automation

本站点自动化流程为

  • 在本地更新、预览修改
  • 将新的修改提交至自托管Gitea
  • Gitea触发Webhook通知Drone
  • Drone拉取更新后进行执行恢复缓存、构建、发布、重建缓存、预热步骤

CDN

CDN可以将源站静态资源缓存至CDN节点服务器,当用户访问网站时,可就近获取网站静态资源,动态资源则由CDN节点服务器请求源站后返回,即回源

采用CDN可以增加网站加载速度,优化用户侧浏览体验,并且由于静态资源已被CDN节点服务器响应,源站访问压力将大大降低

本站点使用ABXCDN提供的融合CDN进行加速

截至本文章编写时,其节点为:

  • 国内加速节点:包括腾讯云、火山引擎节点,其中腾讯云节点支持websocket

  • VIP线路:大陆优化节点,支持websocket,不提供缓存功能,提供防御

  • 国际常规加速节点: 腾讯云国际节点,未详细测试

截至本文章编写时,部分使用体会:

  • 仅对流量进行收费,无HTTPS请求费用

  • 没有统一的证书管理,证书仅在域名中设置(已更新证书管理功能)

  • 没有自动申请证书功能,需要手动管理

Tips:

  • 国内使用CDN要求网站具备ICP备案
  • 本站点备案于西部数码,域名在腾讯云,此时使用国内CDN,需要将域名入库/转入至西部数码
  • 因此建议域名和主机在同一家公司,以便管理

Cost

本站点部署时涉及费用:

  • 西部数码体验型虚拟主机: ¥68/年
  • ABXCDN流量: ¥17/100G
  • (非必要)阿里云企业标准版DNS解析: ¥198/年
  • (非必要)服务器托管: ¥350/月

各项用途:

  • 虚拟主机: 部署站点
  • CDN: 加速用户访问,缓存整站资源以减少虚拟主机流量消耗
  • DNS: 高精度、低TTL的DNS解析
  • 服务器: 自建Gitea、Drone等开发服务