为什么有时我的热部署文件消失了? (我认为阿帕奇吃了它们)
时间:2020-03-06 14:42:28 来源:igfitidea点击:
这是我的情况:
- Windows服务器
- 阿帕奇
- 巡航控制
我的CruiseControl部署脚本的最后一步将内部版本复制到Apache的htdocs文件夹中的" demos"文件夹中(我相信这被称为"热部署"吗?)
一切都很好,很花花公子,除了有时(不常见,但发生的次数足以使我烦恼),demos文件夹不包含我构建的文件!旧的消失了,新的消失了,只是消失了。
我的直觉是,如果在网络上有人下载文件时尝试覆盖文件,Apache会在下载完成后将其删除吗?我不知道,这没有任何意义。
我到处看,甚至都找不到提示...让我们看看这个StackOverflow社区到底有多棒! :)
这是我的ANT脚本中的"部署"目标:
<target name="deploy" depends="revertVersionFile"> <copy todir="${deploy.dir}"> <fileset dir="${bin.dir}"/> </copy> <copy todir="${deploy.dir}"> <fileset dir="${bin.dir}"/> </copy> <available file="${deploy.dir}/MockupsLive.swf" property="mockupsFile"/> <fail unless="mockupsFile" message="MockupsLive doesn't exist!"/> <available file="${deploy.dir}/skins/sketch/sketch.swf" property="skinFile"/> <fail unless="skinFile" message="sketch.swf doesn't exist!"/> </target>
解决方案
Apache不会删除目录的内容。脚本中有一些内容正在删除,这是我的猜测。脚本是否创建任何形式的备份?也许它将内容移动到备份文件夹,然后复制构建。
我们可以为该文件夹添加一些安全性,以防止其被删除。也许然后某个地方会弹出一个错误,让我们对方便删除目录的方式有所了解。 :)我的猜测是它在脚本中。
我建议在复制新文件之前创建旧文件的备份。将旧文件命名为带有时间戳记的替换时间。这样做,然后在下次失败时查看目录中的内容,很可能会为我们提供下一步的提示。
我认为问题可能出在CruiseControl文件中。最有可能发生的事情是CruiseControl进程正在整理文件的某个位置,但是可能由于文件的锁定(可能是由Apache锁定)而无法将文件写回到该文件夹中。
无论哪种方式,由于"部署"似乎是最后一步,因此之前的步骤可能会清除目录,并且部署无法运行,因此在步骤结束时将文件夹保留为空。