0%

hexo+github搭建博客记录

起因

之前搭建过hexo的博客,但是因为换电脑了,导致hexo的生成文件都丢了,就转战CSDN了,结果最近一篇ssr的文章审核不通过…还是用自己的博客吧…这是个hexo搭建github pages的记录博客,把搭建的流程、遇到的问题和解决方法记录下来,方便下次搭建(希望不会有下次)

设想:

  1. hexo搭建流程
  2. npm安装hexo报错问题
  3. hexo的文件双备份(在github的仓库新建branch,用于同步文件)

    搭建流程

    安装相关软件

    安装 Hexo 相当简单,只需要先安装下列应用程序即可:
    1
    2
    Node.js (建议使用 Node.js 12.0 及以上版本)  
    Git

    安装hexo

    所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。
    1
    npm install -g hexo-cli
    对于熟悉 npm 的进阶用户,可以仅局部安装 hexo 包。
    1
    npm install hexo
    以下是我遇见的问题:
    Npm安装无反应,设置了cmd、git、npm代理后报错 RollbackFailedOptional Verb Npm-Session
    ,最后换了一下源,更换为淘宝的源
    1
    npm config set registry http://registry.npm.taobao.org
    参考https://www.cnblogs.com/zwrsnrt/p/12492482.html

    建立站点项目

    安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。
    1
    2
    3
    hexo init <folder>
    cd <folder>
    npm install

新建完成后,指定文件夹的目录如下,如下图所示:

1
2
3
4
5
6
7
8
9
.
├── scaffolds
├── node_modules
├── source
├── themes
├── _config.yml
├── package.json
├── package-lock.json
└── .gitignore

文件树形结构
其中各个文件夹的作用;

_config.yml 网站的配置信息,您可以在此配置大部分的参数。
_config.yml 配置文档:https://hexo.io/zh-cn/docs/configuration

node_modules 存放npm安装的依赖

package.json 应用程序的信息。EJS, Stylus 和 Markdown renderer 已默认安装,您可以自由移除。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package.json
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": ""
},
"dependencies": {
"hexo": "^3.8.0",
"hexo-generator-archive": "^0.1.5",
"hexo-generator-category": "^0.1.3",
"hexo-generator-index": "^0.2.1",
"hexo-generator-tag": "^0.2.0",
"hexo-renderer-ejs": "^0.3.1",
"hexo-renderer-stylus": "^0.3.3",
"hexo-renderer-marked": "^0.3.2",
"hexo-server": "^0.3.3"
}
}

scaffolds
模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。

Hexo的模板是指在新建的文章文件中默认填充的内容。例如,如果您修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。

source
资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。

themes
主题 文件夹。Hexo 会根据主题来生成静态页面。

本地运行

使用hexo s运行hexo项目在本地,浏览器输入http://127.0.0.1:4000/即可查看当前博客

github page

在github上创建一个用户名.github.io的仓库,用户名中字母要注意大小写。在setting中滑到最下方有个GitHub Pages,启用它。
20201120174706
随后访问用户名.github.io即可看到初始的博客页面

hexo to github page

在hexo博客文件夹中打开bash,输入以下命令,其中用户名和密码根据你github的注册信息修改

1
2
git config --global user.name "marshzero"
git config --global user.email "xxxxxxx@qq.com"

生成ssh key

1
ssh-keygen -t rsa -C "xxxxxxx@qq.com"

windows下打开C:/用户名/.ssh/id_rsa.pub。记事本打开并复制里面的内容,打开你的github主页,进入个人设置 -> SSH and GPG keys -> New SSH key:将刚复制的内容粘贴到key那里,名字可以写成blog或其他你能明白的名字。
输入ssh -T git@github.com,如果出现你的用户名,那就成功了。

hexo 部署到 github

首先,ssh key肯定要配置好。其次,配置_config.yml中有关deploy的部分:

1
2
3
4
deploy:
type: git
repository: git@github.com:用户名/用户名.github.io.git
branch: master

使用以下命令生成静态文件

1
hexo g

使用以下命令启动本地服务器

1
hexo s

使用以下命令提交静态页面到github

1
hexo d

常见命令

1
2
3
4
5
6
7
hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo deploy #部署到GitHub
hexo help # 查看帮助
hexo version #查看Hexo的版本

主题

这里我使用了Next主题,按照官方文档来配置就行,但是有一个小问题,就是Next主题在新版hexo中使用,会造成hexo无法渲染页面,这是因为两者的渲染插件不同,详情看这里

创建页面

例如创建“分类”这个页面,在博客文件夹打开bash,执行命令

1
hexo new page categories

成功后会提示

1
INFO  Created: ~/Documents/blog/source/categories/index.md

根据上面的路径,找到index.md这个文件,打开后默认内容是这样的:

1
2
3
4
---
title: 文章分类
date: 2017-05-27 13:47:40
---

添加type: “categories”到内容中,添加后是这样的:

1
2
3
4
5
---
title: 文章分类
date: 2017-05-27 13:47:40
type: "categories"
---

给新文章添加分类或者标签属性,和下面一样就行了,其中软件配置就是分类,ubuntu和软件配置是标签

1
2
3
4
5
6
7
8
9
---
title: Ubuntu18.04双系统安装与安装后要做的事
date: 2020-10-26 23:57:15
categories:
- 软件配置
tags:
- ubuntu
- 软件配置
---

发布文章

使用以下命令创建新文章,会在source创建一个md文件,在这个文件中写内容就可以了

1
hexo new 新文章示例

备份

我是已经创建了hexo项目后,再来备份的,备份的策略是知乎上一个答主提的思路,具体步骤参考的https://blog.csdn.net/qq_21040559/article/details/109702142

创建新分支

我们的hexo项目会在github上有一个gitpages的仓库对应,在这个仓库上创建一个新分支hexo,并设置成默认分支(这里不用担心hexo自己的git push,hexo会制定master来push的,设置hexo为默认分支是为了后面使用git命令时方便)
20201120171947
刚创建好时hexo分支的内容和master内容看起来一样,这里我也没搞懂,但是不影响后面的,不管它

复制.git文件夹

在其他任意位置使用git clone将hexo分支下载下来,将其中的.git文件夹复制到我们的博客文件夹内,此时在博客文件夹中打开bash即可看到hexo的提示,这一部很妙,不用手动配置本地仓库和远程仓库对应(没有.git文件夹时不会提示这是个仓库,注意不要使用git init命令,这会将博客文件夹初始为一个新仓库。)
20201120172416
博客文件夹中需要一个.gitignore文件,用来在上传时候忽略一些文件,即不上传.gitignore中忽略的文件。如果有最好,没有的话自己手动添加。

1
2
3
4
5
6
7
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

注意,如果你之前克隆过theme中的主题文件,那么应该把主题文件中的.git文件夹删掉,因为git不能嵌套上传,最好是显示隐藏文件,检查一下有没有,否则上传的时候会出错,导致你的主题文件无法上传,这样你的配置在别的电脑上就用不了了。

备份

在hexo博客的根目录下依次执行

1
2
3
git add .
git commit -m "Backup"
git push origin hexo

这样就能看到github上有我们要备份的hexo项目啦,
20201120172902
使用hexo d是将静态页面备份到github上的master,使用git push origin hexo是将hexo项目文件夹备份到github上的hexo分支。

恢复

将两个分支的内容下载并合并,安装相应的软件即可(未尝试)

在另一台电脑上使用hexo项目

https://blog.csdn.net/mrwangweijin/article/details/79364030