本文记录博客搭建的过程,以便以后进行查阅和分享经验。
Hexo搭建¶
安装组件¶
Manjaro:sudo pacman -S nodejs
Windows:下载安装一直下一步
Node¶
安装包¶
npm install packageName这个命令会将包安装在当前目录下node_modules目录内,可执行命令(如果有)安装在node_modules/.bin目录下。
作为系统级的全局安装使用 -g 选项:npm -g install packageName,默认情形下这个命令会将包安装至 /usr/lib/node_modules/npm,需要管理员权限。
更新包¶
更新包只需要执行 npm update packageName。
对于全局环境安装的包 ( -g )npm update -g packageName。
更新所有包,去掉包名将试图更新所有包:npm update。
添加 -g 标记更新全局环境安装的包:npm update -g。
删除包¶
删除使用 -g 标记安装的包只须:npm -g uninstall packageName。
若删除个人用户目录下的包去掉标记执行:npm uninstall packageName。
列出所有包¶
若要显示已安装的包的树形视图执行:npm -g list。
仅显示顶层树:npm list --depth=0。
要显示需要更新的过期软件包:npm outdated。
npm-check¶
安装npm-check(全局安装):npm install -g npm-check。
扫描需要更新的包:npm-check
npm全局更新包 (全局目录):npm-check -u -g。
npm更新某个项目的包 (项目目录):npm-check -u。
npm-upgrade¶
升级系统中的相关插件。
安装npm-upgrade:npm install -g npm-upgrade
更新npm-upgrade
package.json¶
1 | { |
Git¶
安装Git¶
Manjaro:sudo pacman -S git
Windows:下载安装一直下一步
配置信息¶
1 | git config --global user.name "Your Name" |
将id_rsa.pub文件中的信息添加到Github->Account settings->SSH Keys页面。
如果想同时长传至coding,也是去coding添加上述信息。
测试是否成功使用ssh -T git@github.com。
Hexo¶
安装¶
npm install -g hexo-cli ,安装Hexo主程序。
初始化¶
hexo init <博客文件夹名称>,创建博客所在的文件夹并生成最基本的框架文件。
进入该目录,使用npm install安装所需的node包。
在本地启动hexo:hexo server或hexo s。
常用命令¶
1 | npm install hexo -g #安装Hexo |
部署至Github¶
-
创建一个公开项目,名称是自己用户名+.github.io。
-
选择项目的Settings,选择Github pages,点击Choose a theme选择一个主题。
-
使用网址
用户名.github.io查看是否能正常打开。 -
安装node包
hexo-deployer-git。 -
在博客根目录下的
_config.yml中添加字段:1
2
3
4
5
6
7
8deploy:
- type: git
repository: git@github.com:<用户名>/<用户名>.github.io.git
branch: master
- type: git
repository: <另选的项目地址>
branch: master这里注意,必须是master分支,Github page只能是master分支。
-
使用
hexo d -g将渲染好的网页上传至Github。此时就可以使用<用户名>.github.io进行访问了。
博客基本信息¶
博客的基本信息存储在博客根目录下的_config.yml文件中。
模板设置¶
文章排序自定义¶
hexo中默认是按照文章的创建时间显示,但是博客不是日记,好多步骤或者笔记需要进行更新记录,所以单纯的按照创建时间会导致自己较早创建但一直更新的笔记被放在最后。
hexo的db.json文件中包含了每篇博客的更新时间,字段是db.json,只需修改博客顶层文件夹中的_config.yml中的如下字段:
1 | index_generator: |
更换解析器¶
原生使用的是hexo-renderer-marked,可以替换成hexo-renderer-marked-it这个解析器。
安装¶
卸载原生解析器
1 | npm un hexo-renderer-marked --save |
安装解析器
1 | npm i hexo-renderer-markdown-it --save |
配置¶
在整个Hexo项目下的_config.yaml文件下添加配置[1]:
1 | markdown: |
主题选择与优化¶
我使用的主题是
首页添加Github状态¶
可选插件¶
主题的个性化¶
latex展示¶
自动化部署¶
借助Github Action可以实现当我们在本地向Github提交代码的时候,自动创建并生成相应的静态网页代码,进而联动后面的vercel的部署任务。
目录结构如下:
1 | .github |
创建Action所需的环境变量¶
创建Action提交代码的秘钥。
1 | ssh-keygen -f hexo-deploy-key -C "<博客网址>" #仅作为区分 |
上面的命令会在当前文件夹下生成名为hexo-deploy-key的私钥和hexo-deploy-key.pub的公钥。
将公钥设置进对应仓库的setting->Deploy keys,同时赋予写权限。
将私钥设置进对应仓库的setting->Secrets->Actions,对应的key名设置为DEPLOY_KEY,value就是私钥。
编写Action脚本¶
1 | name: Hexo Generate And Deploy |
Github Action过程中的一些坑¶
直接使用Github Action部署代码的时候,Github会在容器中拉下该仓库的代码。此时文件的创建时间和修改时间都是拉取时的时间。这会导致按照updated字段排序的博客在读取不到.md文件中的updated字段从而读取文件的修改时间变成统一的代码拉取时间。博客的文章展示就会变得混乱无章。
因此,需要在Github Action中单独进行一步操作,即修改文件的修改时间。
代码实现在上一节yaml文件的第35-37行。
实际上,clone 下来的文件的时间还是克隆时的时间,然后通过上面的命令,它将 clone 下来的文件的时间改成了该文件最近一次变动的推送时间(也即文件最后一次修改的 push 时间)。
注:如果
github actions中使用actions/checkout@v2,请设定它的参数fetch-depth: 0,因为0表示获取所有分支和标签的所有历史记录。默认值为1
小知识:
1 | 获取 git 仓库中所有文件的最新修改时间 |
访问加速¶
分支存储源码¶
首先在Github的仓库中创建一个新的分支,因为Github Page默认是master分支,所以随便创建一个分支名即可。
在Hexo博客的顶层文件夹中执行如下命令:
-
克隆Github中的当前项目,将克隆下载的文件夹中的.git文件夹移动到hexo博客的顶层目录。
-
编写.gitignore:
1
2
3
4
5
6
7.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/ -
创建本地分支并切换到该分支:
git checkout -b 分支名 -
添加文件:
git add . -
添加注释信息:
git commit -m "hexo src update" -
提交本地代码:
git push --set-upstream origin src -
以后的上传代码则为:
git add . && git commit -m "hexo src update" && git push origin src && hexo d -g
SEO¶
站点地图即 sitemap,是一个页面,上面放置了网站上需要搜索引擎抓取的所有页面的链接。站点地图可以告诉搜索引擎网站上有哪些可供抓取的网页,以便搜索引擎可以更加智能地抓取网站。
安装插件¶
1 | npm install hexo-generator-baidu-sitemap --save |
修改配置文件¶
在_config.yml中添加如下字段:
1 | # 自动生成sitemap |
生成¶
执行hexo g。该命令会在public目录中生成sitemap.xml和baidusitemap.xml,这是生成的站点地图,里面包含了网站上所有页面的链接,搜索引擎通过这两个文件来抓取网站页面。
- sitemap.xml — 用来提交给 Google
- baidusitemap.xml — 用来提交给Baidu
百度站长平台¶
- 注册并登录百度站长平台:https://ziyuan.baidu.com/
- 验证网站所有权,有三种方式:文件验证、html标签、cname解析验证。推荐使用cname,感觉是最方便的。
- 添加sitemap
Google站长平台¶
- 注册并登录Google站长平台:https://www.google.com/webmasters/verification/home
- 验证网站所有权,还是采用cname。默认是txt,需要选择备用方案。
- 添加sitemap
成功截图如下:
