之前用的 Gitblog 最近出现了一个奇葩的问题,文章不按时间排序了,仔细看了文档也没有地方说这个问题。无奈之下换回以前的 Hexo。
0x01 Hexo的本地安装
这是一个都被大家写烂了的部分,我就不再多说了,其实也不难,看看文档就行了。还不会就随便搜两篇教程看看。
这里值得注意的就是 Windows 下环境变量要配置好,文档里推荐的 nvm 并不会帮你弄环境变量,所以还是去node.js官网下一个安装包更方便, Git 也是必需的东西,同样要配置环境变量。
还有就是 npm 的源国内连很慢,可以用淘宝的镜像。 Windows 下在用户目录下(如C:\Users\dashen\
)新建一个.npmrc
文件,写入:
registry = https://registry.npm.taobao.org
搞定。
0x02 部署到VPS
选好了主题,写完了配置文件,搞定什么评论、百度统计、SEO、永久链接这些东西后,你想把静态文件部署上去,网上的教程全是教你放到 Github 上,国内上 Github 又那么慢,果断撸到自己的 VPS 上。
开始我觉得搭一个私有 Git 很烦,我只要传个静态页面,不用搞那么复杂,后来我发现我错了。。。当用 SFTP 删除原有文件,再传新的文件上去后,我想死的心都有了,太麻烦了,而且容易出错,有时候对以前的文章做了点改动,传的时候忘了删掉之前的文件,就会时不时的出点小差错。
所以我还是费点劲搭一个 Git 吧。
- 本机和 VPS 都装好 Git;
生成密钥(我推荐在 VPS 上弄, Xshell 给我生成的密钥连不上,我也不知道为什么)。
在 VPS 上:
sudo useradd -m git # 创建 git 用户,也可以用 adduser sudo passwd git # 设置密码 su git cd ~ ssh-keygen # 根据自己喜好指定路径之类的,一般默认就可以了,把私钥自己复制到本机 cp id_rsa.pub authorized_keys # 公钥加到授权密钥里
- Windows下私钥保存到
C:\Users\dashen\.ssh\
目录下,经测试,最好重命名为id_rsa
,因为名字叫别的 Hexo 好像不认识。。。 - 测试一下是否能登陆,就用刚才的私钥就好。
创建一个 Git 项目。
su git cd ~ mkdir hexo.git cd hexo.git git init --bare
- 在 Hexo 配置文件里写好 Git 地址,试试
hexo d
能否成功。 创建 hook 任务让它把提交上来的文件复制到 Web 目录下。
su git cd ~/hexo.git/hooks vim post-receive
将如下脚本复制进去:
#!/bin/sh git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
其中,
var/www/hexo
是你博客部署的目录,var/repo/blog.git
是 Git 目录,注意将两个目录的所有者都改为 git 用户。sudo chown -R git:git blog.git
hexo d
一下看看 Web 目录下是否有了新提交的文件,注意此时 shell 不要停在脚本中任意一个目录下,否则会失败的。如果不行,看看几个目录的权限,保证 git 用户有读写权限,www-data 用户对 Web 目录有执行权限。