我正在寻找一种在端口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。所以我想知道,这是否会成为一个问题。
谢谢!
答案 0 :(得分:2)
或者,还要记住,在大多数系统上,默认情况下禁用低于8000端口的运行进程,在这种情况下,您需要允许它,即在Unix服务器上,只使用sudo
命令(前缀)。
答案 1 :(得分:1)
在同一端口上监听同一端口上的两个进程是不可能的。
但是,您可以在不同的端口上运行Play应用程序,例如8080并将Apache设置为反向代理(Nginx也会这样做,但你提到你已经在服务器上运行了Apache)将请求转发到你的Play应用程序。
答案 2 :(得分:1)
如果您使用的是Linux服务器,可以尝试fuser 80/tcp
&#39;查看另一个进程是否已在该端口上运行(80)。如果是这样(当您输入命令时显示进程ID),则不能对2个进程使用相同的端口。
要么你必须在另一个端口启动Play-app,要么你可以通过&#39; sudo fuser -k 80/tcp
&#39;来杀死已经运行的进程。并在同一个端口启动Play-app(80)。