整整三年,简直不太敢相信。一个三年没有更新的博客还会有谁看呢?一个三年没有更新的网站还会有谁访问呢?其实并不需要这样悲观的,三年的时间说到底也不过就是历史的一瞬罢了。从另一个角度来想,三年的时间即使每天都更新这个建站手记,又会有多少人看、多少人关注呢?说到底不过是一个个人站点,而如果这个个人并不是名流,那么任凭你如何努力地发声,这声音也不会受到太多关注的。所以,是否受人关注这件事,可能根本就不应该构成是否应该维护这个站点的理由吧。
本站曾经在2015年的时候,尝试过把整站迁移到VPS上,可是由于两个原因失败了。一个原因是当时的VPS服务不够稳定,迁移上去以后不久就遇到了比较严重的硬件问题,差点把所有的内容都搞没了。第二个原因也是自己的技术不过关,想部署SSL证书,却不太会弄,结果也造成了整站一段时间内不能访问的严重故障。以上的两个原因,加上本人又忙到不行,遂退回了虚拟主机方案。幸亏还有备份——备份实在太重要了。
可是虚拟主机方案实在是问题太多了,居然在21世纪已经过去近四分之一的今天还需要通过一个Web UI来上传文件——这对于号称计算机专业科班出身之人来说,不能不说是一种羞辱。只是,概念性地说这样的方案好或是那样的方案好,其实本身并不科学。到底虚拟主机方案和VPS方案相比,优缺点各是什么?其实一言以蔽之:虚拟主机方案没有服务器管理成本,但是相应地没有可以对服务器进行管理的灵活性——软件组件不能升级、文件和数据库无法以灵活方式管理且有数量和容量限制、SSL证书无法部署等,而VPS方案则在拥有如此灵活性的同时,必须负担服务器的管理成本——需要保证服务器的服务不中断,需要保证性能在可接受范围,需要处理各种妖蛾子问题。这也是做任何事情都需要做的权衡,就譬如做软件开发,如果你选择使用标准库中的智能指针,你自然不用自己管理内存,但这么一来也就(基本上)无法确切地了解内存运作的所有细节(尽管标准库声称你仍然可以);可是如果你的好奇心或实际的工程需求促使或迫使你下定决心非要去了解内存运作的所有细节不可,那当然可以直接使用裸指针或自定义的“智能指针”,但那样一来就如同Herb Sutter所言:“你要自行管理内存,就意味着你要负责管理内存。”
负担服务器的管理成本需要很多前提条件,首要的是软硬件基础设施环境需要达到相当的稳定程度。这小小的一句话,内涵可太丰富了。硬件方面,VPS无疑是开销最小的方式,但是当然选择起来需要考虑的因素也比较多。国内的供应商需要备案,这个我比较抵触。但国外的供应商访问起来也有很多有中国特色的问题,而且越知名的供应商,这些问题就越严重。比如Amazon Web Services当然是服务最好的,但是就因为它太好了,所以在中国大陆的运营就有各种问题。而且,把服务器放到国外去这个决定就意味着肯定需要配置比较高、性能比较好的服务器才能满足需求,因为本来物理距离远,自然延迟就会比较大一些。可是这么一来,费用就会上去了。
不言而喻,这样的供应商会非常难找。国内的有问题,国外的大厂有问题,那就只能找国外的小厂。但国外的小厂,配置和性能先不说它,费用首先就不会低,服务更是不可预测。这么一来,唯一的办法就是不停地交学费去试。交过了大概五六千美元的学费,尝试了各种各样的供应商以后,终于大致学到了一些经验:
- 服务比配置还要重要,因为供应商在国外,又是VPS,因此必须要有个能及时响应的专业服务作支撑。只有在线工单是不够的,必须至少要有即时通讯和电话这两个选项之一。
- 配置稍高的VPS,价格就会超过每月五十美元。因此,有可能的话,应该选择收取一次性费用的供应商。这样的供应商极少,如果加上服务要求就更少,但还是有的。
- 未来应该尽可能地选择无服务器型解决方案,即利用Lamba计算辅以低价存储来托管自己的应用,但是无疑地现在这样的解决方案还远不是主流。
软件方面,相对来说确定性反而高一些。这就是计算机的美妙之处——无论硬件外观看上去如何奇形怪状,它们运行的软件都大同小异。有的时候,我们会在一些貌似是“专用型”机器,如户外广告显示屏、值机电脑或是ATM机,只有在看到它们弹出错误窗口,或是自动重启时,才发现原来它们在运行的是通用操作系统:大多数是Windows,以及桌面或嵌入式Linux发行版,如今也开始有一些Android了。这也难怪,有实力研发定制的操作系统的厂家实在不多,而且这样研发出来的操作系统,很可能对于一些极其基础的应用场景都需要大费周章才能完成,所以如果没有意外的情况下,绝大多数应用开发商都会采用通用操作系统作为基础软件,更不用说没有研发实力甚至研发能力的内容厂商了。
如果有任何可能,都应该选择至少Ubuntu 16.04 LTS作为VPS的基础操作系统,不为别的,就是为了它自带openssl 1.0.2,从而能够使用默认源的nginx服务器即可轻松开启HTTP2,而不必大费周章地采用编译安装的方式升级openssl然后再使用非默认源的nginx服务器与之配合才能达到同一目的。这样的操作虽说也不能说非常难,但显然小白系统管理员是很难一次做对的,更不用说遇到错误时的故障排除了。如果只是为了在应用层上工作,就千万不要无谓地折腾基础设施层,而要尽可能地使用基础设施层的默认配置。因为这样的配置是经过了最充分的专业测试才交付的,也是经过了最苛刻的实际应用之考验,才保留和进化而成的。这个看似并不过分,甚至并不很高的操作系统选项,很多号称主流的VPS供应商,在2016年年底的今天,都没有提供。
说起nginx服务器,它实在是让人一用就放不下——真的不可能用过了nginx还会回头再用Apache,更不用说Tomcat之流了。速度快、配置省心这些都不说了,它最大的优点是真的不挂。真的,也许是我水平不够,反正我用Apache的时候,它总是过一段时间就会挂,然后就要重启服务或是重启服务器。我研究过这个问题,发现如果nginx服务挂了,那么肯定是数据库或文件系统挂了,而Apache却可以在数据库和文件系统没任何问题的时候挂掉。所以尽管Ubuntu自10.04版本开始就自带了一个tasksel,能够以单条命令来安装整个LAMP服务软件栈,但对于LEMP服务软件栈却并不存在这样方便快捷的途径,我们还是值得为了nginx放弃前者的这一点点方便。毕竟,Ubuntu 16.04默认安装源里面各个软件的版本已经很新,从而不需要为了更高的版本而去编译安装,只须使用apt命令即可,这真的足够方便了。
其他的基础和应用服务器及其插件,按需安装即可,也没有什么需要特别注意的。如果一定要说些什么的话,那就是不要矫情,不要为了某些执念去安装什么或去不安装什么,尤其是前者——毕竟软件装上去就要占用宝贵的存储资源。
在软件方面,唯一需要再重点说一下的就是证书了。证书必将在2017年得到全面普及,未来的一切连接皆将以HTTPS而非HTTP为基础。但是,今年在证书领域发生了比较大的一次震动:签发免费证书的本来有两大主力厂商沃通和StartCom,但主流浏览器突然宣布自2016年10月21日后,这两家厂商签发的证书将不再被信任。理由当然是很站得住脚的,罪状一是沃通收购StartCom但没有披露信息,这是CA厂商政策所禁止的;罪状二更要命,是发现了这两家公司为欺瞒在规定时间点以后不得再采用的、不安全的SHA1加密算法的事实而倒签的证书,这是真的作死了。但是从结果上说, 现在硕果仅存的还在签发免费证书的厂商就只有一个名头和来头都很大的所谓Internet安全研究集团(Internet Security Research Group,ISRG)所管理和运营的Let’s Encrypt了。值得注意的有几点:第一,这个ISRG似乎顶着一个这么大的名头,好像唯一做的事就是管理和运营Let’s Encrypt;第二,和一般的厂商不一样的是,Let’s Encrypt并不提供收费证书的选项,也不提供通配符证书或是高级的、带有额外验证的组织验证型(organizational validation,OV)和扩展验证型(extended validation,EV)证书的选项。它唯一做的事情就是签发免费证书,连所有权验证的过程都可以自动化。但也正是由于这个原因,Let’s Encrypt自身使用的却是由IdenTrust公司提供的OV证书,而绝大部分CA厂商使用的都是自家出品的证书;第三,Let’s Encrypt签发的证书,有效期很短,只有90天,而一般的证书却有至少1年。很有意思的是,Let’s Encrypt允许,或者说强制用户采用自动化脚本来在证书到期之前更新它,换言之,它对于证书的使用提出了额外的技术要求,并且对于访问证书服务器的频率也提出了额外的要求。综合以上的这些信息,我们不能不产生这样的联想:急急地把沃通和StartCom这样没有额外技术要求,时长也一次签发3年的竞争对手干掉,到底这里面除了表面上的技术理由,是不是还另有隐情?无论如何,现在市场上只有一个厂商在签发免费证书,这真的好吗?难道就没有人感觉这里面会有垄断的隐患吗?目前在网上寻找相关的信息,所有人都众口一辞地说Let’s Encrypt的优点,比如免费,比如支持签发ECC证书等等,可是对它的缺点,好像没有人大声指出来。当然,我可以理解,讨论这些事情的人大多数有着不错的技术背景,但是也正因为如此,有一些重要的事情可能就被忽略了。总之,我对于无论什么原因造成的市场垄断都是不赞成的。听说StartCom正在准备新的根证书,希望它早日回来!
我为本网站购买了有效期为3年的AlphaSSL品牌的通配符证书,所以其实刚才的那部分讨论对本站的直接影响并不十分大。那为什么要讨论呢?原因有二:第一,虽然我在本网站上使用了通配符证书,但是在为托管网站在我的服务器上的朋友们,我却使用了沃通和StartCom的证书。由于上面说的这个消息,我现在手里为朋友们申请的证书几乎成了绝版,有一张证书甚至是2016年10月15日申请的,离消息发布只差了一星期。第二,我在一些其他的用途上也使用了沃通和StartCom的证书,比如Windows远程桌面的连接,以及VMware vSphere Hypervisor的连接。一个拥有可信根证书的CA厂商签发的证书,用途是很多的,决不仅仅限于HTTP连接的加密。而我也非常提倡一不做二不休的精神,要跟上时代就彻底地和过去的不良做法告别,不要粘粘糊糊的。
关于证书还有一些话说,比如购买的价格,我其实很可能买得有点贵了:我花了114美元在SSL2buy这个网站上买的,平均一年38美元。但好像在淘宝上竟然能找到32元人民币一年的价格!不过,SSL2buy的服务很好,对于刚上手证书的我来说,付点学费也没有太大的问题。三年以后,肯定整个市场都会不一样了,那个时候再去选择最适合自己的性价比的供应商吧。还有一个就是证书品牌选择的问题,在使用上,差异其实不是那么大的。而且也不是每个品牌都提供了所有的证书选项,有些没有提供通配符证书,有些没有提供OV/EV证书。最昂贵的证书,当然同时也是最有逼格的证书,毫无疑问是Symantec直接签发的。而提供了比较亲民价格的证书品牌,单域名的版本来自COMODO旗下的GGSSL或PositiveSSL,通配符的版本就是本站使用的、来自GlobalSign旗下的AlphaSSL了。如果是企业使用,需要使用OV/EV,而预算又不很充足的话,则应该考虑GeoTrust的TrueBusiness品牌,尤其是非英语国家的用户,因为只有这个品牌才支持显示在组织名字里显示非ASCII字符。当然如果本来就打算使用全ASCII字符,那么当然是COMODO及其子品牌更省钱。土豪没话说,一定是Symantec。关于证书的讨论如果全部展开,那么可以再写很多很多,此处就先收住吧。
回到VPS软硬件选择的话题,综合一下所有的要求,硬性要求基本如下:
- 至少要有即时通讯和电话这两个选项之一的服务和支持选项;
- 知名度不可太高,否则被连坐的风险太高;
- 至少配置2GB内存和30GB SSD;
- 有Ubuntu 16.04 LTS的操作系统选项;
- 月均摊成本需要低于10美元。
除此之外,还有一些软性要求,即“如有更好”的要求:
- 与中国大陆的网络连接平均时间不超过500ms,丢包率不超过20%;
- 付费周期最好至少支持年付,理想情况下可以一次付费终身使用。不要以为这不可能,比如主机屋就提供了一次付费终身使用的虚拟主机。
同时满足所有以上这些要求的服务商简直太难找了。尤其是满足所有硬性要求的服务商,实在是大海捞针。非常接近的选项有Cloudatcost,它满足硬性要求的2、3和5,和所有的软性要求。但是它没有Ubuntu 16.04 LTS的选项,而且机器挂得有点儿频繁了,这种情况下它的服务就显得极其不到位,所以让它出局是很不舍但也是很坚决的。还有就是Linode,它满足硬性要求的1、3和4,和所有的软性要求。但是它的预算还是超了一倍多,可话说回来,钱归根结底还是小事,它不满足硬性要求2才是大问题。
最后非常艰难地发现了两个选项:位于挪威的Theforevercloud,和位于美国的AlphaRacks。前者是非常非常小众的一个VPS供应商,提供了一次付费终身使用的选项;后者从反查运营IP记录的结果来看,应该是背靠SYN数据中心的资源分销商,属于三线左右的VPS供应商。而在这两个选项中选择,实际上更加艰难。不过最终我还是做出了决定:我购买了前者的服务,用来作为一切托管站点的VPS主机;同时,也购买了后者的服务,用来作为高博的世界所需要的VPS主机。前者,我的开支是大约2500挪威克朗的一次性成本。由于这个费用可以均摊到很长的时间,所以可以认为是近乎免费的。而后者,我的开支是大约每年20美元,想想连域名的费用一年都是200多美元,这个开支可以认为性价比相当不错了。其实运维成本是任何一个需要长期进行的项目的主要成本,所以一定要想方设法地把运维成本降下来。那么,如果说维持一个网站本身的开支一年可以控制在300美元以下(域名、主机和证书费用之和),也就是一个月在25美元以下的话,那么作为一个个人网站来说,已经是控制得还不错的一个成本了——当然换言之,也差不多接近一个没有盈利目标的个人网站的成本上限了。支持有写作热情的朋友们在我的主机上托管个人网站或博客,这件事是永远值得做的,也是永远值得投入成本的。认识我的人都知道,我是村上春树的超级粉丝,所以这台位于挪威的服务器,被我命名为“挪威的森林”。这个森林,是由很多个托管网站组成的,每一个网站都像是一棵充满希望的树,我希望能看到所有的朋友的写作内容总在积淀,而他们自身也总在成长。当然,我会为每个在我这里托管网站的朋友,都准备好足量的资源、配置好证书并开启HTTP2、配置好CDN——而托管在我这里就意味着你只需要潜心写作即可,我来办妥“让您的网站跟上时代步伐”的其余事项,并且永远免费。免费不意味着任何人都可以托管在我这里,而是只有愿意写作的朋友,在我们协商一致的情况下才可以。当然,任何人都可以申请托管。
时间过得好快好快!转眼间,从我第一次拥有域名并开办网站的2004年到现在,时间已经过去了12年。12进制对于中国人来说,是挺熟悉的。而过了这些年以后,我仍然在坚持着一些想法和行动,并且在学到很多的同时也理顺了很多。这一切都离不开所有朋友和比朋友更亲密的人们的支持,我希望你们所有人都能够幸福,并且希望这幸福的哪怕一小部分是来源于我的努力。