2012-09-16 50 views
3

我們使用PHP和Java開發了各種應用程序。我們使用apache和tomcat。因此,當我們重新啓動系統時,一旦apache啓動,PHP應用程序就會啓動,一旦tomcat啓動,Java應用程序就會啓動。我不確定在Play框架中處理這個問題的最好方法是什麼(假設我們有10多個Play應用程序)。當然,單獨啓動每個應用程序並不是正確的解決方案。我們可以編寫一些啓動腳本,在重啓後啓動每個應用程序。但我很想知道開發者如何使用ROR和Django等其他類似的框架來處理這種情況。有沒有這方面的工具?任何可用於Play應用程序的工具?管理在Play框架中開發的多個應用程序

回答

1

如果你在Ubuntu上託管你可能是最好的服務封堵初始化腳本(this is a decent start)對於每個應用程序,這樣,他們將與機器啓動。

或者https://github.com/dlecan/play2-war-plugin看起來會讓你發送播放2個應用程序到一個WAR文件中,你可以在Tomcat中部署:在Play 2系列中對WAR部署的核心支持不會預定到2.1版,所以你可能不會能夠得到那個工作。播放1原生支持它:只是去

play war myapp -o myapp.war 
+0

感謝您的意見。我知道戰爭的解決方案。但Play框架開發人員建議使用內置服務器以獲得更好的性能。 Init腳本是另一種解決方案(我在文章中也提到過)。但我仍然覺得必須有更好的辦法。這就是爲什麼我想知道它是如何在ROR或Django世界中完成的。 – Steve

4

部署WAR包有一些缺點,我不能討論有關性能,但你可以在WAR plugin兼容性列表看到仍然有一些不支持的功能。所以戰爭應該被看作是最後一個選項(如果沒有其他可用)

目前,我有一組相同的,PHP網站通過Apache +獨立播放應用程序的工作。當然,他們都需要在默認網絡端口(80)上的自定義域/子域上可用。

非常籠統:我們正在將應用程序部署在專用IP上,前端通過nginx服務器進行控制,以實現代理目的和負載平衡。得益於此,我們甚至可以在服務器上以開發模式啓動應用程序,並且可以在其域中使用它。當然,如果你沒有額外的IP地址,你也可以使用Apache作爲代理,但據我所知nginxlighthttpd只是這個任務更快。

您可以找到Set-up a front-end server文檔的更多細節。

現在,使用一些簡單的bash腳本和git鉤子,您可以在遠程計算機上準備和部署應用程序,而無需重新發送整個程序包(其大小約爲50mb,適用於小型應用程序)。與Heroku部署類似,您應該只將應用代碼推送到您的服務器,然後使用鉤子和腳本應該準備dist包(more about dist)並在某個定義的端口上運行它,這將通過前面提到的代理提供。

當然開始通過Play的控制檯應用程序是在生產ENV內存不必要的浪費。

有關如何在服務器啓動時啓動Play應用程序的示例,因此您可能會根據您的計算機找到一些提示。

據我所知這是目前最優化的場景

相關問題