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

时间:2009-02-19 14:51:56

标签: ruby-on-rails web-applications staging

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

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

5 个答案:

答案 0 :(得分:15)

便宜又轻松的回答:

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基本身份验证 - 便宜又简单。

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

请注意,如果他们向您发送入站请求,这可能会使您与该付款网站的连接失效,尽管这很简单,只需关闭相应的控制器的on_filter和/或动作。)

更好的回答:

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

2)点staging.domainname.com吧。

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

要考虑的事情:

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

2)我是否应该在登台系统和生产系统之间移动数据?

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

答案 1 :(得分:4)

我想补充一点,制作Capistrano的Jamis Buck也创造了一个专门用于建立Capistrano多阶段环境的宝石。你可以在没有宝石的情况下做到这一点,但宝石使它更容易。您可以在此处找到他的帖子:http://weblog.jamisbuck.org/2007/7/23/capistrano-multistage

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

StackOverflow不允许我添加其他链接,但如果您使用谷歌高级Rails食谱,这本书是第一个结果。

答案 2 :(得分:3)

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

答案 3 :(得分:3)

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

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

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

答案 4 :(得分:1)

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

解决您的暂停 - 不同步问题和一阶扩展问题。

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