【问题标题】:Web (PHP) application deployment strategy [closed]Web(PHP)应用程序部署策略
【发布时间】:2014-07-28 04:01:58
【问题描述】:

我正在考虑 PHP(或任何)Web 应用程序的正确部署策略。

我有版本化代码 (git),其中包含 LESS、非缩小 JavaScript 等源代码。

我认为这是理想的步骤:

  1. 将应用程序构建到/build 目录 - 包括编译 LESS、缩小 JavaScript 等。在构建目录中将准备好部署的一切。
  2. 在 /build 目录中运行其他必要的脚本,例如测试等

完成这些步骤后,我有点困惑下一步该做什么。

整个/build 目录应该被复制到登台/生产服务器,但在我实际构建应用程序之前,我曾经只复制从上次 Git 提交更改的文件。复制所有文件对我来说似乎效率低下。但是版本控制/build 目录似乎也不是正确的事情。

另一种可能性是创建/build 目录,但将已构建和未构建的文件放在一起并进行版本控制似乎太麻烦了。

您如何构建和部署 Web 应用程序?

【问题讨论】:

  • 您可以在每次构建时备份您的构建目录。创建新版本。然后,如果您只想复制这些文件,则可以使用 rsync 或 diff 找出哪些文件已更改,而不是备份构建目录。
  • 我认为这太宽泛了 - 有很多不同的构建方式,取决于您是托管在云还是 VPS 中,您的应用程序有哪些构建步骤等。可能是最好选择一种特定的构建技术,失败了,然后问一个关于问题的具体问题。

标签: php git build continuous-integration


【解决方案1】:

如果您使用 Jenkins/Hudson CI,那么您可以使用不同的发布插件,这些插件可以在成功构建后执行。大多数插件都允许您准确说出您想要发布的内容以及通过什么协议发布。

基本上,您在 Jenkins 上运行完整构建,然后将您的构建文件和工件交付到生产服务器。

查看Publish Over SSHPublish Over FTP。这两个插件都允许您配置“Transfer Set”,如果您取消选中“Clean remote”复选框,那么插件只会发送与您的生产主机不同的文件。

PS:我假设您使用给定标签“持续集成”的某种 CI 服务器

【讨论】:

  • 谢谢,这可以工作,但我认为,这个插件必须通过 FTP 检查每个文件,看看是否有变化(不确定它是否可以删除我上次删除的文件建造)。如果生产服务器上有数千个文件,这可能不是快速解决方案.. 或者是吗?
  • 请放心使用这些插件的无数人,他们是高效的!通过 FTP 发布通过 FTP 获取文件列表并检查大小/修改日期。它还可以在 Jenkins 本地保存信息,以找出应该复制哪些文件,哪些不应该复制(当然,如果远程文件不同步,您可以选择强制完全部署)。
猜你喜欢
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
相关资源
最近更新 更多