211

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

这是针对 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.
4

24 回答 24

414

玩 2.x

在 Play 2 中,这些是通过 sbt 插件实现的,因此以下说明实际上只是 sbt 任务。您可以使用任何 sbt 运行程序(e 在 Play 2 中,这些是使用 sbt 插件实现的,因此以下实际上只是 sbt 任务。您可以使用任何 sbt 运行程序(例如sbtplayactivator)。下面使用运行sbt程序,但您可以用它代替您选择的 sbt 跑步者。

Play 2.x - 开发模式

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

sbt "run 8080"

对于连续重新加载模式:

sbt "~run 8080"

Play 2.x - 调试模式

要使用 port 上的 http 侦听器在调试模式下8080运行,请运行:

sbt -jvm-debug 9999 "run 8080"

Play 2.x - 刺激模式

在 Prod 模式下启动:

sbt "start -Dhttp.port=8080"

Play 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

Play 2.x - Zip 分发

要创建 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.port中的值conf/application.conf或将其传递给命令行:

play run --http.port=8080
于 2011-11-21T02:49:26.977 回答
33

Play 2.0-RC4

It is important to include quotes around the play command you want to run. In my case without the quotes play would still run on port 9000.

play "run 8080"

Alternatively you could run the following from the play console (type 'play' to get to the console)

run 8080
于 2012-03-09T19:10:03.620 回答
17

希望这可以帮助某人。

通过 sbt 设置:

...
.settings(PlayKeys.playDefaultPort := 8855)
...
于 2017-12-07T13:32:54.767 回答
7

2.0.3 版

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

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

我希望这有帮助。

于 2012-08-31T02:11:18.153 回答
5

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

-Dhttp.port=8080

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

于 2014-01-20T14:18:36.777 回答
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
于 2014-03-23T18:34:03.517 回答
5

玩 2.3.x

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

于 2015-07-25T08:44:04.683 回答
5

只需在您的build.sbt

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

于 2019-05-22T05:48:33.577 回答
4

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

-Dhttp.port=9001

这样您就不必记住run每次都将其添加到任务中。

使用 Play 2.1.1 测试。

于 2013-06-19T09:06:57.493 回答
3

适用于 Play 2.5.x 和 Play 2.6.x

sbt "-Dhttp.port=9002"

然后

run
于 2016-10-10T09:22:11.607 回答
2

如果您想从端口 8888 运行它,只需在游戏控制台中输入 run 8888。

play> run 8888
于 2014-06-15T06:58:36.090 回答
2

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

例如

play run 8080或者play start 8080

播放默认为端口 9000

于 2011-11-25T15:43:38.440 回答
2

在 Windows 上,播放“运行 9001”可能不起作用。您必须更改 play.bat 文件。见

于 2012-09-08T21:45:53.107 回答
2

玩 2.5.x

第 1 步:使用 control + D 停止 netty 服务器(如果它正在运行)

第 2 步:转到 sbt-dist/conf

第 3 步:用这个编辑这个文件 'sbtConfig.txt'

-Dhttp.port=9005

第四步:启动服务器

第 5 步:http://host:9005/

于 2017-04-10T08:34:57.747 回答
2

我注意到没有人提到通过环境变量(CI/CD 友好)来实现这一点。

export PLAY_HTTP_PORT=1234
export PLAY_HTTPS_PORT=1235

设置后,Play 将从这些环境变量中读取,以确定在执行 、 或运行可执行文件以进行产品部署时的sbt run端口sbt start。有关更多信息,请参阅文档

于 2020-10-09T13:37:00.690 回答
2

在开发中指定端口

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

sbt run

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

sbt run -Dhttp.port=8080

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

于 2020-04-09T22:27:31.017 回答
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
于 2014-05-07T12:58:45.750 回答
1

我这样做了。sudo有必要的。

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

编辑:我有问题因为使用sudo所以要小心。最后我清理了项目,我不再使用那个技巧了。

于 2015-04-15T11:19:47.630 回答
1

使用 2.3.7 Play 框架测试。效果很好。

./{application}/bin/{executable} -Dhttp.port=5000
于 2014-12-08T18:40:53.057 回答
1

我们使用的是 Play 2.5.6 版。

要更改端口,请转到您的项目根文件夹并点击: activator "run 8008"在命令提示符/终端中。

就是这样。

于 2016-09-27T05:50:17.877 回答
0

在 Windows 上,我使用这样的 start.bat 文件:

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

-DapplyEvolutions.default=true 告诉进化自动应用进化而不要求确认。生产环境慎用,当然...

于 2012-09-29T01:27:58.720 回答
0

我们无法从 avtivator 更改应用程序端口,但可以从命令行激活器“~run 8080”更改

但是要从激活器在诗人 9000 上运行,我们需要停止使用该端口的应用程序。我们可以使用此应用程序找到它并结束该过程https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

在这之后我们可以运行,它会成功。

于 2015-01-25T09:27:38.067 回答
0

在 2.8.X 版本中,您可以使用特定资源文件或特定端口运行(如果只是 sbt 运行,您将使用 application.conf 和默认端口 9000)

sbt 运行 -Dconfig.resource=application.Local.conf -Dhttp.port=9002

于 2022-01-07T12:02:51.947 回答
0

您可以使用其他选项在.jvmopts项目根目录内的文件中设置它:

-Dhttp.port=9100

您还可以添加其他选项,例如加载不同的配置文件

-Dconfig.file=<config_file_absolute_path>

设置.jvmopts文件后,您不必记住在命令行中添加一些参数,只需执行以下操作:

sbt run
于 2021-02-10T10:27:29.473 回答