访问速度和SEO一直是Hexo+GitHub搭建博客的痛点。其中访问速度来说,尽管图片等文件放到了阿里云oss,但一篇文章内容稍多访问速度就被拖到了20秒左右,这实在是没办法容忍的事情。起初我打算换成WordPress,折腾了几天,还是不好用而且对于我这种只是单纯的写博客来说,还是hexo更轻量好用一些,而且真的是大爱markdown。回到正题,看看成果:
就我的体验而言,从20s -> 3s,也算是满足了我的基本需求。
搭建流程
先来了解下在hexo d -g时 hexo做了些什么,这样有助于我们理解接下来的流程。
第一步:hexo会将本地的md文件渲染为静态文件
第二步:调用Git推到服务器的仓库区
第三步:服务器通过git-Hooks同步到网站根目录
hexo本地环境配置及初始化这里不再赘述,其中服务器的环境需要安装Git,Nginx如果安装了BT面板可以直接创建一个站点不需要修改Nginx的配置文件
安装Git
1 | yum install git |
- 检查安装
git --version
创建git用户
1 | adduser git |
vim打开sudo配置文件
1 | chmod 740 /etc/sudoers |
找到以下内容
1 | # Allow root to run any commands anywhere |
在root用户后添加一行,赋予git用户权限,需要注意对齐
1 | git ALL=(ALL) ALL |
:切换命令模式输入wq保存并退出,记得改回sudo文件的权限chmod 400 /etc/sudoers
设置git用户密码
1 | 需要root权限 |
配置ssh
切换git用户, 创建 ~/.ssh 文件夹
1 | su git |
打开本地电脑用户文件夹下的.ssh文件夹
如果你已经生成ssh-keygen里面会有两个文件id_rsa.pub和id_rsa
我们将本地的公钥也就是id_rsa.pub文件使用FTP或者BT面板上传到服务器git用户的.ssh文件夹中
将文件复制一份并配置权限
1 | cd ~/.ssh |
- 使用
ssh -v git@SERVER(server是你的服务器公网IP)测试是否能够连通
创建仓库
执行命令创建一个裸仓库
1 | sudo git init --bare blog.git |
使用–bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。
改变仓库拥有者为git
1 | sudo chown -R git:git blog.git |
配置钩子
在 blog.git/hooks 目录下新建一个 post-receive 文件并编辑
1 | vi ~/blog.git/hooks/post-receive |
在post-receive文件中写入
1 | !/bin/bash |
其中/www/wwwroot/blog路径是你的网站根目录/home/git/blog.git是你的仓库目录
赋予post-receive执行权限chmod +x ~/blog.git/hooks/post-receive
至此服务端配置结束~
配置_config.yml
放在阿里的服务器国内访问会很快,但是国外就无法访问了,或速度很慢。作为一个国际化的coder(假装会有外国人看),所以我保留了GitHub的仓库。
1 | deploy: |
这样hexo d -g会同时push到两个仓库中。需要注意的是如果hexo d -g命令执行成功,服务器的网站根目录却没有生成任何静态文件,那么需要手动执行一遍
1 | git --work-tree=/www/wwwroot/blog --git-dir=/home/git/blog.git checkout -f |
最后将境外的线路解析到GitHub,将国内解析到阿里,这样我们就是一个国际化的coder了 大误
_end_