前言

  Hexo 是一个基于 Node.js 的静态博客生成框架。它使用 Markdown 格式的文本文件作为输入,通过主题和插件的设置可以轻松地生成静态网页。Hexo 具有简单易用、速度快、支持丰富的主题和插件等特点,因此在静态博客领域得到了广泛应用。
  选用hexo的主要原因是他轻量化,生成的静态网页,可将其部署于github上,即使没有云服务器也可以搭建网站。

搭建hexo网站的方案

  具体的方案,得根据自身的条件来定,首先搭建的技术难度不大,主要就在环境的选择,和不同的人群。

1、没有任何服务器

  可在windows系统上搭建hexo网站,操作也很简单,只需安装 node.js 然后安装hexo即可,B站上大多数视频都是基于windows的教程。搭建完网站后再用过hexo d 部署到github上,弥补没有服务器的缺陷,部署到github上,别人就可以通过访问你的github域名来访问你的个人网站。你也可以给github的网站绑定一个你自己注册的域名。
  hexo上用到的评论系统,在线聊天系统,也可以借助国外的Zeabur免费服务器部署,具体操作看https://butterfly.js.org/posts/ceeb73f/#%E5%88%86%E4%BA%AB 这个是蝴蝶主题的教程。

优点:无需任何服务器,甚至域名也可不需要,稳定
缺点:编写文章相对麻烦,操作繁琐,因服务器在国外,访问速度也相对较低,我试过 也还可以

2、有硬件 家庭服务器

  可以使用docker部署到家庭服务器上,docker版的hexo有带在线编辑的页面,这样就可以远程访问hexo管理界面,在线编写文章
微信图片_20230712183129.jpg
  很是方便,然后也可以直接在线部署到github上。
优点:比前者编辑文章更方便
缺点:速度慢

3、有云服务器

  这就方便多了,直接在服务器上用docker部署hexo即可,无需部署到github上,就可以让别人访问你的网站,家庭服务器是因为80 443端口被封锁,别人不方便访问你的网站。

4、有家庭服务器 小型云服务器

  这就是我现在的状态,买了个华为云 39一年的小型服务器,主要是用来给域名备案的,我在云服务器上只部署了 nginx反向代理,用来管理我在家庭服务器上部署的网站,这样即使云服务器到期,我也不会有什么影响。

开始搭建

方案一:windows 部署hexo网站 上传到github

   这个相对简单,B站教程一大堆,我就不多介绍了
可参考这篇博客 https://blog.csdn.net/qq_47021428/article/details/123752371

方案二:家庭服务器 使用docker部署hexo网站 上传到github

一、选择镜像
  hexo的docker镜像很多,像B站上一个教程视频,用得是 spurin/hexo 的镜像,这个镜像虽然自带hexo-admin在线管理后台,但部分服务器安装后进不去后台,我在腾讯云搭建的能进去后台,所以舍弃这个镜像,而且B站那人讲得很乱,又不细致;最后是参考https://blog.17lai.site/posts/40300608 这篇博客,但是他也有个问题,没说清楚具体步骤,也是很乱。但是他的镜像没问题,搭配上hexo-admin插件就可以流畅使用。

二、步骤
1、先下载镜像docker pull bloodstar/hexo
2、采用docker-compose 进行安装镜像,建立个hexo文件夹,然后新建docker-conpose.yaml文件

version: '3'
services:

hexo:
container_name: hexo
image: bloodstar/hexo:latest
hostname: hexo
ports:
- "4000:4000"
volumes:
- ${USERDIR}/hexo/blog:/app
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
- GIT_USER="laohu-one"
- GIT_EMAIL="424362229@qq.com"

# 主要为了内部npm网络访问顺利
# - HTTP_PROXY=http://192.168.0.100:1089
# - HTTPS_PROXY=http://192.168.0.100:1089
restart: always

这两个- PUID=0 - PGID=0 的值可通过linux 命令查看下 不知道直接删了也行

volumes:
  - ${USERDIR}/hexo/blog:/app
  

这是hexo的安装位置,之后blog文件都放在这个/hexo/blog这个路径下面,然后/app是指映射到容器内的地址。
ports:
- “4000:4000”

这是将容器的4000端口映射到服务器的4000端口

- TZ=Asia/Shanghai

这个是语言
- GIT_USER=”laohu-one”
- GIT_EMAIL=”424362229@qq.com

这个是你的github的账号名称和邮箱,应该是不能瞎写,因为只有这个地方是验证github账号信息的,不像在windows中,还需要手动设置。

   restart: always
 

启动失败后反复重启

2、安装完后会自动生成 blog文件,以及git环境,hexo指令,npm node.js,
但是不可以进行 hexo d指令 需要先安装 hexo-deployer-git 如果在容器内运行npm ls | grep hexo-deployer-git没有输出,则表示没有安装;
此时则运行npm install hexo-deployer-git --save进行安装,然后在 ‘_config.yml’ (修改完该文件 重启后生效)文件中添加git仓库地址和分支

deploy:
type: git
repo: git@github.com:laohu-one/laohu-one.github.io.git
branch: main

再将 blog中的 .ssh(默认隐藏,通过ps -a查看) 文件夹中的 ssh密钥添加到git用户的密钥中。即可进行 hexo d 部署

3、添加hexo-admin在线编辑后台
先在容器内安装 npm install hexo-admin --save插件 ,即可进入 local:4000/admin后台,先在设置中设置密码和加密随机数后,将生成的代码添加到_config.yml 文件中,并顺便添加 deployCommand: "/app/hexo-deploy.sh"语句,这儿是用来在线部署到github上的指令,在后台电机 部署 就会永兴这里的脚本,脚本的路径要写成全路径,相对路径测试不行,文件名记得加上 .sh ,然后创建hexo-deploy.sh这个脚本,脚本内填写hexo g && hexo d

# hexo-admin authentification
admin:
username: laohu
password_hash: $2a$10$Xv/46SIPHA0SAelaZAbpLO/L7ABtmGC3Lxcu7.SmyLomUxKH6YIl.
secret: qwertyuiop
deployCommand: "/app/hexo-deploy.sh"

三、完成。 这就完成了docker中部署hexo,并在线编辑hexo 并部署到github 的基本功能。通过访问 仓库地址 即可访问博客,后续可给该地址添加个域名和https证书。

方案三:云服务器使用docker部署hexo网站

参考上面的就行

家庭服务器 使用docker部署hexo网站 云服务器反向代理

使用docker部署hexo网站 参考上面的,反向代理参考我的另一篇文章 https://laohu.space/nginx.html

修改hexo主题

一、主题切换
不管是在windos、linux、还是在docker 中 操作都一样。
先在github上找到喜欢的主题,然后在 blog目录下 下载下来,然后看看主题有没有需>要添加的渲染插件,有的话也下载下,然后在 _config.yml文件中切换为新添加的主题>,重启即可。下载的主题会存放到blog/theme 文件夹下

以butterfly主题为例:

下载主题:

cd /root/data/docker_data/hexo/blog

git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly

添加渲染器插件:

docker exec -it hexo bash  #进入docker容器内部  其他系统则不需要,windows用git bash 打开即可

npm install hexo-renderer-pug hexo-renderer-stylus --save

在 _config.yml文件中切换为新添加的主题

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: butterfly