我想以原子方式更新現場網站。如果我們對頁面,圖像和JavaScript進行了一些更改,則所有更改都應同時出現,而不會出現停機,不一致或404錯誤。使用Git原子網站更新
如果我只是將更改後的文件複製到網站目錄中,那麼至少有幾個請求會看到不一致的網站。如果我將新網站複製到一個單獨的目錄中,那麼將舊目錄重命名爲不生產,並重新命名新目錄以使其生效,然後在短時間內我們將獲得404s。
我真的有兩個問題:
我怎樣才能在一個原子的方式更新文件的目錄?
我該如何與Git協調?我們希望使用git pull(或可能推送)進行部署。 git倉庫中的站點路徑與服務器上的路徑不同,因此需要使用git命令或OS命令進行一些移動/重命名。
Capistrano是一個使用符號鏈接自動部署代碼的工具。 – user1158559
這是一個很好的答案。但是,由於瀏覽器可能會請求頁面,網站可能會發生更改,然後頁面可能會請求不再存在的圖像或css文件,但結果不一致的可能性很小。但是在服務器端你無能爲力。 – ccleve
@ccleve如果你想變得很花哨,你可以嘗試將每個Keepalive會話鎖定到單個版本或者使用cookie來玩。 – Zenexer