Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web(PHP)应用程序部署策略_Php_Git_Build_Continuous Integration - Fatal编程技术网

Web(PHP)应用程序部署策略

Web(PHP)应用程序部署策略,php,git,build,continuous-integration,Php,Git,Build,Continuous Integration,我正在考虑PHP(或任何)web应用程序的正确部署策略 我有版本化代码(git),其中包含源代码,如较少的非精简JavaScript等 我认为这是理想的步骤: 将应用程序编译到/Build目录-包括编译更少、缩小JavaScript和其他。内置目录将为部署做好一切准备 在/build目录中运行其他必要的脚本,如测试等 经过这些步骤后,我有点困惑下一步该做什么 整个/build目录应该复制到staging/production服务器,但在我实际构建应用程序之前,我只复制从上次Git提交更改的文件。

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

我有版本化代码(git),其中包含源代码,如较少的非精简JavaScript等

我认为这是理想的步骤:

  • 将应用程序编译到
    /Build
    目录-包括编译更少、缩小JavaScript和其他。内置目录将为部署做好一切准备
  • 在/build目录中运行其他必要的脚本,如测试等
  • 经过这些步骤后,我有点困惑下一步该做什么

    整个
    /build
    目录应该复制到staging/production服务器,但在我实际构建应用程序之前,我只复制从上次Git提交更改的文件。复制所有文件对我来说似乎效率很低。然而,对
    /build
    目录进行版本控制似乎也不是一件正确的事情

    另一种可能是创建
    /build
    目录,但将生成文件和非生成文件放在一起并进行所有版本控制似乎太混乱了


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

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

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

    看或看。这两个插件都允许您配置“传输集”,如果您取消选中“清除远程”复选框,则插件将只发送与生产主机不同的文件


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

    您可以在每个构建上备份构建目录。创建新的构建。然后,您可以使用rsync或diff来找出哪些文件相对于备份构建目录发生了更改,如果您只想复制这些文件的话。我认为这太宽泛了-有很多不同的构建方法,这取决于您是在云中托管还是在VPS中托管,您的应用程序有哪些构建步骤,等等。选择一种特定的构建技术,失败,然后问一个关于这个问题的特定问题可能会更好。谢谢,这可能有效,但我认为,这个插件必须通过FTP检查每个文件,看看是否有更改(并且不确定它是否可以删除我从上一个构建中删除的文件)。如果生产服务器上有数千个文件,这可能不是快速解决方案。。或者是吗?请放心,使用这些插件的人数不胜数,而且它们是高效的!通过FTP发布通过FTP获取文件列表并检查大小/修改日期。它还可以在本地保存Jenkins上的信息,以确定哪些文件应该复制,哪些不应该(当然,如果远程文件不同步,您可以选择强制完全部署)。