2011-06-26 214 views
13

在命令play run之後,Play如何作爲機器上的主機啓動?它在幕後運行apache,tomcat還是這樣?部署Play!框架應用程序

如果我想讓我的應用程序(使用play!框架構建)託管在例如apache上,是否會變得很容易?

+1

正如答案中提到的,play可以與apache setup一起用作反向代理(請參閱將您的應用程序投入製作),或者作爲Play!中包含的netty服務器獨立運行。如果答案滿足您的問題,請接受其中一個答案。 – emt14

回答

11

播放通常使用自己的服務器,play.server.Server類運行。通過另一臺服務器(如Apache)訪問Play應用程序的速度永遠不會比直接訪問Play服務器的速度更快,但如果由於其他原因想要這樣做,請參閱Put your application in production

+0

如何使用我的Java/Scala代碼調用此服務器? (不使用Play) – Jus12

14

它在幕後運行netty。如果你想舉辦它在如Tomcat或Jetty servlet容器,只要做到這一點,從您的項目文件夾:

play war -o /tmp 

,你會看到在/tmp文件夾項目的war文件。將它貼在Tomcat或Jetty的webapps文件夾下,你應該很好。您可以像使用任何此類設置一樣使用Apache/httpd對servlet容器進行前端處理(即,來自Playframework的戰爭對前端部分沒有任何影響)。

5

爲了清晰起見,截至play2,不再有任何官方支持將您的項目打包爲戰爭文件,而且看起來支持將不久將會回來。

Play2現在帶有基於Netty的自己的網絡服務器,並且您可以使用「play stage」打包項目並使用「target/start」命令將其運行到位。

如果您打算在未安裝Play2的服務器上託管您的項目,請首先使用「sbt compile stage」命令,它將爲您捆綁必要的依賴關係。

然而,如果您仍然有興趣部署到Servlet 3.0或2.5容器(Tomcat 6/7,Jetty 7/8/9,JBoss 5/6/etc),我還沒有親自使用過這個功能,但在https://github.com/dlecan/play2-war-plugin上有非官方的努力但我已經聽到了好消息。

相關問題