在Apache

时间:2016-04-19 21:11:19

标签: java eclipse deployment playframework

我正在寻找一种在端口80上部署Play-Framework-1.0应用程序的方法。 所以首先我用'dist'命令制作了zip文件,然后解压缩它。 当我运行命令来启动应用程序(play-java-1.0-SNAPSHOT/bin/play-java -Dhttp.port=80 -Dhttp.adresse=127.0.0.1)时,我收到此错误:

[error] p.c.s.NettyServer - Failed to listen for HTTP on /0.0.0.0:80!
Oops, cannot start the server.
play.core.server.ServerListenException: Failed to listen for HTTP on /0.0.0.0:80!
at play.core.server.NettyServer.play$core$server$NettyServer$$bindChannel(NettyServer.scala:215)
at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:203)
at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:203)
at scala.Option.map(Option.scala:146)
at play.core.server.NettyServer.<init>(NettyServer.scala:203)
at play.core.server.NettyServerProvider.createServer(NettyServer.scala:266)
at play.core.server.NettyServerProvider.createServer(NettyServer.scala:265)
at play.core.server.ServerProvider$class.createServer(ServerProvider.scala:25)
at play.core.server.NettyServerProvider.createServer(NettyServer.scala:265)
at play.core.server.ProdServerStart$.start(ProdServerStart.scala:53)
at play.core.server.ProdServerStart$.main(ProdServerStart.scala:22)
at play.core.server.ProdServerStart.main(ProdServerStart.scala)

此外,在真实服务器中,已经安装了Apache。所以我想知道,这是否会成为一个问题。

谢谢!

3 个答案:

答案 0 :(得分:2)

或者,还要记住,在大多数系统上,默认情况下禁用低于8000端口的运行进程,在这种情况下,您需要允许它,即在Unix服务器上,只使用sudo命令(前缀)。

答案 1 :(得分:1)

在同一端口上监听同一端口上的两个进程是不可能的。

但是,您可以在不同的端口上运行Play应用程序,例如8080并将Apache设置为反向代理(Nginx也会这样做,但你提到你已经在服务器上运行了Apache)将请求转发到你的Play应用程序。

示例指南如何做到这一点: https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

答案 2 :(得分:1)

如果您使用的是Linux服务器,可以尝试fuser 80/tcp&#39;查看另一个进程是否已在该端口上运行(80)。如果是这样(当您输入命令时显示进程ID),则不能对2个进程使用相同的端口。

要么你必须在另一个端口启动Play-app,要么你可以通过&#39; sudo fuser -k 80/tcp&#39;来杀死已经运行的进程。并在同一个端口启动Play-app(80)。