执行“运行”命令时,如何更改Play使用的默认端口(9000)?


207

在Play控制台上发出“运行”命令时,如何更改开发框架在开发模式下使用的默认端口。

这适用于playframework 2.0 beta。

在命令行上或在application.conf中使用http.port配置参数似乎无效:

C:\dev\prototype\activiti-preso>play run --http.port=8080
[info] Loading project definition from C:\dev\prototype\activiti-preso\project
[info] Set current project to activiti-preso (in build file:/C:/dev/prototype/activiti-preso/)


Windows, really? Ok, disabling colors.

--- (Running the application from SBT, auto-reloading is enabled) ---

[error] org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:9000
[error] Use 'last' for the full log.

3
@PereVillega它的热闹,因为它是真实的:github.com/playframework/playframework/blob/...
格雷戈里Kalabin

1
当我看到“ Windows,真的吗?” 我不得不问我的Windows使用同事来检查它是否仍然这样做。我们使用的是2.2.0,它不再显示该消息,但是会禁用颜色。我怀疑它只是beta版本。
埃里克·威尔逊

将PlayKeys.devSettings:= Seq(“ play.server.http.port”->“ 9001”)放入build.sbt中
Rajat,

Answers:


407

播放2.x

在Play 2中,这些是通过sbt插件实现的,因此以下说明实际上只是sbt任务。你可以使用任何SBT亚军(E,以玩2,这些与实现的SBT插件,所以下面其实只是SBT任务。你可以使用任何SBT亚军(例如sbtplayactivator)。下面的sbt亚军被使用,但你可以用它代替您选择的sbt运行程序。

播放2.x-开发模式

对于浏览器重新加载模式:

sbt "run 8080"

对于连续重载模式:

sbt "~run 8080"

播放2.x-调试模式

要在端口为http的侦听器上以调试模式8080运行,请运行:

sbt -jvm-debug 9999 "run 8080"

播放2.x-产品模式

以产品模式启动:

sbt "start -Dhttp.port=8080"

播放2.x-分阶段分发

创建一个分阶段的分发:

sbt stage

对于Play 2.0.x和2.1.x,请使用target/start脚本(仅限Unix):

target/start -Dhttp.port=8080

对于Play 2.2.x和2.3.x,请在target/universal/stage/bin目录中使用适当的启动脚本:

target/universal/stage/bin/[appname] -Dhttp.port=8080

在Windows上使用Play 2.2.x和2.3.x:

target\universal\stage\bin\[appname].bat -Dhttp.port=8080

播放2.x-邮政编码分布

要创建一个zip发行版:

sbt dist

对于Play 2.0.x和2.1.x,请使用start解压缩的zip中的脚本(仅Unix):

start -Dhttp.port=8080

对于Play 2.2.x,请在[appname]-[version]/bin目录中使用适当的脚本:

[appname]-[version]/bin/[appname] -Dhttp.port=8080

在Windows上使用Play 2.2.x:

[appname]-[version]\bin\[appname].bat -Dhttp.port=8080

播放1.x

更改文件中的http.portconf/application.conf或通过命令行传递它:

play run --http.port=8080

有趣的是,这实际上是行不通的。但这可能只是我的系统的错误或问题。
鲍里斯·特尔齐奇

1
我相信现在这仅适用于1.x,尚未在2.0 beta中实现
Pere Villega

18
我正在运行Play 2.0。当我尝试时,play run 8080它仍可在9000上运行。我在Mac上。是什么赋予了? 编辑: play "run 8080"有效!
周杰伦Q.2012年

6
@StefanK。您无法将端口放在Play配置文件中,因为只有在Play监听端口后才能读取配置。您可以使用env var并将端口设置为此。
James Ward 2014年

1
@James我已经提交了以下问题的解决方法:github.com/sbt/sbt-native-packager/issues/155。谢谢!
gfournier 2014年

33

播放2.0-RC4

在要运行的play命令周围加引号很重要。以我为例,没有引号的话,仍然可以在端口9000上运行。

play "run 8080"

或者,您可以从播放控制台运行以下命令(键入“ play”进入控制台)

run 8080

4
对于在Windows上运行的用户,第二个选项对我有用(最终播放2.0.4)。
2012年

14

希望这对某人有帮助。

通过sbt设置:

...
.settings(PlayKeys.playDefaultPort := 8855)
...

1
这是正确的答案!谢谢!(对于其他像我这样的SBT和Play新手,请在之后添加该.settings行到build.sbt文件中lazy val root = (project in file("."))。有关SBT设置的更多详细信息,请参见:scala-sbt.org/1.0/docs/Custom-Settings.html
Cameron Hudson

这是我发现的唯一可以在游戏2.7.x中使用的解决方案
Coert Grobbelaar

7

版本2.0.3

  • 转到项目目录,然后说“ play”(此后什么也没有)。这将打开播放控制台。

  • 接下来,说运行8080。它将开始在端口8080上播放。

我希望这有帮助。


5

对于Windows上具有可分发tar文件的Play 2.2.x,我在可分发根目录中创建了一个名为{PROJECT_NAME} _config.txt的文件,并添加了:

-Dhttp.port=8080

{PROJECT_NAME}应该用您的项目名称替换。然后像往常一样在bin \目录中启动{PROJECT_NAME} .bat脚本。


在Windows中(使用dist和zip选项),无法传递命令行参数(播放2.2.0)。但是在配置文件中提供相同的参数就像一个魅力。
天行者2014年

5

在Windows上播放2.2.0

使用zip发行版(使用“ dist”命令生成),我能够更改启动端口的唯一方法是首先设置JAVA_OPTS,然后启动应用程序。

例如,从命令行

set JAVA_OPTS=-Dhttp.port=9002
bin\myapp.bat

其中,myapp.bat是由“ dist”命令创建的批处理文件。

以下内容将始终忽略我的http.port参数,并尝试在默认端口9000上启动

bin\myapp.bat -Dhttp.port=9002

但是,我注意到这在Linux / OSX上可以正常工作,可以在请求的端口上启动:

./bin/myapp -Dhttp.port=9002

5

对于Play 2.3.x

激活器“运行-Dhttp.port = 9001”


4

您还可以.sbtopts在项目目录中设置HTTP端口:

-Dhttp.port=9001

然后,您不必记住run每次都将其添加到任务中。

经过Play 2.1.1测试。



2

通过今天(11月25日)推出的提交,您现在可以在runor或startsbt命令之后立即指定端口号。

例如

play run 8080 要么 play start 8080

播放默认端口为9000


感谢您的最新更新!我更新了詹姆斯的答案以添加您的信息,也许我们可以在这里建立一个规范的答案。
鲍里斯·特尔齐奇

2

在Windows上,可能无法执行“运行9001”游戏。您必须更改play.bat文件。看


在链接中断的情况下快速指示如何在此处更改play.bat文件可能很有价值(以更快速地帮助某人寻求SO帮助)。
泰勒R

2

如果要从端口8888运行,则只需从Play控制台键入run 8888。

play> run 8888

2

用于播放2.5.x

步骤1:使用Control + D停止Netty服务器(如果正在运行)

步骤2:前往sbt-dist / conf

步骤3:使用此编辑文件'sbtConfig.txt'

-Dhttp.port=9005

步骤4:启动服务器

步骤5:http:// host:9005 /


2

只需将以下行添加到您的 build.sbt

PlayKeys.devSettings := Seq("play.server.http.port" -> "8080")


1

Windows上的Play 2.2.1支持PLAY_OPTS环境变量。Play的play.bat文件包含以下行:

java -Dsbt.ivy.home="%~dp0repository" -Dplay.home="%~dp0framework" -Dsbt.boot.properties="%fp%framework/sbt/play.boot.properties" %PLAY_OPTS% -jar "%~dp0framework\sbt\sbt-launch.jar" %*

所以要在端口9002上运行

set PLAY_OPTS=-Dhttp.port=9002
play run

1

经过2.3.7 Play框架测试。效果很好。

./{application}/bin/{executable} -Dhttp.port=5000

1

我做到了 sudo有必要的。

$ sudo play debug -Dhttp.port=80
...
[MyPlayApp] $ run

编辑:我因为使用​​有问题,sudo所以要小心。最终,我清理了该项目,并且不再使用该技巧。


1
这取决于您的发行版(Ubuntu ...),以及是否以root用户身份登录。
Pierre-Yves LeDévéhat2015年


0

在Windows上,我使用如下所示的start.bat文件:

java -Dhttp.port=9001 -DapplyEvolutions.default=true -cp "./lib/*;" play.core.server.NettyServer "."

-DapplyEvolutions.default = true告诉Evolution无需确认即可自动应用Evolution。当然,请谨慎使用生产环境...



0

指定开发中的端口

默认情况下,SBT在端口9000上运行该应用程序:

sbt run

要指定端口,请添加-Dhttp.port标志,例如:

sbt run -Dhttp.port=8080

使用-Dhttp.port标志,可以在开发计算机上调试多个应用程序。请注意,您还可以在测试和生产环境中使用-Dhttp.port标志。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.