【问题标题】:Git Deploy PHP App to MULTIPLE EC2 NodesGit 将 PHP 应用程序部署到多个 EC2 节点
【发布时间】:2011-07-29 15:02:42
【问题描述】:

我已经阅读了很多关于使用 Git 部署网站的更新后挂钩的文章,但是我不明白这是如何在 EC2 上完成的。

我想使用 EC2 的 Auto Scaling 功能根据我的服务器的 AMI 自动在负载均衡器后面添加微型/小型节点。

我怎样才能做到这一点:

  1. 我的节点在启动时会自动从存储库中获取站点的最新版本

  2. 将更新推送到所有节点(如果可能,立即触发更新),即使是动态添加的节点(因此除了 AMI 已经包含的内容之外没有配置)。

【问题讨论】:

    标签: php git deployment amazon-ec2


    【解决方案1】:

    就自动化工具而言,您可以使用 puppet 或 chef 来完成工作。这些背后的公司也提供托管服务:

    我们个人使用scalarium 来部署我们的服务器并自动扩展它们。

    如果这不是您想要的,例如,您可以编写自己的脚本供 chef 部署到实例上。已经有一个deploy resource 可以很好地与 git 配合使用。我可能会推荐 chef-solo,因为这不需要运行 chef-server(有很多依赖项和需要管理)或类似 littlechef 的东西,它允许你运行 chef-server-like 设置但没有运行 chef-server 的负担。

    例如,目标是设置一个私有 AMI,Amazon 使用它来自动扩展。

    此 AMI 将安装您的服务(HTTP 等)、ruby 和 chef (gem install chef) 以及您需要的任何其他内容,然后运行脚本以进一步设置您的实例并从 GIT 部署代码。

    如果您走这条路,您当然可以使用 AMI 设置任意数量的服务,然后您只需要厨师来部署代码。

    这是一个使用厨师食谱检查 GIT 代码的示例:

    git "/var/www/example.org" do
      repository "git://github.com/yourname/example.git"
      revision "production"
      action :sync
    end
    

    这将从 git 检查您的生产分支。

    由于默认情况下以 root 身份运行,因此您的 deploykey 应该位于 /root/.ssh/id_rsa。您可以在创建私有 AMI 之前执行此操作。您还可以在部署之前从安全位置获取密钥:

    directory "/root/.ssh/" do
      action :create
    end
    
    execute "download my deploy key" do
      command "wget https://secure.location/id_rsa -O /root/.ssh/id_rsa"
      not_if do File.exists?("/root/.ssh/id_rsa") end
    end
    

    (我刚刚输入了这个,我还没有运行它——但我几乎可以肯定它应该可以工作,因为我们在非 EC2 主机上做了非常相似的事情。)

    如果你不运行 chef-server 或 little-chef,我会使用 capistrano 再次执行 chef-solo - 例如检查代码的新版本。 Capistrano 会向实例发送命令(通过 ssh),我可能会为此设置一个使用 ssh 密钥等的无密码帐户。

    如果您需要更多指点,请告诉我!

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2013-05-24
      • 1970-01-01
      • 2020-10-20
      • 2014-07-11
      • 2011-06-28
      • 1970-01-01
      • 2014-10-24
      • 2016-09-29
      相关资源
      最近更新 更多