我正在嘗試爲更新運行在播放框架上的我的web應用程序提供一個最佳工作流程。用於在生產中更新playframework應用程序的最佳工作流程
我使用start
腳本來啓動它,但更新代碼的最佳做法是什麼,以便它儘可能地爲用戶提供無縫接口?
在Apache + PHP應用程序中,通常只需在目錄中放置新的* .php文件就足夠了,並且在許多情況下,更改對用戶來說都不明顯。
你可以分享你的工作流嗎?
我正在嘗試爲更新運行在播放框架上的我的web應用程序提供一個最佳工作流程。用於在生產中更新playframework應用程序的最佳工作流程
我使用start
腳本來啓動它,但更新代碼的最佳做法是什麼,以便它儘可能地爲用戶提供無縫接口?
在Apache + PHP應用程序中,通常只需在目錄中放置新的* .php文件就足夠了,並且在許多情況下,更改對用戶來說都不明顯。
你可以分享你的工作流嗎?
該播放框架與在apache上使用諸如php之類的東西非常不同。 PHP在用戶請求頁面時由Apache解釋。因此,您只需更改文件即可更新網站。然而,使用java(除非你使用.jsp文件,甚至有時候),代碼是經過編譯的,並且web服務器需要在啓動時加載它和它的庫。這意味着只是替換新編譯的文件將不起作用。您需要重新啓動Web容器或重新加載應用程序以獲取更改。對於在重新加載完成的同時嘗試訪問站點的任何用戶而言,這一點總是很明顯的。
您可以將Web服務器(不一定是Apache)指向當前的播放安裝,並將其作爲代理,然後將其並行啓動一個新版本,然後將您的代理Web服務器指向您的新版本並關閉舊版本。這可能是最簡單的方法,可以編寫腳本。
另一種方法是創建一個web應用程序,將用戶重定向到應用程序並進行類似於上面的並行更改。
這兩個選項都需要一些設置和編碼才能使它們無縫工作。然而,這項工作可能是值得的,因爲一旦你將它安裝到生產環境變得非常容易。
您是否閱讀過[Apache作爲前端代理以允許透明升級您的應用程序](http://www.playframework.com/documentation/2.1.0/HTTPServer) - Play文檔中的部分,或者不是你在找什麼? – Aerus
當然這是某種解決方案,但我目前不使用Apache作爲代理。如果這是唯一的選擇,並且只能使用內置的服務器才能完成,那麼我將使用Apache。 – twowo
沒有前端的HTTP服務器,就我所知,你幾乎侷限於:'ctrl' +'d'並重新運行'play start'。爲了使它非常無縫,你需要Apache,Nginx,...但是如果你的應用程序需要很長時間才能編譯,你可以運行一個基本的Play應用程序,在你的其他主應用程序正在編譯時顯示「正在建設中」頁面。 – Aerus