UPDATE:距离我第一次发布这个问题和答案已经过去三年多了。我还是比较喜欢AWS http://aws.amazon.com/对于所有专业或严肃的马力性质的新部署(也就是说,如果我不自行托管),但我也定期部署演示和教程应用程序Heroku http://heroku.com。我还没有尝试过出现的许多 VPS 提供商,例如Linode http://www.linode.com/ or 数字海洋 https://www.digitalocean.com/,但通常都会听到有关他们的好话。
阻止我为所有应用程序选择 Heroku 的关键因素是成本。由于我工作之外的大多数独立项目都是我希望绝对最小化成本的项目,因此 AWS 仍然是 AWS 与 Heroku 之间更好的选择。 AWS(或任何与此相关的 VPS 提供商)有一个很好的副作用,可以一路教您操作系统,从长远来看,这非常有价值。
=======================
所以,两年后,这是我的更新。我使用了三种托管服务,以下是我对每种服务的看法(实际上我很喜欢它们,但出于各种原因)。
-
切片主机 http://slicehost.com(现在的一部分Rackspace 云托管 http://www.rackspace.com/cloud/)
这是我尝试的第一台 VPS 主机,我很喜欢它们。那里的人很棒,支持很棒,而且有一种非常酷的草根感觉。现在VPS作为解决方案更加主流,而且Rackspace也早就收购了Slicehost,我觉得提供的服务还是很棒的。如果您想要一种简单的方法来设置服务器、大量的 Linux 发行版选择以及对服务器的控制,那么这是一个很棒的选择。
也爱这些家伙。我建立了一个在那里托管的业余爱好应用程序,rpglogger.com http://rpglogger.com(截至 2012 年 11 月,它实际上已经迁移到 Amazon Web Services),并且开发和部署到 Heroku 是理所当然的事情。我非常喜欢在 Heroku 上工作,原因有两个:
- 设置起来非常简单。根据我的经验,在他们的平台上运行应用程序确实像他们所说的那么容易。
- 单个 dyno(Web 服务器实例)是免费的。因此,业余爱好应用程序和较小的应用程序基本上可以获得免费托管。但这不仅仅是为了爱好 - 他们的插件架构是首屈一指的,只需点击几下鼠标即可添加 NewRelic、Exceptional 等 3rd 方插件以及其平台上的任何其他插件。
就易用性而言,你绝对无法击败 Heroku。部署应用程序的更新版本实际上就像推送到 git 存储库一样简单。 Heroku 不一定便宜(除了小型应用程序之外),但如果您认为开发人员的时间比控制服务器更有价值,那么这是一个很棒的选择。无论如何,如果应用程序变得很大,或者应用程序的需求与 Heroku 的成本对您不再有意义,您始终可以将应用程序迁移到任何其他平台。
- 亚马逊网络服务 http://aws.amazon.com
我做了很多小型应用程序,AWS 预留实例非常棒。只需 60 美元,我基本上就能获得一整年的预留实例。一台服务器足以在同一台机器上运行 3-4 个小型应用程序,具有更优化的内存使用,并且能够运行多个 Web 服务器实例(相对于 Heroku 的一个免费 dyno,尽管我听说您可以自定义配置您的 Heroku dyno)使用独角兽来获得更多的可扩展性)。基本上,AWS 的扩展性非常好,可以让您在多个小型应用程序之间共享服务器,或者将较大的应用程序分布在多个服务器上。
除了预留实例的初始成本之外,我只需支付带宽和其他 AWS 使用费用(例如 S3)。我认为 AWS 是终极可扩展性、巨大成本、终极控制的惊人组合,对于想要在空中构建整个基础设施的企业客户来说,它是无与伦比的。 Rackspace 云托管提供类似的服务,并且它们在大多数方面可能具有可比性。但如果你想要的是云服务的瑞士军刀,我认为AWS仍然遥遥领先于其他所有人。
===============
话虽这么说,我开始使用 Slicehost,然后转向 AWS,然后尝试了 Heroku,今天我大部分时间都花在了 AWS 上。
AWS 是这样一种平台,在您投入一点时间设置 VPS 机器集合之后,留在该平台并利用其不断增加的工具集通常是有意义的。
诚然,我花了两年的时间尝试了多种选项,并尝试了从完全托管服务器(即 Heroku,您甚至不考虑服务器,只考虑应用程序)到完全控制服务器(Slicehost 和 AWS)的各个管理级别。毕竟,我已经准备好管理自己的机器,以获得我想要的灵活性和低成本。
通过自动化,AWS 上服务器的实际管理变得轻而易举,因此我不会花时间不断地修补我的机器,或执行其他系统管理任务。我只是定期检查我的服务器是否需要重新启动,我将它们设置为自动安装所有安全更新(我碰巧部署到 Ubuntu 服务器),这意味着我花了 99% 的时间(至少是日常)写作应用程序 - 不管理服务器(管理服务只是几天工作的偶然任务,然后几个月没有其他任务) - 这是我作为开发人员想要花时间的地方。