2008-09-25 40 views
1

這裏是我的情況:爲什麼我的熱部署文件有時會消失? (我認爲Apache吃掉他們)

  • 的Windows Server
  • 阿帕奇
  • CruiseControl的

我的CruiseControl的最後一步部署腳本複製構建Apache的htdocs文件夾,在一個「演示」文件夾(我相信這被稱爲「熱部署」?)

所有是好的和花花公子,除了有時(沒有t通用,但它發生了足夠的錯誤),演示文件夾不包含我建立的文件!舊的不在了,新的不在,只是消失了。

我的直覺是,如果我在網絡上的某個人正在下載文件時嘗試覆蓋文件,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> 

回答

0

Apache將無法刪除該目錄中的內容。腳本中的某些內容將被刪除,這是我的猜測。腳本是否創建了任何類型的備份?也許它會將內容移動到備份文件夾,然後複製構建。

您可以爲該文件夾添加一點安全性以防止其被刪除。也許那時會出現一個錯誤,並給你一個想法,以便方便地刪除該目錄。 :)我的猜測是它的腳本。

+0

嘿hubbardr,我用我的「部署」目標編輯了這個問題。我不會刪除這些文件,我只是複製它們。事實上(這會讓問題發生得更少)。有趣的是,可用的目標永遠不會失敗......我不明白。 – 2008-09-26 08:59:01

1

我會建議在複製新文件之前創建舊文件的備份。使用時間戳命名舊文件以替換它們的時間。這樣做,然後在下次出現故障時查看目錄中的內容,很可能會給您提供下一步要看的內容的線索。

+0

好主意Alex,我會試試看。 – 2008-10-03 19:02:20

0

我認爲這個問題可能在CruiseControl文件的某個地方。最有可能發生的情況是CruiseControl進程正在整理文件,但可能是由於文件鎖定(可能由Apache),無法將文件寫回該文件夾。無論哪種方式,由於「部署」似乎是最後一步,以前的步驟可能會清除該目錄,並且部署無法運行,在步驟結束時將文件夾留空。

相關問題