前言
大年三十突然想正经搭个博客,说干就干。本着快捷易用的原则(当然也不能丑- -),选Hexo框架搭建,并借助git和Nginx把博客部署在自己的服务器上。
第一步 安装Hexo + git + Nginx
默认已经装完了git
Node.js
装node的方法有一大堆(孔乙己:你知道node有几种装法吗)。这里通过比较通用的nodejs版本管理器nvm安装,首先通过curl(mac和linux都能贼方便用)安装nvm1
$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh
然后重启终端,安装稳定版node1
$ nvm install stable
验证安装成功1
2$ node --version
10.15.1
安装Hexo,初始化Hexo项目
按照官网安装,和官网不同的是不需要启动hexo服务因为待会是要部署在Nginx上的。1
2
3
4$ npm install hexo-cli -g
$ hexo init blog
$ cd blog
$ npm install
创建了一个名叫blog的文件夹(也叫项目)
第二步 配置
Nginx
安装1
$ apt install nginx
运行并设为开机运行1
2$ systemctl start nginx
$ systemctl enable nginx
测试nginx1
$ wget http://127.0.0.1
能够正常获取index.html就表明成功
配置git
建立git同步仓库
详细可参考廖雪峰的git教程
新建git用户1
$ adduser git
禁止git用户shell登陆,编辑/etc/passwd
,找到类似1
git:x:1001:1001:,,,:/home/git:/bin/bash
换成1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
建立裸仓1
2
3$ cd /home/git
$ git init --bare hexo.git
$ chown -R git:git hexo.git
将本机上运行Nginx的用户的ssh公钥填入/home/git/.ssh/authorized_keys文件(比如说我是用root用户运行Nginx文件的,就需要把root的ssh公匙放到authorized_keys里1
$ cat ~/.ssh/id_rsa.pub
1 | $ vi /home/git/.ssh/authorized_keys |
配置Nginx
查看配置文件位置1
$ nginx -t
得到配置文件位置在/etc/nginx/nginx.conf
,参考配置文件说明,在http一项中添加虚拟主机如下1
2
3
4
5
6
7
8
9
10
11
12
13https {
...
server {
listen 8080;
root /home/git;
server_name localhost;
location / {
index index.html index.htm;
}
}
...
}
这里只需要配置最基本的参数即可,别的参数如重定向什么的交给Hexo处理
重启Nginx服务1
$ service nginx restart
第三步 自动发布
这里通过hooks完成网站更新工作,将/home/git/hexo.git/hooks
下的post-update.sample重命名为post-update1
$ vi post-update
在exec git update-server-info
前添加1
git --work-tree=/home/git --git-dir=/home/git/hexo.git checkout -f
修改post-update文件权限为可执行1
$ chmod +x post-update
找到之前创建的Hexo项目(也就是blog文件夹),编辑_config.yml,修改#deploy如下1
2
3
4deploy:
type: git
repo: git@<your ip address>:/home/git/hexo.git
branch: master
在Hexo项目中(blog文件夹下)安装hexo-deployer-git1
$ npm install hexo-deployer-git --save
创建新1
$ hexo new new_blog_name
重新部署1
$ hexo g -d
g(generate),d(deploy)
新文章在blog/source/_post
下
访问ip:8080就可以看到博客啦
LaTex支持
突然发现Hexo初始并不支持LaTex,对于深度炼丹人士这怎么行,好在很多主题都有很提到怎么添加LaTex支持,这里因为我主题用了archer,所以选用他提供的参考方法。
以下操作在项目文件夹(也就是~/blog)下完成
用Kramed替换Marked
1 | $ npm uninstall hexo-renderer-marked --save |
将<your-project-dir>/node_modules/hexo-renderer-kramed/lib/renderer.js
中的1
2
3
4
5// Change inline math rule
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}
改为1
2
3
4// Change inline math rule
function formatText(text) {
return text;
}
用hexo-renderer-mathjax代替hexo-math
1 | $ npm uninstall hexo-math --save |
更新mathjax的CDN
9102年了npm装的最近版hexo-renderer-mathjax
还在用过期的CDN(不换不能用,如果哪天官方给的版本里CDN更新了那就不用做这步了)。
将<path-to-your-project>/node_modules/hexo-renderer-mathjax/mathjax.html
中的含CDN链接的<script>
标签更新为1
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
在文章设置中开启mathjax
1 | --- |
测试
这是一个 $R_{m \times n} = U_{m \times m} S_{m \times n} V_{n \times n}’$ 测试
舒服了…