gpt4 book ai didi

php - Git 将 PHP 应用程序部署到多个 EC2 节点

转载 作者:可可西里 更新时间:2023-11-01 12:36:37 24 4
gpt4 key购买 nike

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

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

我怎样才能做到这一点:

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

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

最佳答案

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

我们个人使用 scalarium部署我们的服务器并自动缩放它们。

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

例如,目标是设置一个私有(private) AMI,供 Amazon 用于自动缩放。

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

如果您沿着这条路走下去,您当然可以根据需要使用 AMI 设置尽可能多的服务,然后您只需要 chef 来部署代码。

这是一个使用厨师食谱从 GIT check out 代码的示例:

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

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

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

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 key 等设置无密码帐户。

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

关于php - Git 将 PHP 应用程序部署到多个 EC2 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5546540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com