老汤的Blog

部署在哪里!

Feb 15, 2020

第一个问题,我的网站要怎么部署?

传统上, 要通过租用一台vps来部署blog, 需要安装nginx/php等等或软件才能支持blog系统, 如果要支持SSL, 更需要安装 Let’s Encrypt 。 虽然 Let's Encrypt 的出现已经极大的降低了个人和小型组织部署SSL的门槛, 但就部署过程本身而言, Let's Encrypt并不那么赏心悦目, 虽然已经有很多自动化脚本。 它最大的问题在于和现在web应用的docker化相冲突。

WEB应用的docker化, 可以说是21世纪第二个10年最重要的一项IT技术, 它的出现极大的改变互联网行业开发-部署-运维的过程。 对于我这样的身兼开发与运维工作的独立开发者而言, 最大的改变之一就是: 我越来越不想折腾服务器了。

我越来越讨厌这个过程: 时不时ssh上一个服务器, 安装软件包, 更新补丁, 修改配置文件, 当出了问题后, 再去检查和开发环境的差异, 甚至还需要去在线调试一下代码。 好不容易部署好了, 如果因为某个原因, vps损坏, 又要重复上述过程。 整个过程是在太不可控了。

我这次用的blog系统是 Jekyll , 它的一个重要特点就是部署在服务器上后, 其实是一个完全静态的网站, 为Jekyll专门准备一个VPS是在是有点杀鸡用牛刀的感觉, 况且还要准备支持SSL, 想想就觉得头疼。

好在还有其它选择, 在阅读了一些文档后, 我觉得目前部署一个支持SSL的静态网站方式有两种, 第一种是:

  1. 将静态网页上传至AWS S3的一个bucket中, 然后将该bucket设为静态网站模式
  2. 然后利用AWS的ACM, 即AWS的证书管理为网站申请证书
  3. 利用AWS的cloudfront 为网站做分发, 不仅获得SSL, 还有CDN

第二个方式, 在上面第一个方法中第二第三步可以用 cloudflare 的相应服务来代替。 cloudflare 的方法更加简单, 而且免费, 唯一的代价是需要把自己的域名服务交给cloudflare来管理。

第一种方式详细见 这里 , 第二种方式详细见 这里

目前这个blog系统采用的是第二种方式, 而我同时还在其它网站采用第一种方式,我想比较一下两种方式的优劣。以后有空时也许能写出来。