代码之家  ›  专栏  ›  技术社区  ›  fig

Web应用登台服务器的最佳实践(预算内)【已关闭】

  •  17
  • fig  · 技术社区  · 16 年前

    我想为Rails应用程序设置一个临时服务器。我使用Git&GitHub、Cap,并有一个带有Apache/Passenger的VPS。我很好奇登台设置的最佳实践,包括登台服务器的配置以及与之交互的过程。我知道它应该尽可能地与生产服务器相同,但是限制对它的公开访问将限制这一点,因此,关于仅为我的使用而保护它的提示也很好。

    另一个具体的问题是,我是否可以在VPS上创建一个虚拟主机,以便登台服务器可以与生产服务器共存。不过,我有一种感觉,也许有理由避免这样做。

    5 回复  |  直到 11 年前
        1
  •  15
  •   Patrick McKenzie    16 年前

    简单而便宜的答案:

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

    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
    

    请注意,如果他们向您发出入站请求,这可能会中断您与该支付站点的连接。 尽管这很容易修复(只需为适当的控制器和/或操作关闭before_过滤器)。

    更好的答案:

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

    2)指向staging.domainname.com。

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

    需要考虑的事项:

    1)我也应该有一个临时数据库吗?很可能,尤其是当您要测试模式更改时。

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

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

        2
  •  4
  •   MikeH    15 年前

    我还想补充一点,创建Capistrano的JamisBuck还专门为创建Capistrano的多阶段环境创建了一个gem。没有宝石你也能做到,但是宝石使它更容易。你可以在上面找到他的帖子,上面有说明: http://weblog.jamisbuck.org/2007/7/23/capistrano-multistage

    在实用的程序员手册“高级Rails食谱”中还有一篇非常有用的文章,它将指导您正确地设置这一点。我发现这篇文章的答案,再加上Rails的食谱书,使得设置起来非常容易。

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

        3
  •  3
  •   scottd    16 年前

    我想这取决于除了您以外的任何人是否需要访问登台服务器。如果其他人需要访问它,那么您需要在某个地方使用另一小块,然后您可以使用htaccess或防火墙规则来限制谁可以访问它。如果没有其他人需要访问它,我建议使用vmware。您可以在您自己的机器上运行它,或者在您周围的一个备用箱中运行它,或者在一台非常便宜的PC上运行它。我们使用免费的VMware Server 2作为我们的登台和部署测试服务器,它工作得很好。它还可以很容易地通过复制基本的虚拟机设置来创建新的测试服务器。如果你在Mac上,你可以使用vmware fusion,成本很高,但我必须使用它来测试IE。

        4
  •  3
  •   Ian Terrell    16 年前

    我可能会因为这样说而受到批评,但是对于预算紧张的小站点,我认为在生产站点旁边运行临时站点没有什么错。

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

    当然,它们之间并没有完全隔离。你可能会把一切都撞毁。哎呀!可能没关系。:)

        5
  •  1
  •   womble    16 年前

    使用两个独立的服务器(VP或其他类似的服务器),使它们(硬件和软件)位于基本映像。自动化 全部的 配置您的生产环境,所以不需要手动操作。使用该自动化生成与生产环境相同的临时服务器。保持自动化,以确保两个环境保持同步,并可按需复制。

    解决了分段不同步问题和一阶缩放问题。

    就成本而言,vpse和芯片一样便宜。通过使用临时服务器避免的导致生产停机的故障数量将在短时间内为您的临时环境支付费用(除非您实际上根本没有赚到任何钱,在这种情况下,停机并不是一个很大的问题,您可能会因为停机而发疯)。