源起
一点小小的碎碎念。
搭建一个博客的想法其实很早就有了,也早就确定了要用 hexo
,好像也没有特别的理由,最开始是被主题吸引住的(喂喂喂,关注点不对啊),后面也确实花了很多时间换这换那主题的,等到了24年真正决定要上线的时候,才顿悟过来,光顾着美观没有内容岂不是本末倒置,徒有其表了。所以基本也就不折腾了,选了一个好看的主题,慢慢开始充实内容。
Hexo 简介
博客框架很多,老实说,我都建好了好几个其他框架的目录,比如 WorldPress
,solo
等,只是目前的想法还是先专心搞好 hexo
,内容有了,换个框架也只是顺手的事。
选择 hexo
的理由如上面提到的:
- 丰富的主题
- markdown 编辑
- 轻量
只需要在本地编辑好 Markdown
文档,就可以一步生成部署,非常方便。
Hexo 本地部署
-
安装
nodejs
,其实更建议安装nvm
,如果没有多版本使用的需求就没必要了; -
安装 hexo 框架包
npm install hexo-cli -g
-
初始化博客目录
进入想要放置博客文件的目录,比如:C:\Projects\hexo
,右键打开git bash
或cmd
# 初始化博客目录,指定博客目录名称,比如 hexo_blog hexo init <HEXO_DIR_NAME> cd <HEXO_DIR_NAME> # 安装依赖包 npm install
-
查看默认页面
完成以上安装后,执行hexo server
打开
http://localhost:4000
就可以看到默认的页面了,剩下的工作就是找一个好看的主题创建自己的内容进行丰富了。 -
【补充】常用命令
简要列举几个使用频率很高的命令,基本可以覆盖90%以上场景,其他使用不多的完整命令可以参考 官网说明 。# 新建文章 hexo new <TITLE> # 清理缓存和生成的静态文件,每次部署前都要执行 hexo clean # 生成静态文件 hexo generate # 启动本地服务器,部署前的预览检查 hexo server # 部署到配置的服务器,比如 github pages 或 云服务器 hexo deploy
Hexo 部署到 Gitee Pages(不推荐)
添加公钥
注册登录 Gitee,在【安全设置】-【SSH公钥】添加即可。
如果没有的话,生成一个就行,参考SSH 免密登录
创建仓库
新建一个空仓库,名称随意,比如 hexo_blog
修改项目部署配置
修改 hexo
本身的配置 _config.yml
配置文件,不是主题配置哦!
找到 deploy
部分,参考:
deploy:
# 阿里云部署
- type: git
repo: git@hexo:/home/git/hexo
branch: master
# Gitee 部署
- type: git
repo: https://gitee.com/<USERNAME>/hexo_blog.git
branch: main
修改 repo
为创建的仓库地址,分支指定为 main
。
远程部署
配置好之后,执行:
hexo d
如果公钥、配置一切正常,执行后会要求输入 Gitee 登录凭据:
啊!忘了截屏!!(无论使用 vscode 还是 git bash
都会要求输入)
显示部署成功后刷新仓库就可以看到部署的静态资源了。
开启 Gitee Pages
Hexo 部署到 Github
待续
Hexo 部署到服务器
首先在本地完成部署。
服务器配置
- 安装 Git:
yum install -y git
,如果安装了就可以跳过 - 创建 git 用户用于站点文件同步:
useradd git
,可以不设置密码; - 初始化 git 仓库:
# 切换到 git 用户 su git # 初始化仓库: 创建一个名称为 hexo.git 的裸仓库,如果看不习惯可以自己修改, --bare 选项用于创建一个裸仓库 git init --bare ~/hexo.git # 创建钩子函数,用户同步之后将站点文件 copy 一份到站点目录 cd ~/hexo.git/hooks/ vim post-receive git --work-tree=/path/to/webroot --git-dir=/home/git/hexo.git checkout -f # 下面是我的配置,仅供参考 git --work-tree=/data/blog --git-dir=/home/git/hexo checkout -f
📝 这里要提前把涉及到的目录创建好哦!
添加公钥
配置 git 用户的SSH 免密登录。
修改部署配置
修改 hexo 站点配置文件 _config.yml
:
deploy:
- type: git
repo: git@hexo:/home/git/hexo
branch: master
远程部署
然后就可以部署到服务器了:
hexo deploy
如果失败了,注意看终端中的报错信息,挨个挨个解决,毕竟不能保证每个人都会遇到同样的问题。
Nginx 配置
修改 nginx 站点目录为以上设置的目录: /data/blog
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name <DOMAIN_NAME>;
root /data/blog;
# SSL
ssl_certificate /data/nginx/ssl/fullchain.pem;
ssl_certificate_key /data/nginx/ssl/key.pem;
# security
include nginxconfig.io/security.conf;
# logging
access_log /usr/local/openresty/nginx/logs/access_main.log combined buffer=512k flush=1m;
error_log /usr/local/openresty/nginx/logs/error_main.log info;
# additional config
include nginxconfig.io/general.conf;
}
关于 SSL 证书的申请前面站内另一篇有提及。