关于搭建网站

近一周一直在忙自己的MindNetwork小项目,完全处于自己对知识管理、共享和可视化的兴趣。建立这个项目主要有以下目的:

  • 类似于浏览器书签,记录关键词语和链接
  • 记录软件在不同操作系统的安装指导
  • 一点一点积累知识库,并将其可视化
  • 方便知识共享与协作纠错

目前这个项目只是搭起了简单的框架,实现了基本的添加和删除操作。然而为了更为持久的使用和开发,我折腾了将近一周,在不同的云服务平台上换来换去,最后确定选择新浪SAE平台为最终的开发部署平台。为方便后面回顾和查阅,我把这几天的尝试进行简单总结,说明选择新浪SAE的原因,同时简单对比一下其他几个平台。

我尝试的解决方案主要思路有两条:

  1. 静态页面+AJAX+可跨域访问的云数据库
  2. PaaS云服务平台

基于这两条思路,我初步设想了以下集中可行的方案,下面等我一一介绍开来。

Heroku

我最初的设想是将程序部署到Heroku上,使用Heroku有如下好处:

  • 支持Git版本管理
  • 支持Ruby, Node.js, Java, Python, PHP
  • 支持MongoDB, PostgreSQL, MySQL, Redis
  • 提供少数免费服务
  • … …

就我而言这些好处都恰到好处,我的代码放在Github上,我的框架是Node.js,我的数据库采用的是MongoDB(Node.js+Express+MongoDB是一套较为流行的套路),最关键是提供一定程度的免费服务,对于我个人自给自足完全够用。然而关隘在于提供免费MongoDB服务几个Add-on(Compose MongoDB, MongoLab)都需要信用卡认证,无奈只好将数据库换成PostgreSQL。
使用MongoDB对于开发者来说,好处是不用再去写繁琐的SQL语句,而且可以直接用JSON数据格式进行数据库的操作,非常方便。
但是Heroku是美国的PaaS平台,国内访问有时不是很稳定,页面的加载很慢(AJAX响应倒是还蛮不错的)。这些因素驱使我去寻找响应时间更为优良的解决方案。
另外Cloud Foundry是跟Heroku类似的云平台,本科的时候研究过,虽然支持的语言、数据库和特性都很多,但是配置比较麻烦,而且免费的服务有试用期限制,所以我最终放弃了Cloud Foundry。

云数据库

另外一种比较少见的解决方案是使用云据库服务,通过跨域AJAX请求来实现数据的存储。这么做有三个好处:

  • 页面与数据存储分离,可用于移动应用的开发;
  • 数据库的操作和维护更简单,使用服务商提供的API和管理即可;
  • 代码可以放在Github上。

这么做的风险也是巨大的,通常跨域访问涉及授权问题,通常授权使用apiKey,这就容易导致程序员很容易的将apiKey暴露给别人,进而将数据库的操作暴露给别人,不是很安全
另外从实践来看,效果也不是很好。我使用的数据库服务提供商是MongoLab,数据库的使用和API都很简单。但是它提供的免费服务质量很低,免费服务用户共享带宽和磁盘空间,服务有主要面向发达国家,响应时间无保证,最坏的情况是完全连不上,而且最坏情况经常发生。但是付费服务的服务质量是有保证的,独享带宽和磁盘。
谷歌、微软、亚马逊也有类似的云数据库,但不是收费就是有试用期限制,而且试用前还得认证信用卡。国内大部分云数据库(百度,阿里,腾讯,小米,盛大等)面向的对象也是新兴创业公司,都要收取很高的费用,所以对于我来说都是太遥远的事情。

新浪SAE

对于我这种只想建立一个玩具一样的网站,新浪SAE是个不错的选择。虽然新浪SAE平台页面看似很陈旧,文档也基本都是两三年前的文档,而且支持的语言也只有PHP,Python和Java,但是,好在SAE提供的文档都很全,提供的配额足以够我使用,不用担心太多,网站就这么牵到了SAE平台。
使用新浪SAE的PHP和Mysql需要注意这些问题:

  • 注意在config.yaml文件中更改首页,具体操作注意看AppConfig说明;
  • 免费用户的Mysql使用的MyISAM引擎,不支持级联删除和级更新;
  • 使用SaeMysql时,注意看API文档说明

评论