Ruby on Rails应用程序和亚马逊云服务的部署结构

时间:2015-12-04 14:59:38

标签: ruby-on-rails postgresql amazon-web-services deployment

如何组织开发升力循环?

是的,我明白这是一个非常困难的问题;尽管如此,我还是试图找出在数千篇文章/文档等中组织我的开发过程的最佳方法。但是,我害怕可能导致损害的痛苦错误。

有一个项目;我们称之为titan。该项目在Ruby on railspostgresql上作为数据库实施。目前的结构是

[developer]->[dev-server]
             {
             (load-balancer)->app_server_1<---write/read--->Postgresql(master)         
                                                                |
                                                                |replication
                                                                |
                            ->app_server_2<---read.only---->Postgresql(slave)
             }

这是应用程序的预期结构;此应用程序仅适用于开发人员,因此无法从Internet访问。 而在这一点上出现了第一个问题。我打算在亚马逊云服务中部署我的应用程序。

当然,我可以在云中创建虚拟机,复制项目文件,配置我的所有员工,但这需要花费很多时间,而且有时会导致不同的问题和错误。 我想为开发人员(我)创建环境,这将帮助我通过单击按钮部署我的应用程序。

我认为有些软件可以通过部署轻松处理我的任务,但现在我坚持使用它。因此,我认为有适合我的结构

               [amazon]---------{
                  ^      (load-balancer)->app_server_1<---write/read--->Postgresql(master)   |     
                  |                                                        |
                  |                                                        |replication          |
                  |                                                        |
                  |                     ->app_server_2<---read.only---->Postgresql(slave)    |
                  |
                  |    }
                  |(a)
[developer]->[dev-server]
             {
             (load-balancer)->app_server_1<---write/read--->Postgresql(master)         
                                                                |
                                                                |replication
                                                                |
                            ->app_server_2<---read.only---->Postgresql(slave)
             }

(a)点,有许多问题。在这个阶段,我想测试我的应用程序(单元测试),根据亚马逊的服务器配置重新配置,将其状态更改为production,但不是dev。等等。 我希望它应该是一个可以帮助我做到的软件,或者你给我一些有用的提示。

1 个答案:

答案 0 :(得分:1)

在Rails中,development环境旨在在您的计算机(或某种虚拟机)上本地运行,如果需要,您可以在Intranet上共享它,但永远不会使用development运行Rails服务器上的设置,公众可以访问,因为它们可能不安全。您可以将生产服务器镜像到开发环境中,但开发和测试永远不应该连接到您的生产数据库,因为它是一种糟糕且不安全的做法。

如果您想拥有一个可以测试功能并在将其部署到生产环境之前向利益相关者展示的环境,您可以创建所谓的 staging 环境。通常,临时环境在实时数据库的镜像上运行,并具有其他访问控制。

Rails允许您创建任意数量的环境 - 该名称基本上只告诉rails加载/config/environments/{name}.rb以及特定于该环境的gem。

作为工作流程的一部分,您应该已经在使用GIT(或至少某种版本控制)。有很多AWS工具允许您deploy from your Github repository或其他代码托管存储库。