Wie ändere ich den Standardport (9000), den Play verwendet, wenn ich den Befehl "Ausführen" ausführe?

207

Wie kann ich den vom Play Framework im Entwicklungsmodus verwendeten Standardport ändern, wenn der Befehl "run" auf der Play Console ausgegeben wird?

Dies ist für Playframework 2.0 Beta.

Die Verwendung des Konfigurationsparameters http.port entweder in der Befehlszeile oder in der application.conf scheint keine Auswirkung zu haben:

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.
Boris Terzic
quelle
3
@ PereVillega es ist lustig, weil es wahr ist: github.com/playframework/playframework/blob/…
Gregory Kalabin
1
Nachdem ich das "Windows, wirklich?" Ich musste mein Windows mit Kollegen fragen, ob es das noch tut. Wir verwenden 2.2.0 und diese Meldung wird nicht mehr angezeigt, aber die Farben werden deaktiviert. Ich vermute, dass es nur in der Beta-Version war.
Eric Wilson
Setzen Sie PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") in build.sbt
Rajat

Antworten:

407

Spielen Sie 2.x.

In Play 2 werden diese mit einem sbt-Plugin implementiert, sodass die folgenden Anweisungen eigentlich nur sbt-Aufgaben sind. Sie können alle verwenden sbt Läufer (e In Play 2, werden diese mit einem implementiert sbt - Plugin, so dass die folgenden sind wirklich nur sbt Aufgaben. Sie können jede beliebige sbt Läufer (zB sbt, playoder activator). Unterhalb der sbtLäufer verwendet wird, aber Sie kann es für Ihren sbt-Läufer Ihrer Wahl ersetzen.

Spielen Sie 2.x - Dev Mode

Für den Browser-Reload-Modus:

sbt "run 8080"

Für den kontinuierlichen Nachlademodus:

sbt "~run 8080"

Play 2.x - Debug-Modus

Führen Sie Folgendes aus, um im Debug-Modus mit dem http-Listener am Port 8080ausgeführt zu werden:

sbt -jvm-debug 9999 "run 8080"

Spielen Sie 2.x - Prod Mode

Starten Sie im Prod-Modus:

sbt "start -Dhttp.port=8080"

Spielen Sie 2.x - Staged Distribution

Erstellen Sie eine abgestufte Distribution:

sbt stage

Verwenden Sie für Play 2.0.x und 2.1.x das target/startSkript (nur Unix):

target/start -Dhttp.port=8080

Verwenden Sie für Play 2.2.x & 2.3.x das entsprechende Startskript im target/universal/stage/binVerzeichnis:

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

Mit Play 2.2.x & 2.3.x unter Windows:

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

Spielen Sie 2.x - Zip Distribution

So erstellen Sie eine Zip-Distribution:

sbt dist

Verwenden Sie für Play 2.0.x und 2.1.x das startSkript (nur Unix) in der extrahierten Zip- Datei :

start -Dhttp.port=8080

Verwenden Sie für Play 2.2.x das entsprechende Skript im [appname]-[version]/binVerzeichnis:

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

Mit Play 2.2.x unter Windows:

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

Spielen Sie 1.x.

Ändern Sie den http.portWert in der conf/application.confDatei oder übergeben Sie ihn über die Befehlszeile:

play run --http.port=8080
James Ward
quelle
Interessanterweise funktioniert das nicht wirklich. Aber vielleicht ist das nur ein Fehler oder ein Problem mit meinem System.
Boris Terzic
1
Ich glaube im
Moment
18
Ich verwende Play 2.0. Wenn ich es versuche play run 8080, läuft es immer noch auf 9000. Ich bin auf einem Mac. Was gibt? EDIT: play "run 8080" funktioniert!
Jay Q.
6
@StefanK. Sie können den Port nicht in eine Play-Konfigurationsdatei einfügen, da die Konfiguration erst gelesen wird, nachdem Play den Port abgehört hat. Sie können eine env var verwenden und den Port darauf einstellen.
James Ward
1
@James Ich habe das folgende Problem mit einer Problemumgehung eingereicht: github.com/sbt/sbt-native-packager/issues/155 . Vielen Dank!
Gfournier
33

Spielen Sie 2.0-RC4

Es ist wichtig, Anführungszeichen um den Wiedergabebefehl zu setzen, den Sie ausführen möchten. In meinem Fall würde das Spiel ohne die Anführungszeichen immer noch auf Port 9000 ausgeführt.

play "run 8080"

Alternativ können Sie Folgendes von der Spielkonsole aus ausführen (geben Sie 'play' ein, um zur Konsole zu gelangen).

run 8080
Jonathan Dixon
quelle
4
Für Leute, die unter Windows laufen, hat die zweite Option für mich funktioniert (Play 2.0.4 final).
Baztoune
14

Hoffe das hilft jemandem.

über sbt einstellungen:

...
.settings(PlayKeys.playDefaultPort := 8855)
...
Armin
quelle
1
Das ist die richtige Antwort! Danke dir! (Für die anderen SBT- und Play-Neulinge wie mich fügen Sie die .settingsZeile anschließend zu Ihrer build.sbtDatei hinzu lazy val root = (project in file(".")). Weitere Informationen zu den SBT-Einstellungen finden Sie hier: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson
Dies ist die einzige Lösung, die ich gefunden habe und die in Spiel 2.7.x funktioniert
Coert Grobbelaar
7

Version 2.0.3 :

  • Gehen Sie in das Projektverzeichnis und sagen Sie einfach spielen (und danach nichts mehr). Dadurch wird die Spielkonsole geöffnet.

  • Als nächstes sagen wir 8080 ausführen . Das wird auf Port 8080 abgespielt.

Ich hoffe das hilft.

Shashank Araokar
quelle
5

Für Play 2.2.x unter Windows mit einer verteilbaren TAR-Datei habe ich eine Datei im verteilbaren Stammverzeichnis mit dem Namen {PROJECT_NAME} _config.txt erstellt und Folgendes hinzugefügt:

-Dhttp.port=8080

Wobei {PROJECT_NAME} durch den Namen Ihres Projekts ersetzt werden soll. Starten Sie dann das Skript {PROJECT_NAME} .bat wie gewohnt im Verzeichnis bin \.

Wextux
quelle
In Windows (mit den Optionen dist und zip) funktioniert das Übergeben von Befehlszeilenargumenten nicht (Wiedergabe 2.2.0). Das Bereitstellen der gleichen Argumente in der Konfigurationsdatei funktioniert jedoch wie ein Zauber.
Skywalker
5

Spielen Sie 2.2.0 unter Windows

Mit einer Zip-Distribution (erstellt mit dem Befehl "dist") konnte ich den Startport nur ändern, indem ich zuerst JAVA_OPTS festlegte und dann die Anwendung startete.

ZB von der Kommandozeile

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

Dabei ist myapp.bat die Batchdatei, die mit dem Befehl "dist" erstellt wurde.

Im Folgenden wird mein Parameter http.port immer ignoriert und versucht, mit dem Standardport 9000 zu starten

bin\myapp.bat -Dhttp.port=9002

Ich habe jedoch festgestellt, dass dies unter Linux / OSX einwandfrei funktioniert und am angeforderten Port gestartet wird:

./bin/myapp -Dhttp.port=9002
Jason Bass
quelle
5

Zum Spielen 2.3.x.

Aktivator "run -Dhttp.port = 9001"

Sumitarora
quelle
4

Sie können den HTTP-Port auch im .sbtoptsProjektverzeichnis festlegen :

-Dhttp.port=9001

Dann müssen Sie nicht runjedes Mal daran denken, es der Aufgabe hinzuzufügen .

Getestet mit Play 2.1.1.

Lachdrache
quelle
3

für Play 2.5.x und Play 2.6.x.

sbt "-Dhttp.port=9002"

dann

run
Mesut Yiğit
quelle
2

Mit dem heute (25. November) eingeführten Commit können Sie jetzt direkt nach den Befehlen runoder startsbt eine Portnummer angeben .

Zum Beispiel

play run 8080 oder play start 8080

Die Wiedergabe erfolgt standardmäßig auf Port 9000

Olivier Refalo
quelle
Vielen Dank für die aktuellen Updates! Ich habe James 'Antwort aktualisiert, um Ihre Informationen hinzuzufügen. Vielleicht können wir hier eine kanonische Antwort erstellen.
Boris Terzic
2

Unter Windows funktioniert das Spiel "run 9001" möglicherweise nicht. Sie müssen die Datei play.bat ändern. Siehe Ticket

Paddy
quelle
Es kann hilfreich sein, hier schnell anzugeben, wie die Datei play.bat geändert werden kann, falls der Link jemals unterbrochen wird (und jemandem, der Hilfe bei SO sucht, schneller zu helfen).
Taylor R
2

Über die Wiedergabekonsole müssen Sie nur run 8888 eingeben, wenn Sie es über Port 8888 ausführen möchten.

play> run 8888
Siddhu
quelle
2

zum Spielen 2.5.x.

Schritt 1: Stoppen Sie den Netty-Server (falls er ausgeführt wird) mit Strg + D.

Schritt 2: Gehen Sie zu sbt-dist / conf

Schritt 3: Bearbeiten Sie diese Datei 'sbtConfig.txt' damit

-Dhttp.port=9005

Schritt 4: Starten Sie den Server

Schritt 5: http: // host: 9005 /

Bobby
quelle
2

Fügen Sie einfach die folgende Zeile in Ihre ein build.sbt

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

Nitin Aggarwal
quelle
1

Play 2.2.1 unter Windows unterstützt eine Umgebungsvariable PLAY_OPTS. Die play.bat-Datei von Play enthält folgende Zeile:

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" %*

Um auf Port 9002 zu laufen, tun Sie dies

set PLAY_OPTS=-Dhttp.port=9002
play run
IanRae
quelle
1

Getestet mit 2.3.7 Play Framework. Funktioniert gut.

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

Ich war das. sudoist notwendig.

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

EDIT: Ich hatte Probleme wegen der Verwendung, sudoalso pass auf dich auf. Schließlich habe ich das Projekt aufgeräumt und diesen Trick nicht mehr angewendet.

Ferran Maylinch
quelle
1
Dies hängt von Ihrer Distribution (Ubuntu ...) ab und davon, ob Sie als root angemeldet sind oder nicht.
Pierre-Yves Le Dévéhat
1

Wir verwenden Play Version 2.5.6.

Um den Port zu ändern, gehen Sie zu Ihrem Projektstammordner und klicken Sie auf: activator "run 8008"in der Eingabeaufforderung / im Terminal.

und das ist es.

Swapnil Kadu
quelle
0

Unter Windows verwende ich eine start.bat-Datei wie folgt:

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

Mit -DapplyEvolutions.default = true wird die Evolution angewiesen, Evolutions automatisch anzuwenden, ohne nach Bestätigung zu fragen. Natürlich mit Vorsicht in der Produktionsumgebung verwenden ...

opensas
quelle
0

Wir können den Anwendungsport nicht über den Avtivator ändern, sondern über den Befehlszeilenaktivator "~ run 8080".

Aber um auf dem Poet 9000 vom Aktivator aus zu laufen, müssen wir die Anwendung stoppen, die diesen Port verwendet. Wir können diese Anwendung verwenden, um dies zu finden und den Prozess https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx zu beenden

Danach können wir laufen und es wird erfolgreich sein.

Avinav Mishra
quelle
0

Geben Sie den Port in der Entwicklung an

Standardmäßig führt SBT die Anwendung auf Port 9000 aus:

sbt run

Um einen Port anzugeben, fügen Sie das Flag -Dhttp.port hinzu , zum Beispiel:

sbt run -Dhttp.port=8080

Mit dem Flag -Dhttp.port können Sie mehrere Anwendungen auf Ihrem Entwicklungscomputer debuggen. Bitte beachten Sie, dass Sie das Flag -Dhttp.port auch in Test- und Produktionsumgebungen verwenden können.

LineDrop
quelle