关于在linux环境下搭建博客这件事

去年六月高考结束后,我曾天真地以为自己终于可以勤劳地更新自己荒废一年半的博客了,然而由于各种各样的理由(好吧,就是因为我懒),写完一篇html的文章后,我再次荒废了半年。如今当我终于想起自己还有一个在角落里吃灰的博客时,它罢工了,而我至今不晓得它到底犯了什么毛病。不过呢,最终在我诚心诚意的不懈努力下(其实并不),它莫名其妙地好了。
首先让我来展示一下我遇到的这个错误:

1
2
ERROR Local hexo not found in ~/MyHexoBlog
ERROR Try running: 'npm install hexo --save'

当然,因为我原先是在Cloud9上写的博客,所以并不是in ~/MyHexoBlog,不过没什么区别。
遇到自己无法解决的问题,第一步当然是百度找解决方法。然而网上的方法全试过一遍后,Cloud9的bash完全瘫痪,而此时我已经受够了Cloud9,并且决心将文件转移到本地——我的Ubuntu系统上,此过程相当于重新搭建一个博客,不过也省了很多步骤。
使用hexo搭建blog并且托管到github上总共分三个步骤:
1.安装nodejs和npm
2.搭建本地的hexo
3.安装并配置git

安装nodejs和npm

1
2
sudo apt-get install nodejs
sudo apt install npm

linux上安装这些似乎都需要加上sudo,sudo可以使一般用户获得部分root权限,而用户只需要输入自己的密码。
输入这两个命令后,nodejs和npm就安装完成了。如果你并不能确定自己是否已经安装成功,那么你可以通过以下node -vnpm -v这两句命令行检验一下。这两句命令是用来查看nodejs和npm的版本的,如果出现了

1
2
3
4
kermit@kermit-VGN-CS33H-B:~/MyHexoBlog$ npm -v
3.5.2
kermit@kermit-VGN-CS33H-B:~/MyHexoBlog$ node -v
v8.10.0

这样的结果,说明你已经安装成功了。

搭建本地的hexo

1
npm i -g hexo-cli

这一步似乎只有这一条全局安装的命令。由于我是转移自己的博客文件,所以我直接将自己的文件覆盖上去。

安装并配置git

1
sudo apt-get install git

这一条是用来安装git的,这不必多说。
接下来就是配置git了,在此之前你必须确保自己有一个github账号,并且新建一个仓库(Repositories),仓库名为注册名.github.io。以上步骤结束后,你就可以执行

1
2
git config --global user.name "你的github用户名"
git config --global user.email "你注册github时使用的邮箱"

然后需要修改你博客文件中的配置文件_config.yml,找到Deployment一栏,将其修改为:

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: git@github.com:你的用户名/你的用户名.github.io.git
brach: master

其实到这一步就可以结束了。但浏览网上的教程都有配置SSH这一步,SSH是一种远程连接工具,在这里的作用是让你免密连接github。
要配置SSH,第一步当然得先安装SSH。

1
sudo apt install openssh-server

安装完成之后就可以直接生成你的SSH密钥。

1
ssh-keygen -t rsa -C "你注册github时使用的邮箱"

生成密钥后,你需要将公钥添加到你的github账户中。当然在此之前,你可以通过ssh -T git@github.com这条命令检验密钥是否成功生成。
首先通过cat ~/.ssh/id_rsa.pub命令得到你的公钥。然后在你github个人账户的settings中,选择SSH and GPG keys这一项,点击New SSH key,自拟题目,并将公钥粘贴到下栏,记得公钥包括最后的邮箱。

到此为止,博客搭建完成,你只要进入你的blog文件夹,然后用hexo指令尽情书写你的博客即可。

本应如此,然而也许是因为我直接将文件覆盖上去,最初的那个错误依旧挡住了我的道路。于是我再一次将网上的方法试一遍。
网上大多数方法就是输入系统给你的建议npm install hexo --save,然而对我这种情况并没有改善。
另一种方法是删除node_modules文件夹,然后使用npm install指令。这一次,方法奏效了。
可喜可贺,可喜可贺。