博客迁移Hexo

前言

最早用bitcron来管理发布博客,由于工作忙碌,博客疏于管理。近期发现bitcron也后续可能不维护了,还是自己迁移到云服务器上自己管理了。以下内容小做总结,仅供自己记录,不是一步一步的详细步骤。

安装hexo和主题

主题我用的是next相对成熟点,安装hexo和主题可以参考以下官网即可:

我用的hexo版本6.1.0,hexo官网有些信息较老,可以结合别人较新的博客一起参考。

我使用到插件

虽然像next theme支持了很多插件,所有插件安装都先执行npm i --save,这样packson.json中会添加依赖

评论

使用的gitalk

  • 启动css js
  • package.json需要安装

参考资料:https://river106.cn/posts/9fc08c19.html?highlight=hexo

algolia搜索

参考next主题的官方文档即可,注意配置项,官方文档写的不完整,我的如下:

1
2
3
4
5
6
algolia:
applicationID: 'your'
apiKey: 'your'
adminApiKey: 'your'
indexName: 'hexo-blog'
chunkSize: 5000

设置站点地图

1
2
npm install hexo-generator-baidu-sitemap --save
npm install hexo-generator-sitemap --save

参考: Hexo 提交百度和 Google 谷歌收录

语雀文章同步

注意语雀文章header都需要增加同步信息,否则同步后标题看不到。在云服务器上自己编写好部署脚本其实也不麻烦,我就没用Github action做CICD。不过图床替换腾讯COS比较实用,阿里云OSS的有bug。我的启动脚本可以分享下。

1
2
3
4
5
6
7
#!/bin/bash
hexo clean
hexo g
yuque-hexo clean
yuque-hexo sync
hexo algolia
sh stop.sh
1
2
#!/bin/bash
nohup hexo server -p 80 &
1
ps aux | grep hexo |awk '{print $2}'|  head -n 1|xargs kill -9

可以参考文章:语雀云端写作Hexo+Github Actions+COS持续集成

markdown渲染插件

参考:hexo-renderer-markdown-it 插件 详解

统计pv/uv插件

使用leancloud:https://leancloud.cn
安装依赖后,可以直接在next-theme中开启

1
npm install hexo-leancloud-counter-security

热门阅读下载av-core-mini.js放到本地,现在CDN被封了。可以到下面地址下载
https://unpkg.com/browse/leancloud-storage@4.12.2/dist/

参考资料:

CDN

国内CDN容易被墙,可以用next-theme 8.x的版本直接配置下

参考:https://www.chengxiaobai.com/trouble-maker/customize-cdn-provider-for-hexo-theme-next

其他设置

开放tags和categories

  • next theme的menu去掉相关注释
  • 执行命令新增page即可
1
hexo new page tags/categories 

首页放归档

hexo配置设置如下即可,然后next主题那边隐藏archive按钮。这样也没必要用hexo-excerpt这样的插件做文章缩略。归档更加清晰,只看标题就够了。

1
archive_dir: /

nginx配置和404

注意点:

  • user必须和你站点资源的归属者一致,否则nginx启动有问题报错403
  • root填写自己的站点资源路径,hexo一般是public下的资源

nginx配置功能

  • https配置
  • http重定向
  • 404配置
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
66
67
68
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/

# use root to avoid 403 forbidden
user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name kaimingwan.com;


ssl_certificate "/etc/nginx/cert/kaimingwan.pem";
ssl_certificate_key "/etc/nginx/cert/kaimingwan.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;


location / {
root /root/hexo-blog/public; # 博客网站主目录
index index.php index.html index.htm;
}

error_page 404 404.html;
location = /root/hexo-blog/public/404/404.html {
}
}

server {
listen 80;
server_name kaimingwan.com;
rewrite ^(.*)$ https://kaimingwan.com; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
}
}

[

](https://blog.bombox.org/2016-04-28/hexo-no-generate-categories-tags-index-page/)