在EC2上部署Rails应用程序

在过去的一周里,我一直在玩橡胶gem,似乎无法让它发挥作用。 我已经决定手动设置我的EC2实例会更容易。 问题是我不知道怎么做。 谷歌也没有为新手提供太多帮助。 有什么建议? 真的很感激。

当然。

  1. 创建AWS账户。

  2. 决定你想要进入哪个地区。很多事情都会进入这个决定,但后来又担心它,只做一个像俄勒冈州或东方那样便宜的地方。

  3. 确保您位于左上角的正确区域。

  4. 然后单击启动服务器。

  5. 此时你必须选择一个AMI。 AMI基本上是您在启动服务器时要使用的模板。 亚马逊给你一些,但社区部分有一吨。 我是CentOS的人,所以我经常搜索CentOS AMI。 RightScale制作了一些好的,所以你可以搜索其中的一个。 确保根据所需服务器的大小选择i386或x64。 有两种不同类型的AMI,EBS支持和S3支持。 你真的应该坚持使用EBS,因为你有更多的自由,但有理由使用超出这个答案范围的两者。 寻找EBS,你可能会很好。 EBS是块存储。 基本上它是可附加的硬盘驱动器为您的实例。 由于云中的所有内容都是“虚拟的”,并且在物理意义上没有任何想法,因此您也必须这样思考。 因此,如果您想要更多存储空间,可以稍后附加一些EBS卷。 但有一件事,当你关闭它时,S3支持的实例再见。 如果您设置了终止标记删除,EBS也将如此,但是对于EBS,您可以“停止”它们以及“终止”它们。

  6. 选择大小和可用区域。 如果您要设置某种冗余,该区域很重要。 就像我有一个MySQL的主从设置一样,我会将主设备放在一个区域,而奴隶放在另一个区域,以防亚马逊遇到与一个区域隔离的麻烦。 但为了这个一般目的,不要担心。

  7. 高级实例选项。 把这一切都留下来,最有可能是好的。 这里你可以设置一些小东西,比如终止保护。

  8. 说出来。 随你。

  9. 制作SSH密钥。 Striaght向前。 登录到Amazon服务器的唯一方法是使用您指定的SSH密钥。 没有用户名或密码。

  10. 安全组。 这是你可以绊倒的地方,在这里和#5。 但是,您应该从创建一般安全组调用foo或其他任何内容开始,然后添加要在其上打开的端口。 因此,如果你想ssh到它,我假设你这样做,然后打开22.如果你想将它用于网络,然后打开80和8080或其他。 不过要小心。 我通常稍后将SSH端口更改为随机的。 而不是把0.0.0.0/0放在上面,我把我的个人IP。 但是,如果你不在乎那么多,只要把0.0.0.0/0和那个坏孩子打开这个世界。

然后它会启动。 只要这一切都按照预期进行。

现在你可以登录了。 只是ssh -i thekey.pem thenwholehostname

希望有所帮助。

您可以使用这整个免费套餐。 http://aws.amazon.com/free/

检查出。 当你玩它时我会用它。

我从记忆中做了所有这些,所以我可能已经离开了。 ;)

如果您想手动执行此操作,chantheman提供了一个很棒的教程。 如果您正在寻找替代方案,您应考虑使用第三方解决方案,如云管理平台,这样可以更轻松地设置EC2实例和部署应用程序。 之前作为chantheman教程中的AMI提供者提到的RightScale就是其中之一,但你也可以看看enStratus和Scalr(免责声明:我在那里工作)。 您需要向他们提供您的AWS凭据,以允许他们代表您进行API调用。

云管理软件将提供一些预先配置的AMI(在Scalr,我们称之为角色)并提供应用程序部署框架(我们写了一篇关于此http://scalr.net/blog/announcements/deployments/的博客文章)。 因此,您将更快地执行步骤2-10。

如果您的预算紧张,RightScale和enStratus有一个免费帐户,而Scalr是开源的,可以在Apache 2许可下使用。

您还应该查看Ubuntu Juju部署选项。

配置Amazon Web Services

https://juju.ubuntu.com/docs/getting-started.html

使用Juju部署您的Rails应用程序

https://juju.ubuntu.com/docs/howto-rails.html

Ruby on Rails魅力的基本用法

使用应用程序的名称及其git位置创建YAML配置文件

sample-app.yaml sample-app: repo: https://github.com/pavelpachkovskij/sample-rails 

部署应用程序和代理:

 juju deploy --config sample-app.yaml rails myapp juju deploy haproxy juju add-relation haproxy myapp 

部署和关联数据库:

 juju deploy postgresql juju add-relation postgresql:db myapp 

现在您可以运行迁移:

 juju ssh myapp/0 run rake db:migrate Seed database juju ssh myapp/0 run rake db:seed 

最后公开代理:

 juju expose haproxy Find the instance's public URL from juju status haproxy 

通过添加和删除单位水平缩放:

 juju add-unit myapp juju remove-unit myapp 

或者使用juju add-unit -n10 myapp进行更大的节点。