之前BLOG一直使用的是github pages托管的,好处是只要git push一把就可以使用pages的jekyll功能自动编译了,并且github的CDN也不错,从大陆访问速度也还可以接受。但不好的地方是,github的pages不支持jekyll-archives,导致BLOG的tag和category都不能使用,相对来说不太方便,特别是tag。另外github把百度的爬虫给禁掉了,无法收录。

前几天申请了一个AWS的EC2,信用卡支付第一年可以免费使用,用来搭了个shadowsocks。看这个小虚机的负载不高,于是萌生了把BLOG搬到EC2的想法。

主要有这么几件事要做:

  1. EC2虚机需要装jekyll
  2. EC2虚机需要装nginx(我可不想用jekyll s)
  3. EC2的安全组需要打开80端口
  4. DNS解析需要从CNAME改为A类,即域名转为IP地址
  5. 由于虚拟机在美东,国内访问速度一般,还需要加一个CDN加速,我用的是百度加速乐

下面捡要紧的说说。

EC2虚机需要装jekyll

这事做的很折腾,主要是我用的还是ubuntu 14.04,其默认的ruby还是1.9.x,而jekyll要求2.x+。这里主要是版本选择,ruby可以使用rvm来管理。 我的设置主要是参考这篇Ubuntu 14.02 jekyll搭建,不过rubygem我不是从git上clone下来的,而是rubygem官网上下载的。

gem install jekyll可以成功,但是执行jekyll -v时会提示找不到ruby2.0什么的,其实是ruby版本不对,需要指定下default。

source /etc/profile.d/rvm.sh
rvm install 2.1.2
rvm use 2.1.2 --default

NGINX

安装特别简单。配置上,只要修改root为jekyll生成的 _site目录即可。别忘了重启nginx服务。

EC2的安全组

我们知道linux自己有iptables这样的软件防火墙,可以根据报文协议+端口号来限制出入报文,但云上可能考虑安全,加入了安全组的概念,即使EC2虚拟机关闭了iptables门户大开,通过云的安全组来限制其可以对外暴漏的端口。

具体到我这,就是要将80端口号加到安全组的入方向上来。

DNS解析

我的域名是在万网上买的,所以NDS解析修改在万网上做。我加了2条A类的解析,一条永不datastart.cn,一条用于www.datastart.cn

不过,由于后面我用了百度加速乐,所以万网上域名解析的没用到,实际的解析是加速乐做的,加速乐要求域名商使用加速乐的DNS服务器。

百度加速乐

可以免费试用,挺不错,我配置了以后访问速度明显提升了。具体配置上网找找吧。阿里云也有CDN服务器,但是没有百度这种免费额度。