在EC2上部署Rails应用程序
在过去的一周里,我一直在玩橡胶gem,似乎无法让它发挥作用。 我已经决定手动设置我的EC2实例会更容易。 问题是我不知道怎么做。 谷歌也没有为新手提供太多帮助。 有什么建议? 真的很感激。
当然。
-
创建AWS账户。
-
决定你想要进入哪个地区。很多事情都会进入这个决定,但后来又担心它,只做一个像俄勒冈州或东方那样便宜的地方。
-
确保您位于左上角的正确区域。
-
然后单击启动服务器。
-
此时你必须选择一个AMI。 AMI基本上是您在启动服务器时要使用的模板。 亚马逊给你一些,但社区部分有一吨。 我是CentOS的人,所以我经常搜索CentOS AMI。 RightScale制作了一些好的,所以你可以搜索其中的一个。 确保根据所需服务器的大小选择i386或x64。 有两种不同类型的AMI,EBS支持和S3支持。 你真的应该坚持使用EBS,因为你有更多的自由,但有理由使用超出这个答案范围的两者。 寻找EBS,你可能会很好。 EBS是块存储。 基本上它是可附加的硬盘驱动器为您的实例。 由于云中的所有内容都是“虚拟的”,并且在物理意义上没有任何想法,因此您也必须这样思考。 因此,如果您想要更多存储空间,可以稍后附加一些EBS卷。 但有一件事,当你关闭它时,S3支持的实例再见。 如果您设置了终止标记删除,EBS也将如此,但是对于EBS,您可以“停止”它们以及“终止”它们。
-
选择大小和可用区域。 如果您要设置某种冗余,该区域很重要。 就像我有一个MySQL的主从设置一样,我会将主设备放在一个区域,而奴隶放在另一个区域,以防亚马逊遇到与一个区域隔离的麻烦。 但为了这个一般目的,不要担心。
-
高级实例选项。 把这一切都留下来,最有可能是好的。 这里你可以设置一些小东西,比如终止保护。
-
说出来。 随你。
-
制作SSH密钥。 Striaght向前。 登录到Amazon服务器的唯一方法是使用您指定的SSH密钥。 没有用户名或密码。
-
安全组。 这是你可以绊倒的地方,在这里和#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进行更大的节点。
- 缺少必需的参数:ras测试中的aws_access_key_id,aws_secret_access_key
- 如何枚举运行ec2实例并使用ruby将它们加载到数据库中?
- 无法使用HMAC SHA256从示例中重现AWS签名
- Rails:如何从哈希中提取值? (亚马逊API /真空吸尘器)
- ruby:没有这样的文件加载 – 运行cap rubber时的ubygems(LoadError):create_staging
- AWS Elastic Beanstalk中的worker“dyno”
- Mechanical Turk教程或操作指南
- 与ror托管错误
- 如何在Amazon Elastic Beanstalk上部署rails项目时自动重启delayed_job?