将内容部署到多个服务器 (EC2)

2023-12-27

我一直在开发基于云 (AWS EC2) 的 PHP Web 应用程序,当涉及到使用多个服务器(全部在 AWS 弹性负载均衡器下)时,我遇到了一个问题。在一台服务器上,当我上传最新文件时,它们会立即在整个应用程序中投入使用。但当使用多个服务器时,情况并非如此——每次提交更改时,您都必须将文件上传到每个服务器。如果您不经常更新任何内容,或者您​​只有一两台服务器,那么这可以正常工作。但是,如果您在一周内跨十台服务器多次更新系统怎么办?

我正在寻找一种从我们的开发或测试服务器“提交”更改并立即将其“推送”到我们所有生产服务器的方法。理想情况下,更新一次仅应用于一台服务器(即使每台服务器只需要一两秒),因此 ELB 在文件更改时不会向其发送流量,以免中断任何可能发生的生产流量。流向ELB。 这样做的最佳方法是什么?我的想法之一是在开发服务器上使用 SVN,但这并没有真正“推送”到服务器。我正在寻找一种只需几秒钟即可提交更新并随后开始将其应用到服务器的流程。另外,对于那些熟悉 AWS 的人来说,使用最新更新来更新 AMI 以便自动缩放程序始终使用最新版本的软件启动新实例的最佳方法是什么?

必须有好的方法来做到这一点……无法真正想象像 Facebook、Google、Apple、Amazon、Twitter 等网站在做出更改时手动逐一检查和更新数百或数千台服务器。

在此先感谢您的帮助。我希望我们能找到解决这个问题的办法……我和我的商业伙伴在最后一天至少进行了 100 次 Google 搜索,结果证明大部分都未能成功解决这个问题。

Alex


我们使用 scalr.net 来管理我们的 Web 服务器和负载均衡器实例。到目前为止效果都很好。我们为每个环境都有一个服务器场(2 个生产场、暂存场、沙箱)。我们为 Web 服务器预先配置了角色,因此在需要时打开新实例和扩展非常容易。 Web 服务器启动时从 github 提取代码。

我们还没有完成我们想要做的所有部署更改,但基本上以下是我们将新版本部署到生产环境中的方式:

  1. 我们使用 phing 来更新每个 Web 服务上的源代码和部署。我们创建了一个执行 git pull 并运行数据库更改的任务(dbdeploy phing 任务)。http://www.phing.info/trac/ http://www.phing.info/trac/
  2. 我们编写了一个执行 phing 的 shell 脚本,并将其作为脚本添加到 scalr 中。 Scalr 有一个很好的界面来管理脚本。

    #!/bin/sh
    
    cd /var/www
    phing -f /var/www/build.xml -Denvironment=production deploy
    
  3. scalr 可以选择在特定场中的所有实例上执行脚本,因此每个版本我们只需推送到 github 中的 master 分支并执行 scalr 脚本。

我们想要创建一个 github hook,当我们推送到 master 分支时它会自动部署。 Scalr 有可以执行脚本的 api,所以这是可能的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将内容部署到多个服务器 (EC2) 的相关文章

  • Symfony 2 中实体管理器和 phpunit 的问题

    我的 phpunit 中的实体管理器有问题 这是我的测试 public function testValidChangeEmail client self createAuthClient user password crawler cli
  • Codeigniter查看和回显

    我有一个在 codeigniter 中处理网页侧栏的函数 如下 function process sidebar this gt load gt view first access 1 this gt load gt view second
  • 在关联数组中查找重复值并将它们添加到计数中

    您好 我正在尝试计算关联数组中重复值的数量 如下所示 array 3 0 gt array 3 Title gt string 25 hello Price gt int 50 Count gt int 1 1 gt array 3 Tit
  • 如何替换每隔一个的空白?

    我想用 替换每个第二个空格 using preg replace 并输入这样的字符串 string a b c d e f g h i 应该会产生如下输出 a b c d e f g h i thanks 您可以组合使用explode ht
  • Web 服务器和 servlet 容器之间的区别

    Web 服务器 和 Servlet 容器 有什么区别 一般来说 所有 Web 服务器也是 Servlet Web 容器 反之亦然吗 我一直在使用 Apache Tomcat for JSP 和 Apache for PHP 但无法弄清楚这两
  • JMeter 负载服务器会影响我的结果吗?

    我正在使用亚马逊 EC2 实例 大型 作为使用 1 000 个线程的负载服务器来运行 JMeter 测试 负载服务器CPU利用率稳定在90 左右 内存利用率稳定在70 是否存在关于负载服务器在什么时候没有足够资源 内存或 CPU 而导致负载
  • 无法将外键值插入链接表

    我目前正在尝试将数据插入名为的表中 客户报价 该表充当 顾客 表和 客户关税 桌子 它还记录通过以下方式提交数据的用户 user table 这是我的数据库的架构 https i stack imgur com gyCdb png http
  • 如何使用 PHP 向用户发送每日电子邮件通知?

    我有一个简单的用户注册表单 其中有一个复选框 如果用户的任何项目有活动 用户可以每天收到电子邮件通知 就像 Stack Overflow 有一个 通知 电子邮件受保护 cdn cgi l email protection每天都有新的答案 我
  • 如何在javascript中显示目录中的所有图像?

    我想在 javascript 的帮助下动态显示目录中的所有图像 我怎样才能做到这一点 我不认为这是可能的 但如果您向 ASP NET 或 PHP 或类似 页面发出 AJAX 请求 它们可以列出文件夹中的文件并将其返回以供 Javascrip
  • 在 PHP 中扩展单例

    我正在使用一个 Web 应用程序框架 其中一部分由许多服务组成 所有服务均以单例形式实现 它们都扩展了一个 Service 类 其中实现了单例行为 如下所示 class Service protected static instance p
  • 导出具有高质量图像的画布的最佳实践是什么?

    我需要你的帮助 我解释一下我的情况 我正在使用 Fabric js 库在我的应用程序中放置形状 文本等 我的画布尺寸为 1000x1000 像素 约 26 45x26 45 厘米 我有一个图像上传脚本 仅用于上传高质量图像 例如 300 d
  • PHP 中的 JS charCodeAt 等效项(具有完整的 unicode 和 emoji 兼容性)

    我在 JS 中有一个简单的代码 如果涉及特殊字符 我无法在 PHP 中复制它 这是 JS 代码 参见JSFiddle https jsfiddle net h8oca3qg 5 用于输出 var str t char t and speci
  • PHP 中的基本 URL

    我有一个两难的困境 它已经困扰我很长一段时间了 我有一个本地测试服务器 其设置如下 127 0 0 1 我的网站在离线模式下如下所示 127 0 0 1 websitename index php 我的网站实时版本如下所示 websiten
  • 会话劫持和 PHP

    让我们只考虑服务器对用户的信任 会话固定 为了避免我使用的固定session regenerate id 仅在身份验证中 login php 会话侧劫持 整个站点的 SSL 加密 我安全吗 阅读 OWASPA3 破坏的身份验证和会话管理 h
  • php 发送带有图像的电子邮件

    我正在尝试发送一封带有图片的电子邮件 我的电子邮件正文是 当我收到电子邮件时 我看不到图片 相反 我 看 img src http planet earth bogus us icons secret pictures gif 我知道这是因
  • 每 n 个字符后插入连字符,末尾不添加连字符

    我在用着chunk split 每第四个字母后添加一个 但它也会在字符串末尾添加一个 这是我不想要的 代码如下 function GenerateKey input generated strtoupper md5 input uniqid
  • PHP:在执行 php 脚本时显示“正在加载”页面

    这就是我现在所拥有的 我有一个网页 当访问该网页时 它会通过开放 API 连接到 Surveygizmo com 检索大量数据 然后将这些数据返回给我进行处理 此过程大约需要 10 12 秒 在执行时 页面只是处于 正在加载 状态 并且我会
  • SQL 未插入到 Yii 中具有关系的表中

    我正在尝试创建一个用户 但所有值都没有插入到数据库中 Systems user 表与partys 表有关系 因为party id 是sytems user 的主键 没有插入任何内容 甚至没有错误 它只是返回到 创建 页面 这是我的架构 Ta
  • POST 之后在 PHP 中设置 Location 标头时避免 HTTP 302 响应代码

    我需要放一个201 CreatedPOST 请求的响应代码和 Location 标头 但由于某种原因我仍然收到 302 响应 这就是我所拥有的 header HTTP 1 1 201 header Location The new reso
  • 带缓存的简约 PHP 模板引擎,但不带 Smarty?

    有大量的问题 https stackoverflow com search q php template engine cache寻找 正确的 PHP 模板引擎 但它们都不专注于缓存 有谁知道一个轻量级 高质量 基于 PHP 5 的模板引擎

随机推荐

  • 使用 URL swift Alamofire 上传视频

    我需要使用 alamofire 将视频上传到服务器 用户选择视频 我在 didFinishPickingMediaWithInfo 中成功获取 URL 如下所示 func imagePickerController picker UIIma
  • 如何导入无法识别的日期时间格式的 CSV?

    该表如下所示 CREATE TABLE dbo temptable id nvarchar 50 COLLATE SQL Latin1 General CP1 CI AS NOT NULL datetime datetime NOT NUL
  • 合并 PDF 文件

    是否可以使用 Python 合并单独的 PDF 文件 假设是这样 我需要进一步扩展一下 我希望循环遍历目录中的文件夹并重复此过程 我可能会碰碰运气 但是否有可能排除每个 PDF 中包含的页面 我的报告生成总是会创建一个额外的空白页面 您可以
  • 使用 Scala 和 SBT 设置 IntelliJ

    我正在尝试使用 scala 和 sbt 设置 intellij 进行开发 我已经在 IDE 上安装了 scala 和 SBT 插件 但是 当我尝试创建新的 scala 和 sbt 项目时 build sbt 文件显示以下错误 Cannot
  • Jmeter:使用带变量的 jmeter Junit 请求

    正如我在问题中所说 是否可以将 jmeter 变量 通过 J 传递 传递到JUnit Request为了它可以在 junit 测试内部使用 听起来可行Apache Junit 请求文档 http jmeter apache org user
  • Android 填充Webview内容时底部白色条纹

    将 HTML 加载到 Web 视图后 我会在布局的右侧和底部看到一条白色条纹 对于正确的 我使用以下方法解决了它 setScrollBarStyle WebView SCROLLBARS INSIDE OVERLAY 然而 我尝试了很多方法
  • 如何使用 dplyr::filter() 仅返回值包含一个或多个给定字符串向量的行?

    我有一个包含一列字符串的数据框 我想使用 filter 或另一个可管道函数 仅返回包含字符串的行 这些字符串包含另一个字符串向量中的任何值 我已经查看了以前的问题和答案 但找不到任何我正在寻找的东西 例如 title lt c apple
  • .Net WebClient 类中的curl -u 等效项

    这个问题解释了一切 但这里有更多信息 我正在尝试将 4sq api 与 C 一起使用 并且需要在每个请求中发送用户名密码对 API 文档说 curl u user pass 可以完成这项工作 但我如何使用 WebClient 来完成这项工作
  • 将 Web 服务器升级到 .net Framework 4.6.1 时,与远程 SQL 服务器的连接中断

    我们目前正在努力将我们的 asp net Web 应用程序 托管在 IIS 7 5 上 从 net Framework v4 5 更新到 v4 6 1 在 SQL Server 与 IIS 运行在同一机器上的小型较低环境 本地开发中 此更新
  • 为 SQL Compact 4 设置 EF4 数据源

    我已经使用 vs 工具安装了 Visual Studio 2010 SP1 EF 4 1 SQL Compact 4 0 一切看起来都很好 除了我无法通过向导使用 SQL Compact 4 作为实体框架的数据源 唯一的替代方案是 SQL
  • 并发修改异常? [复制]

    这个问题在这里已经有答案了 我试图按开始时间对时间跨度列表 表示为具有开始时间和结束时间的 Time 数组 进行排序 我正在尝试使用以下嵌套循环来执行此操作 for Time span workingList Time compareTo
  • 配置 cobertura 以忽略某些代码块

    是否可以使用 Cobertura 告诉它忽略由开始和结束注释标识的某些代码位 例如 public class Foo public void static doSomething Cobertura Ignore Start Cobertu
  • 0x80020101代表什么?

    一个简单的问题 我在微软的错误查找或轻松使用谷歌中找不到答案 HRESULT 0x80020101 代表什么 http support microsoft com kb 247784 http support microsoft com k
  • 从scala并行收集到常规收集的转换

    我正在尝试从并行集合转换回常规地图 根据 api 如果我在任何适当定义的并行集合上调用 toMap 它应该返回一个标准 Map 但它会通过可迭代的扁平集合返回 ParMap I have a val task Stream Future I
  • 在哪里存储密码?

    我正在编写一个 Android 密码管理器应用程序 我想将主密码存储在某个地方 但我不知道在哪里 我是否应该使用我选择的硬编码密码对用户提供的主密码进行加密 然后将其存储到数据库中 或者我应该做点别的什么 您永远不应该存储未加密的密码 对于
  • 默认加载哪些 ruby​​ 模块?

    直到最近 我还认为所有标准模块 那些可以在http ruby doc org stdlib http ruby doc org stdlib 默认情况下不加载 也就是说 您必须要求您将要使用的每一个 但从内容来看 确实有一些是被加载的 LO
  • 删除网格视图选项

    如何删除 显示分组依据框 和 删除此列 GridView菜单 当我去参加活动时 没有 ShowGridMenu 事件 所以对我不起作用 Use the GridView PopupMenuShowing http documentation
  • Powershell:无法与 .Net 程序集中存储的表单交互

    我只是想学习这个东西 并且将来想在我的一个项目中使用它 我有一个带有简单文本框的小表单 存储在 Net dll C 中 这是我在这个 dll 中的类 其中包含与此表单交互的方法 using System using System Colle
  • 按 HSV/HSB 对颜色列表进行排序

    我希望按 HSV HSB 值对很长的颜色列表进行排序 我想按色调 周六 亮度对它们进行排序 实际上 我需要的是一种方法来根据 HSV 的顺序判断一种颜色是出现在 之前 还是 之后 因为我只是要在 Java 中创建一个compareTo 并使
  • 将内容部署到多个服务器 (EC2)

    我一直在开发基于云 AWS EC2 的 PHP Web 应用程序 当涉及到使用多个服务器 全部在 AWS 弹性负载均衡器下 时 我遇到了一个问题 在一台服务器上 当我上传最新文件时 它们会立即在整个应用程序中投入使用 但当使用多个服务器时