前言
我信奉好记性不如记下来,上学时在笔记本上记笔记,后来在csdn上写点东西(有广告,不舒服),后来笔记都记在有道云笔记上。最后发现利用github.io可以很方便的搭建个人博客。下面记录的是Blog搭建的过程(完成blog的上传)以及源码的备份,后面的文章记录一些优化与使用技巧。
环境准备
1 | Github账号 |
Github账号的注册在这里不做赘述,然后创建一个名为yourname.github.io的仓库(仓库名格式一定要符合)。我用的Linux是ubuntu16.04 server版(家用)与ubuntu18.04(aws云服务器,一年免费,可以用来科学上网)。hexo依赖于git与node.js
安装git
1 | sudo apt-get install git-core |
安装node.js,具体的node.js与hexo的对应版本参见hexo官网,我们这里使用的是hexo3.9,对应的node.js版本应该不高于12,否则会有一些奇奇怪怪的错误。
1 | curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash - |
依赖程序安装完成之后,就可以使用npm安装Hexo.
1 | npm install -g hexo-cli |
之后进行Hexo的初始化
1 | hexo init <folder> |
完成之后,指定文件夹的目录如下:
这里面不包含pbulic文件夹,会在执行第一次hexo g
命令后生成,并且在执行hexo d
命令后会生成.deploy_git
文件夹,这两个文件夹中的内容是相同的,是最终部署到github.io中的文件。
然后执行npm install
产生node_modules文件夹,至此,服务端的基本初始化完成。
修改_config.yml
配置文件如下:
1 | deploy: |
部署到github.io即完成,执行hexo g -d
。这时候访问:https://yourname.github.io/
即可访问Blog。
Hexo常用命令
command | description |
---|---|
hexo init [folder] | 新建一个网站 |
hexo new <title> |
新建文章,如标题包含空格用引号括起来 |
hexo generate | 生成静态文件,简写hexo g |
hexo deploy | 部署网站,简写hexo d |
hexo clean | 清除缓存文件 |
hexo version | 查看Hexo版本 |
hexo –config custom.yml | 自定义配置文件路径,执行后不再使用_config.yml |
注意,每个主题下面也有一个_config.yml文件(作用域是该主题),主目录下的是全局配置(作用域是整个网站)。
源码备份
hexo d只是将生成的静态网页部署到github.io上,这样存放源码的服务器到期或者多台PC开发时便会产生不便,下面说明将源码部署到github.io上。
创建README.md文件
1 | echo "# shiningdan.github.io" >> README.md |
初始化git仓库(在hexo init folder的folder目录下执行),hexo d操作的仓库是.deployer_git.
1 | git init |
和github.io建立映射git remote add origin https://github.com/yourname/yourname.github.io.git
master分支作为deploy的分支,创建hexo分支用来备份源码
1 | git branch hexo |
将github.io中的默认分支修改为hexo(这样下载时就是下源码),因为user page的发布版必须位于master分支下
后续开发在hexo分支下执行,执行hexo g -d
生成网站并部署到github的master分支上,执行git add、git commit、git push origin hexo
提交源码
重新部署
- 下载源码
git clone https://github.com/yourname/yourname.github.io.git
- 安装依赖
npm install -g hexo-cli、npm install、npm install hexo-deployer-git
,注意不需要执行hexo init
重新部署的问题
虽然之前将hexo的源码也备份到了远程仓库,但是一旦主机环境发生改变,得重新安装对应的依赖,这也带来一定的不稳定隐患,现在将开发环境打包到docker,发布到docker hub中, 后续个人的工作环境会持续集成进去。一些Linux通用配置(vim, bash)则存放到github上。
之前主题文件next
是用一个单独repository来进行管理,自己的修改可以提交,但是分成两个仓库不方便。所以现在将next主题源码也集成到hexo中。所以现在如果重新部署blog环境,需要做3件事:
https://github.com/Rancho333/Rancho333.github.io.git
下载源码(包含hexo+theme)- 安装hexo依赖(见重新部署) 以及 下面插件,如果generate报错缺失插件,安装即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[rancho blog]$ npm list --depth 0
hexo-site@0.0.0 /home/rancho/workdir/blog
├── eslint@7.23.0
├── hexo@5.4.0
├── hexo-deployer-git@3.0.0
├── hexo-generator-archive@1.0.0
├── hexo-generator-baidu-sitemap@0.1.9
├── hexo-generator-category@1.0.0
├── hexo-generator-feed@3.0.0
├── hexo-generator-index@2.0.0
├── hexo-generator-searchdb@1.3.3
├── hexo-generator-sitemap@2.1.0
├── hexo-generator-tag@1.0.0
├── hexo-helper-live2d@3.1.1
├── hexo-renderer-ejs@1.0.0
├── hexo-renderer-marked@4.0.0
├── hexo-renderer-stylus@2.0.1
├── hexo-renderer-swig@1.1.0
├── hexo-server@2.0.0
├── hexo-theme-landscape@0.0.3
├── hexo-wordcount@6.0.1
├── live2d-widget-model-shizuku@1.0.5
└── lodash@4.17.21 - 检查站点配置文件中blog部署的位置,注意将page发布的分支必须是master(代码默认分支是hexo).
自动上传源码
之前的工作流程是
- hexo g -d 生成静态网页并上传
- git add , commit, push 上传源码
很多时候执行完1之后因为这样那样的原因没有执行2,导致源码没有提交。之前公司服务器挂掉,并且之前的源码没有上传,这样从github拉取的源码和网页就不同步,源码落后于网页
现在使用脚本hexo_g_d.sh "commit commnet"
, 里面会自动上传网页和源码(需要在本地设置github账号密码,不然会要手动输入),参数commit commnet
是git commit -m
的参数
参考资料:
HEXO官方文档