新年新气象,本来只是想把站点从 gitpages 迁移到 linode 的VPS,结果根本停不下来,顺便升级了服务器的 linux 版本,更新了主题,然后支持了 https
。
我的整站(https://yuguo.us)在 2013 年从WordPress迁移到Jekyll,站点就开始从动态网站变成了静态网站,免除了 WordPress 的升级,补丁,插件维护,数据库备份等等,简直是生活更轻松。之前使用 markdown 编辑器来写文章,现在直接用 sublime 写日志,也觉得越来越习惯。在命令行中运行 jekyll s
之后,jekyll
就会监控代码的变更,然后自动生成新的静态页,我在浏览器中刷新 http://localhost:4000
来预览。当然缺点也有,页面变多之后,现在生成一次整站需要9-11秒,做不到即时预览。
Jekyll 每次生成全站需要9-11秒的时间。
如图,全站生成需要9-11秒。
但是,如果只是希望调试当前页面,解决办法也很简单,就是通过 --incremental
参数来开启增量构建(Incremental regeneration),这是 jekyll 3.0 新增的特性。如果只编辑了某一个 markdown
文件,就只生成它对应的 html
页面。如此做,就可以获得不错的性能提升。
Jekyll 开启增量编译之后,每次生成一页只需要3-4秒的时间。
Jekyll 生成的静态页需要部署在一台服务器上,才能作为网站给用户使用。我一直使用 gitpages
的免费文件托管,也推荐给很多人使用。至今为止已经用了两年,现在决定要换,主要基于几个原因。
https
。这是我在电信网络下分别 ping
gitpages 和 linode 的速度区别:
测试 gitpages 的中国区 CDN:
测试 linode 的 VPS:
开源倒也没有什么问题,我之前的主题也是修改自国外免费主题,所以也开放给大家使用。但是有些人拿到主题之后,Google 分析代码都不改就用,我在站点统计中看到一堆乱七八糟的域名。
linode 的服务器一直是优质vps的代名词,价格不便宜,但是稳定省心,节省的精力用来赚大钱。我的 linode 2048 是每年大概200美元价格,这台机器是日本节点,速度不错。配置最低的 linode 1024是每年120美元,使用推荐链接之后应该还能省20美元。
欢迎使用我的 linode 推荐链接:https://www.linode.com/?r=ce84d007e2a02072cfcec1bc008f24dc3b10c299
git hooks
和 jekyll 部署站点站点托管在 gitpages 的时候,部署方式就是 git
,没有其它的选择,本身这种方式也足够好,不需要其他的选择。
现在切换到了 vps,在部署方式上就有了一些选择:
sftp/ftp: 这是最简单无门槛的部署方式,对服务器要求很低,能支持静态资源的服务器就可以托管。具体来讲是把 jekyll
在本地生成的 _site
目录整个上传到服务器上。缺点是不能增量部署,假如我们修改了页面模板,引起了 _site
目录中所有静态 html
文件的变化,这时候使用 sftp 或者 ftp 的方式,就需要把所有的 html
页面都重新上传至服务器。页面越多,耗费的时间越多。
git
: 我强烈推荐使用 git
来管理和部署代码,有这样几个优点。
git
和 jekyll
,部署即同步,不需要考虑备份的问题。如果你只有这样一个网站,几乎不需要开启服务器备份。当然如果同一台主机上还部署了 WordPress
等讨厌的家伙,保险起见还是需要开启备份。git hooks
运行一段脚本,启动 jekyll
来自动编译源码,生成静态页并输出到服务器的 www
目录。(这只是一个例子,也可以是任何有外网访问权限的目录)www
目录是公开的,自己的 git
目录是私密的,保证安全性。scp
: scp
其实是一个 ssh
命令,本质上还是把生成的 _site
目录通过 ssh
传输到服务器。因为有自动化的脚本,执行倒是很简单,但是仍然需要考虑 sftp/ftp
中的缺点——无法增量部署。除此之外,官方还提供了一些脚本等方式,不过如果你现在考虑把自己的 jeyll
站点部署到一台 vps
的话,最好的方式毫无疑问就是 git
。
使用 git 的钩子(post-receive)来让服务器上的 git 接收到代码之后自动运行 jekyll。