Web App临时服务器的最佳实践(按预算计算)

我想为Rails应用程序设置一个临时服务器。 我使用git&github,Cap,并使用Apache / Passenger的VPS。 我对暂存设置的最佳实践很感兴趣,就登台服务器的配置以及与之交互的过程而言。 我知道它应尽可能与生产服务器完全相同,但限制公共访问权限会限制它,因此仅为我的使用保护它的提示也会很棒。

另一个具体问题是我是否可以在VPS上创建虚拟主机,以便登台服务器可以与生产服务器一起驻留。 我觉得可能有理由避免这种情况。

便宜又轻松的回答:

1)在您的VPS上指向staging.domainname.com。

2)添加虚拟主机以进行暂存,指向应用程序的暂存副本。

3)添加暂存环境设置。 (你知道你可以在Rails中定义新的环境吗?有趣的东西!)我认为这就像将production.rb复制到staging.rb并根据需要进行调整一样简单,再加上更新database.yml。

4)在ActionController中,添加类似于以下内容的代码

if (ENV["RAILS_ENV"] == "staging") before_filter :verifies_admin end 

其中verifies_admin可以是您想要的任何内容。 我建议使用HTTP基本身份validation – 便宜又简单。

 def verifies_admin authenticate_or_request_with_http_basic do |username, password| username == "foo" && password == "bar" end end 

请注意,如果他们向您发出入站请求,这可能会使您与该付款站点的连接变得很困难 ,尽管这很简单(只需关闭适当控制器和/或操作的before_filter)。

更好的答案:

1)购买与常规VPS相同的图像配置的第二个VPS,和/或从相同的裸机安装脚本配置(我喜欢Capistrano和Deprec)。

2)点staging.domainname.com。

3)否则与其他选项相同。

需要考虑的事情:

1)我是否应该有一个临时数据库? 可能,特别是如果您要测试架构更改。

2)我是否应该有一些在分段和生产系统之间移动数据的工具?

3)我的暂存应用程序的灾难性故障会导致主要应用程序崩溃吗? 最好希望答案是否定的。

我想补充一点,制作Capistrano的Jamis Buck也创造了一个专门用于建立Capistrano多阶段环境的gem。 你可以在没有gem的情况下做到这一点,但gem让它变得更加容易。 你可以在这里找到他的post和说明: http : //weblog.jamisbuck.org/2007/7/23/capistrano-multistage

在Pragmatic Programmer的书“Advanced Rails Recipes”中还有一篇非常有用的文章,它将引导您完成如何设置它。 我发现这篇文章的答案与Rails Recipes的书籍相结合,使得设置非常容易。

StackOverflow不会让我添加另一个链接,但如果你谷歌高级Rails食谱,这本书是第一个结果。

我想这取决于除了你以外的任何人都可以访问登台服务器。 如果其他人需要能够访问它,那么您需要在某处使用另一个小片,然后您可以使用htaccess或防火墙规则来限制谁可以访问它。 如果没有其他人需要访问它,我建议使用VMWare。 您可以在自己的机器上运行它,也可以在自己的备用盒子或非常便宜的PC上运行它。 我们将免费的VMWare Server 2用于我们的登台和部署测试服务器,它运行良好。 它还可以通过复制基本VM设置轻松创建新的测试服务器。 如果你在Mac上,你可以使用VMWare Fusion,花钱,但我必须使用它来测试IE。

我可能会因为这个问题而被枪毙,但对于预算紧张的小型网站,我认为在生产过程中运行暂存网站并没有错。

您正在使用Rails,Apache和Passenger。 设置不同的Rails配置(和数据库),并将每个配置设置为命名的VirtualHost。 用htaccess保护一个。 从您的域创建A记录(登台。*)并将其指向那里。

当然,它们并没有完全相互隔离。 你可能会崩溃一切。 哎呀! 这可能没关系。 🙂

使用两个单独的服务器(VPS或其他),就像在基本映像上使用它们(硬件和软件)一样。 自动化生产环境的所有配置,因此无需手动完成任何操作。 使用该自动化生成与您的生产环境相同的登台服务器。 保持自动化以确保两个环境保持同步并可按需复制。

解决了分阶段失步问题和一阶扩展问题。

就成本而言,VPS与芯片一样便宜。 通过使用临时服务器可以避免的生产停机时间导致的故障数量将立即为您的暂存环境付费(除非您实际上根本没有赚钱,在这种情况下,停机时间不是很多问题,你可以坚持破碎)。