¿Cómo cambio el puerto predeterminado (9000) que Play usa cuando ejecuto el comando "ejecutar"?

207

¿Cómo puedo cambiar el puerto predeterminado utilizado por el marco de juego en el modo de desarrollo al emitir el comando "ejecutar" en la consola de juego.

Esto es para playframework 2.0 beta.

El uso del parámetro de configuración http.port en la línea de comandos o en la aplicación.conf parece no tener ningún efecto:

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
fuente
3
@PereVillega es gracioso porque es verdad: github.com/playframework/playframework/blob/…
Gregory Kalabin
1
Después de que vi el "Windows, ¿en serio?" Tuve que preguntarle a mi Windows usando a un colega para verificar si todavía lo hace. Estamos usando 2.2.0, y ya no muestra ese mensaje, pero deshabilita los colores. Sospecho que solo estaba en la versión beta.
Eric Wilson
ponga PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") en build.sbt
Rajat

Respuestas:

407

Juega 2.x

En Play 2, estos se implementan con un complemento sbt, por lo que las siguientes instrucciones son realmente solo tareas sbt. Se puede utilizar cualquier SBT corredor (e de Juego 2, éstas se implementan con un SBT plug-in, por lo que los siguientes son tareas realmente sólo SBT. Se puede utilizar cualquier corredor SBT (por ejemplo sbt, playo activator). Por debajo del sbtcorredor se utiliza, pero se puede sustituirlo por su corredor sbt de elección.

Jugar 2.x - Modo Dev

Para el modo de recarga del navegador:

sbt "run 8080"

Para el modo de recarga continua:

sbt "~run 8080"

Play 2.x - Modo de depuración

Para ejecutar en modo de depuración con el escucha HTTP en el puerto 8080, ejecute:

sbt -jvm-debug 9999 "run 8080"

Play 2.x - Modo Prod

Comience en modo Prod:

sbt "start -Dhttp.port=8080"

Play 2.x - Distribución por etapas

Crear una distribución por etapas:

sbt stage

Para Play 2.0.xy 2.1.x, use el target/startscript (solo Unix):

target/start -Dhttp.port=8080

Para Play 2.2.xy 2.3.x, use el script de inicio apropiado en el target/universal/stage/bindirectorio:

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

Con Play 2.2.xy 2.3.x en Windows:

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

Play 2.x - Distribución de Zip

Para crear una distribución zip:

sbt dist

Para Play 2.0.xy 2.1.x, use el startscript (solo Unix) en el zip extraído:

start -Dhttp.port=8080

Para Play 2.2.x use el script apropiado en el [appname]-[version]/bindirectorio:

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

Con Play 2.2.x en Windows:

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

Juega 1.x

Cambie el http.portvalor en el conf/application.confarchivo o páselo por la línea de comando:

play run --http.port=8080
James Ward
fuente
Curiosamente, eso en realidad no funciona. Pero quizás eso sea solo un error o un problema con mi sistema.
Boris Terzic
1
Creo que en este momento esto es solo para 1.x, aún no implementado en 2.0 beta
Pere Villega
18
Estoy ejecutando Play 2.0. Cuando lo intento play run 8080todavía funciona en 9000. Estoy en una Mac. ¿Lo que da? EDITAR: play "run 8080" funciona!
Jay Q.
66
@StefanK. No puede colocar el puerto en un archivo de configuración de Play porque la configuración no se lee hasta que Play está escuchando en el puerto. Puede usar una variable de entorno y configurar el puerto para eso.
James Ward,
1
@James He enviado el siguiente problema con una solución alternativa: github.com/sbt/sbt-native-packager/issues/155 . ¡Gracias!
gfournier
33

Juega 2.0-RC4

Es importante incluir comillas alrededor del comando de reproducción que desea ejecutar. En mi caso, sin las citas, play todavía se ejecutaría en el puerto 9000.

play "run 8080"

Alternativamente, puede ejecutar lo siguiente desde la consola de reproducción (escriba 'play' para acceder a la consola)

run 8080
Jonathan Dixon
fuente
44
Para las personas que se ejecutan en Windows, la segunda opción funcionó para mí (Play 2.0.4 final).
Baztoune
14

Espero que esto ayude a alguien.

a través de la configuración de sbt:

...
.settings(PlayKeys.playDefaultPort := 8855)
...
Armin
fuente
1
¡Esta es la respuesta correcta! ¡Gracias! (Para los otros novatos de SBT y Play como yo, agregue la .settingslínea a su build.sbtarchivo, después lazy val root = (project in file(".")). Para obtener más detalles sobre la configuración de SBT, consulte aquí: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson
Esta es la única solución que he encontrado que funciona en el juego 2.7.x
Coert Grobbelaar
7

Versión 2.0.3 :

  • Vaya al directorio del proyecto y solo diga play (y nada después de eso). Eso abrirá la consola de juego.

  • A continuación, diga ejecutar 8080 . Eso comenzará a jugar en el puerto 8080.

Espero que esto ayude.

Shashank Araokar
fuente
5

Para Play 2.2.x en Windows con un archivo tar distribuible, creé un archivo en el directorio raíz distribuible llamado: {PROJECT_NAME} _config.txt y agregué:

-Dhttp.port=8080

Donde {PROJECT_NAME} debe reemplazarse con el nombre de su proyecto. Luego comenzó el script {PROJECT_NAME} .bat como de costumbre en el directorio bin \.

Wextux
fuente
en Windows (usando las opciones dist y zip), pasar argumentos de línea de comando no funciona (reproducir 2.2.0). Pero proporcionar los mismos argumentos en el archivo de configuración funciona de maravilla.
skywalker
5

Juega 2.2.0 en Windows

Usando una distribución zip (producida usando el comando "dist"), la única forma en que pude cambiar el puerto de inicio fue configurando primero JAVA_OPTS y luego iniciando la aplicación.

Por ejemplo, desde la línea de comando

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

donde myapp.bat es el archivo por lotes creado por el comando "dist".

Lo siguiente siempre ignoraría mi parámetro http.port e intentaría comenzar en el puerto predeterminado, 9000

bin\myapp.bat -Dhttp.port=9002

Sin embargo, he notado que esto funciona bien en Linux / OSX, comenzando en el puerto solicitado:

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

Para jugar 2.3.x

activador "run -Dhttp.port = 9001"

sumitarora
fuente
4

También puede configurar el puerto HTTP .sbtoptsen el directorio del proyecto:

-Dhttp.port=9001

Entonces no tiene que acordarse de agregarlo a la runtarea cada vez.

Probado con Play 2.1.1.

lachdrache
fuente
3

para Play 2.5.xy Play 2.6.x

sbt "-Dhttp.port=9002"

luego

run
Mesut Yiğit
fuente
2

Con el commit presentado hoy (25 de noviembre), ahora puede especificar un número de puerto justo después de los comandos runo startsbt.

Por ejemplo

play run 8080 o play start 8080

El juego predeterminado es el puerto 9000

Olivier Refalo
fuente
¡Gracias por las actualizaciones de última hora! Actualicé la respuesta de James para agregar su información, tal vez podamos construir una respuesta canónica aquí.
Boris Terzic
2

En Windows, tal vez la obra "ejecutar 9001" no funcione. Tienes que cambiar el archivo play.bat. Ver boleto

Arrozal
fuente
Puede ser valioso indicar rápidamente cómo cambiar el archivo play.bat aquí, en caso de que ese enlace se rompa (y ayudar más rápidamente a alguien que busca ayuda en SO).
Taylor R
2

Desde la consola de reproducción, solo necesita escribir run 8888, si desea ejecutarlo desde el puerto 8888.

play> run 8888
Siddhu
fuente
2

para jugar 2.5.x

Paso 1: Detenga el servidor netty (si se está ejecutando) usando control + D

Paso 2: ve a sbt-dist / conf

Paso 3: edite este archivo 'sbtConfig.txt' con esto

-Dhttp.port=9005

Paso 4: iniciar el servidor

Paso 5: http: // host: 9005 /

poli
fuente
2

Simplemente agregue la siguiente línea en su build.sbt

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

Nitin Aggarwal
fuente
1

Play 2.2.1 en Windows admite una variable de entorno PLAY_OPTS. El archivo play.bat de Play contiene esta línea:

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

para ejecutar en el puerto 9002, haz

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

Probado con el marco de juego 2.3.7. Funciona bien.

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

Hice esto. sudoes necesario.

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

EDITAR: Tuve problemas debido al uso, sudoasí que ten cuidado. Finalmente limpié el proyecto y ya no he usado ese truco.

Ferran Maylinch
fuente
1
Esto depende de su distribución (Ubuntu ...) y si está registrado como root o no.
Pierre-Yves Le Dévéhat
1

Estamos utilizando Play versión 2.5.6.

Para cambiar el puerto, vaya a la carpeta raíz del proyecto y presione: activator "run 8008"en el símbolo del sistema / terminal.

y eso es.

Swapnil Kadu
fuente
0

En Windows, uso un archivo start.bat como este:

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

-DapplyEvolutions.default = true le dice a evolution que aplique automáticamente las evoluciones sin pedir confirmación. Usar con precaución en el entorno de producción, por supuesto ...

opensas
fuente
0

No podemos cambiar el puerto de la aplicación desde el activador, pero podemos cambiar desde el activador de línea de comando "~ run 8080"

Pero para ejecutar en el poet 9000 desde el activador necesitamos detener la aplicación que está usando este puerto. Podemos usar esta aplicación para encontrar esto y finalizar el proceso https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

Después de esto podemos correr y será exitoso.

Avinav Mishra
fuente
0

Especificar puerto en desarrollo

Por defecto, SBT ejecuta la aplicación en el puerto 9000:

sbt run

Para especificar un puerto, agregue la bandera -Dhttp.port , por ejemplo:

sbt run -Dhttp.port=8080

Usando el indicador -Dhttp.port , puede depurar múltiples aplicaciones en su máquina de desarrollo. Tenga en cuenta que también puede usar el indicador -Dhttp.port en entornos de prueba y producción.

LineDrop
fuente