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.

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

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

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)
...

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.


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 \.


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


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.



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


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


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

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 /


2

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

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


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

1

Getestet mit 2.3.7 Play Framework. Funktioniert gut.

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

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.


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.


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 ...


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.