Come posso cambiare la porta predefinita (9000) utilizzata da Play quando eseguo il comando "run"?


207

Come posso modificare la porta predefinita utilizzata dal framework di riproduzione in modalità di sviluppo quando si emette il comando "run" sulla console di riproduzione.

Questo è per playframework 2.0 beta.

L'uso del parametro di configurazione http.port nella riga di comando o in application.conf sembra non avere alcun effetto:

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 è divertente perché è vero: github.com/playframework/playframework/blob/…
Gregory Kalabin

1
Dopo aver visto "Windows, davvero?" Ho dovuto chiedere al mio Windows usando un collega di controllare se lo fa ancora. Stiamo utilizzando 2.2.0 e non visualizza più quel messaggio, ma disabilita i colori. Ho il sospetto che fosse solo nella versione beta.
Eric Wilson,

inserisci PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") in build.sbt
Rajat,

Risposte:


407

Riproduci 2.x

In Play 2, questi sono implementati con un plugin sbt, quindi le seguenti istruzioni sono in realtà solo attività sbt. Puoi usare qualsiasi sbt runner (e In Play 2, questi sono implementati con un plugin sbt, quindi le seguenti sono in realtà solo attività sbt. Puoi usare qualsiasi sbt runner (es sbt. play, O activator). Sotto sbtviene usato il runner, ma tu può sostituirlo con il tuo runner preferito.

Gioca 2.x - Modalità Dev

Per la modalità di ricarica del browser:

sbt "run 8080"

Per la modalità di ricarica continua:

sbt "~run 8080"

Gioca 2.x - Modalità debug

Per eseguire in modalità debug con il listener http sulla porta 8080, eseguire:

sbt -jvm-debug 9999 "run 8080"

Gioca 2.x - Modalità Prod

Inizia in modalità Prod:

sbt "start -Dhttp.port=8080"

Riproduci 2.x - Staging Distribution

Creare una distribuzione graduale:

sbt stage

Per Play 2.0.xe 2.1.x usa lo target/startscript (solo Unix):

target/start -Dhttp.port=8080

Per Play 2.2.xe 2.3.x utilizzare lo script iniziale appropriato nella target/universal/stage/bindirectory:

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

Con Play 2.2.xe 2.3.x su Windows:

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

Riproduci 2.x - Distribuzione zip

Per creare una distribuzione zip:

sbt dist

Per Play 2.0.xe 2.1.x usa lo startscript (solo Unix) nella zip estratta:

start -Dhttp.port=8080

Per Play 2.2.x utilizzare lo script appropriato nella [appname]-[version]/bindirectory:

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

Con Play 2.2.x su Windows:

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

Gioca a 1.x

Modificare il http.portvalore nel conf/application.conffile o passarlo dalla riga di comando:

play run --http.port=8080

Abbastanza interessante che in realtà non funziona. Ma forse è solo un bug o un problema con il mio sistema.
Boris Terzic,

1
Credo che questo sia solo per 1.x, non ancora implementato nella 2.0 beta
Pere Villega,

18
Sto eseguendo Play 2.0. Quando provo play run 8080funziona ancora su 9000. Sono su un Mac. Cosa dà? EDIT: play "run 8080" funziona!
Jay Q.

6
@StefanK. Non è possibile inserire la porta in un file di configurazione di Play perché la configurazione non viene letta fino a quando Play non è in ascolto sulla porta. È possibile utilizzare un var env e impostare la porta su quello.
James Ward,

1
@James Ho inviato il seguente problema con una soluzione alternativa: github.com/sbt/sbt-native-packager/issues/155 . Grazie!
gfournier,

33

Gioca a 2.0-RC4

È importante includere le virgolette attorno al comando play che si desidera eseguire. Nel mio caso senza le virgolette il gioco verrebbe comunque eseguito sulla porta 9000.

play "run 8080"

In alternativa, è possibile eseguire quanto segue dalla console di riproduzione (digitare 'play' per accedere alla console)

run 8080

4
Per le persone che eseguono Windows, la seconda opzione ha funzionato per me (Play 2.0.4 final).
Baztoune,

14

Spero che questo aiuti qualcuno.

tramite le impostazioni sbt:

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

1
Questa è la risposta corretta! Grazie! (Per gli altri principianti SBT e Play come me, aggiungi la .settingslinea al tuo build.sbtfile, dopo lazy val root = (project in file(".")). Per maggiori dettagli sulle impostazioni SBT, vedi qui: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson

Questa è l'unica soluzione che ho trovato che funziona in gioco 2.7.x
Coert Grobbelaar,

7

Versione 2.0.3 :

  • Vai alla directory del progetto e dì semplicemente play (e niente dopo). Questo aprirà la console di gioco.

  • Quindi, dire eseguire 8080 . Inizierà a giocare sulla porta 8080.

Spero che aiuti.


5

Per Play 2.2.x su Windows con un file tar distribuibile ho creato un file nella directory radice distribuibile chiamato: {PROJECT_NAME} _config.txt e aggiunto:

-Dhttp.port=8080

Dove {PROJECT_NAME} dovrebbe essere sostituito con il nome del tuo progetto. Quindi ha avviato lo script .bat {PROJECT_NAME} come al solito nella directory bin \.


in Windows (usando le opzioni dist e zip), il passaggio degli argomenti della riga di comando non funziona (gioca 2.2.0). Ma fornire gli stessi argomenti nel file di configurazione funziona come un incantesimo.
Skywalker

5

Gioca 2.2.0 su Windows

Utilizzando una distribuzione zip (prodotta utilizzando il comando "dist"), l'unico modo in cui sono stato in grado di cambiare la porta di avvio è stato prima impostando JAVA_OPTS e quindi avviando l'applicazione.

Ad esempio, dalla riga di comando

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

dove myapp.bat è il file batch creato dal comando "dist".

Quanto segue ignorerebbe sempre il mio parametro http.port e proverebbe ad avviarsi sulla porta predefinita, 9000

bin\myapp.bat -Dhttp.port=9002

Tuttavia, ho notato che funziona perfettamente su Linux / OSX, avviandosi sulla porta richiesta:

./bin/myapp -Dhttp.port=9002


4

È inoltre possibile impostare la porta HTTP nella .sbtoptsdirectory del progetto:

-Dhttp.port=9001

Quindi non è necessario ricordare di aggiungerlo runogni volta all'attività.

Testato con Play 2.1.1.



2

Con il commit introdotto oggi (25 novembre), ora è possibile specificare un numero di porta subito dopo i comandi runo startsbt.

Per esempio

play run 8080 o play start 8080

Riporta le impostazioni predefinite alla porta 9000


Grazie per gli aggiornamenti al minuto! Ho aggiornato la risposta di James per aggiungere le tue informazioni, forse possiamo costruire una risposta canonica qui.
Boris Terzic,

2

Su Windows forse il gioco "run 9001" non funzionerà. Devi cambiare il file play.bat. Vedi biglietto


Potrebbe essere utile indicare rapidamente come modificare il file play.bat qui, nel caso in cui il collegamento si interrompa (e per aiutare più rapidamente qualcuno in cerca di assistenza su SO).
Taylor R,

2

Dalla console di gioco, è sufficiente digitare run 8888, se si desidera eseguirlo dalla porta 8888.

play> run 8888

2

per giocare 2.5.x

Passaggio 1: arrestare il server netty (se è in esecuzione) utilizzando control + D

Passaggio 2: vai a sbt-dist / conf

Passaggio 3: modifica questo file "sbtConfig.txt" con questo

-Dhttp.port=9005

Passaggio 4: avviare il server

Passaggio 5: http: // host: 9005 /


2

Aggiungi la seguente riga nel tuo build.sbt

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


1

Play 2.2.1 su Windows supporta una variabile d'ambiente PLAY_OPTS. Il file play.bat di Play contiene questa riga:

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

quindi per eseguire sulla porta 9002, fare

set PLAY_OPTS=-Dhttp.port=9002
play run

1

Testato con 2.3.7 Play framework. Funziona bene.

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

1

L'ho fatto. sudoè necessario.

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

EDIT: ho avuto problemi a causa dell'uso, sudoquindi fai attenzione. Alla fine ho ripulito il progetto e non ho più usato quel trucco.


1
Questo dipende dalla tua distribuzione (Ubuntu ...) e se sei loggato come root o no.
Pierre-Yves Le Dévéhat il

1

Stiamo utilizzando la versione 2.5.6 di Play.

Per cambiare la porta, vai alla cartella principale del tuo progetto e premi: activator "run 8008" nel prompt dei comandi / terminale.

e basta.


0

Su Windows, utilizzo un file start.bat come questo:

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

-DapplyEvolutions.default = true indica all'evoluzione di applicare automaticamente le evoluzioni senza chiedere conferma. Usare con cautela sull'ambiente di produzione, ovviamente ...


0

Non è possibile modificare la porta dell'applicazione dall'attivatore, ma è possibile modificare dall'attivatore della riga di comando "~ run 8080"

Ma per eseguire sul poeta 9000 dall'attivatore è necessario arrestare l'applicazione che utilizza questa porta. Possiamo usare questa applicazione per trovare questo e terminare il processo https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

Dopodiché possiamo correre e avrà successo.


0

Specifica porta in sviluppo

Per impostazione predefinita, SBT esegue l'applicazione sulla porta 9000:

sbt run

Per specificare una porta aggiungere -Dhttp.port flag, ad esempio:

sbt run -Dhttp.port=8080

Utilizzando il flag -Dhttp.port , è possibile eseguire il debug di più applicazioni sulla macchina di sviluppo. Nota, puoi anche usare il flag -Dhttp.port negli ambienti di test e produzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.