安装nodejs,npm和hexo

安装nvm,npm

nvm 全称 Node Version Manager 是 Nodejs 版本管理器,它让我们能方便的对 Nodejs 的版本进行切换。可以在他的github仓库中查看详细信息

在终端执行下面的命令即可安装nvm,安装时会自动安装npm模块

1
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

安装nodejs

安装好nvm后就可以使用nvm安装nodejs了

1
2
3
nvm ls-remote         #查看远端仓库中的nodejs版本 
nvm ls #查看本地安装的nodejs版本
nvm install [version] #安装指定版本的nodejs

查看nodejs有很多版本,我这里选择的是nvm install v12.16.1

安装hexo

执行以下命令

1
npm install -g hexo-cli

更详细安装教程请查看hexo文档

安装git并配置

安装git

1
sudo apt-get install git

github新建仓库

创建个人仓库格式username.github.io

生成SSH添加到github

ssh是非必须的,你可以使用http的方式来推送代码,只是推送代码时需要输入密码

回到bash中,配置git账户

1
2
git config --global user.name "yourname"
git config --global user.email "youremail"

创建SSH,一路回车

1
ssh-keygen -t rsa -C "youremail"

这个时候它会告诉你已经生成了.ssh的文件夹。在你的电脑中找到这个文件夹。

ssh,简单来讲,就是一个秘钥,其中,id_rsa是你这台电脑的私人秘钥,不能给别人看的,
id_rsa.pub是公共秘钥,可以随便给别人看。把这个公钥放在GitHub上,
这样当你链接GitHub自己的账户时,它就会根据公钥匹配你的私钥,当能够相互匹配时,
才能够顺利的通过git上传你的文件到GitHub上。

而后在GitHub的setting中,找到SSH keys的设置选项,点击New SSH key
把你的id_rsa.pub里面的信息复制进去。

部署hexo到github

初始化本地blog

1
2
3
sudo hexo init myblog
cd myblog //进入这个myblog文件夹
npm install

新建完成后,指定文件夹目录下有:

node_modules: 依赖包
public:存放生成的页面
scaffolds:生成文章的一些模板
source:用来存放你的文章
themes:主题
_config.yml: 博客的配置文件

打开hexo的服务,在浏览器输入localhost:4000就可以看到你生成的博客了。

1
2
sudo hexo g 
sudo hexo s

部署到github

这一步,我们就可以将hexo和GitHub关联起来,也就是将hexo生成的文章部署到GitHub上,打开站点配置文件 _config.yml,翻到最后,修改为
YourgithubName就是你的GitHub账户

1
2
3
4
deploy:
type: git
repo: https://github.com/YourgithubName/YourgithubName.github.io.git
branch: master

这个时候需要先安装deploy-git ,也就是部署的命令,这样你才能用命令部署到GitHub。

1
sudo npm install hexo-deployer-git --save

然后

1
2
3
hexo clean
hexo generate
hexo deploy

其中 hexo clean清除了你之前生成的东西,也可以不加。
hexo generate 顾名思义,生成静态文章,可以用 hexo g缩写
hexo deploy 部署文章,可以用hexo d缩写

注意deploy时可能要你输入username和password。

过一会儿就可以在http://yourname.github.io 这个网站看到你的博客了!!

hexo基本配置

在文件根目录下的_config.yml,就是整个hexo框架的配置文件了。可以在里面修改大部分的配置。详细可参考官方的配置描述。

新建文章post

1
sudo hexo new paper_name

新建page

1
sudo hexo new page page_name

系统会自动给你在source文件夹下创建一个page_name文件夹,以及page_name文件夹中的index.md,这样你访问的page_name对应的链接就是http://xxx.xxx/page_name

新建草稿draft

draft是草稿的意思,也就是你如果想写文章,又不希望被看到,那么可以

1
hexo new draft newpage

这样会在source/_draft中新建一个newpage.md文件,如果你的草稿文件写的过程中,想要预览一下,那么可以使用

1
hexo server --draft

在本地端口中开启服务预览。

如果你的草稿文件写完了,想要发表到post中,

1
hexo publish draft newpage

就会自动把newpage.md发送到post中。

更换主题

到这一步,如果你觉得默认的landscape主题不好看,那么可以在官网的主题中,选择你喜欢的一个主题进行修改就可以啦。点这里
个人觉得好看的主题
1.next
2.matery
3.butterfly
4.sakura
具体配置参见各主题readme,我用的butterfly这个主题,文档点这里

源代码储存

git多分支

问题来了,如果你现在在自己的笔记本上写的博客,部署在了网站上,那么你在家里用台式机,或者实验室的台式机,发现你电脑里面没有博客的文件,或者要换电脑了,最后不知道怎么移动文件,怎么办?

在这里我们就可以利用git的分支系统进行多终端工作了,这样每次打开不一样的电脑,只需要进行简单的配置和在github上把文件同步下来,就可以无缝操作了。

机制是这样的,由于hexo d上传部署到github的其实是hexo编译后的文件,是用来生成网页的,不包含源文件。
也就是上传的是在本地目录里自动生成的.deploy_git里面。

其他文件 ,包括我们写在source 里面的,和配置文件,主题文件,都没有上传到github

所以可以利用git的分支管理,将源文件上传到github的另一个分支即可。

首先,先在github上新建一个hexo分支,
然后在本地的任意目录下,打开git bash,

1
git clone git@github.com:username/username.github.io.git

将其克隆到本地,因为默认分支已经设成了hexo,所以clone时只clone了hexo。

接下来在克隆到本地的username.github.io中,把除了.git 文件夹外的所有文件都删掉

把之前我们写的博客源文件全部复制过来,除了.deploy_git。这里应该说一句,复制过来的源文件应该有一个.gitignore,用来忽略一些不需要的文件,如果没有的话,自己新建一个,在里面写上如下,表示这些类型文件不需要git:

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

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

而后

1
2
3
git add .
git commit –m "add branch"
git push

这样就上传完了,可以去你的github上看一看hexo分支有没有上传上去,其中node_modules、public、db.json已经被忽略掉了,没有关系,不需要上传的,因为在别的电脑上需要重新输入命令安装 。

建立私有仓库

如果觉得多分支管理对站点配置文件_config.yml 的隐私保护不是很好,可以考虑新建一个私有仓库,其他操作步骤同上

更换电脑操作

和之前一样,安装git,nodejs,npm,hexo,设置sshkey
在任意文件夹下克隆hexo分支
然后进入克隆到的文件夹:

1
2
3
cd xxx.github.io
sudo npm install
sudo npm install hexo-deployer-git --save

生成,部署:

1
2
sudo hexo generate
sudo hexo d

最好上传一下源文件

1
2
3
git add .
git commit –m "xxxx"
git push

如果是在已经编辑过的电脑上,已经有clone文件夹了,那么,每次只要和远端同步一下就行了

1
git pull

参考资料

1.hexo史上最全搭建教程
2.hexo-theme-butterfly安装文档
3.hexo官方文档