Comment puis-je changer le port par défaut (9000) utilisé par Play lorsque j'exécute la commande «run»?

207

Comment puis-je changer le port par défaut utilisé par le framework de lecture en mode développement lors de l'émission de la commande "run" sur la console de lecture.

C'est pour playframework 2.0 beta.

L'utilisation du paramètre de configuration http.port sur la ligne de commande ou dans le fichier application.conf semble n'avoir aucun effet:

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
la source
3
@PereVillega c'est hilarant parce que c'est vrai: github.com/playframework/playframework/blob/…
Gregory Kalabin
1
Après avoir vu le "Windows, vraiment?" J'ai dû demander à mon collègue Windows de vérifier s'il le faisait toujours. Nous utilisons 2.2.0, et il n'affiche plus ce message, mais il désactive les couleurs. Je soupçonne que ce n'était que dans la version bêta.
Eric Wilson
mettez PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") dans build.sbt
Rajat

Réponses:

407

Jouez 2.x

Dans Play 2, ceux-ci sont implémentés avec un plugin sbt, donc les instructions suivantes ne sont vraiment que des tâches sbt. Vous pouvez utiliser l' SBT runner (e Dans le jeu 2, ceux - ci sont mis en œuvre avec un plugin SBT, de sorte que les éléments suivants ne sont vraiment que des tâches SBT. Vous pouvez utiliser tout coureur de SBT (par exemple sbt, playou activator). Ci - dessous le sbtcoureur est utilisé, mais vous peut le remplacer par votre coureur sbt de choix.

Jouer 2.x - Mode Dev

Pour le mode de rechargement du navigateur:

sbt "run 8080"

Pour le mode de rechargement continu:

sbt "~run 8080"

Jouer 2.x - Mode débogage

Pour exécuter en mode débogage avec l'écouteur http sur le port 8080, exécutez:

sbt -jvm-debug 9999 "run 8080"

Jouer 2.x - Mode Prod

Démarrer en mode Prod:

sbt "start -Dhttp.port=8080"

Play 2.x - Distribution par étapes

Créez une distribution par étapes:

sbt stage

Pour Play 2.0.x et 2.1.x, utilisez le target/startscript (Unix uniquement):

target/start -Dhttp.port=8080

Pour Play 2.2.x et 2.3.x, utilisez le script de démarrage approprié dans le target/universal/stage/binrépertoire:

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

Avec Play 2.2.x & 2.3.x sous Windows:

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

Jouer 2.x - Zip Distribution

Pour créer une distribution zip:

sbt dist

Pour Play 2.0.x et 2.1.x, utilisez le startscript (Unix uniquement) dans le zip extrait:

start -Dhttp.port=8080

Pour Play 2.2.x, utilisez le script approprié dans le [appname]-[version]/binrépertoire:

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

Avec Play 2.2.x sous Windows:

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

Jouer 1.x

Modifiez la http.portvaleur dans le conf/application.conffichier ou passez-la en ligne de commande:

play run --http.port=8080
James Ward
la source
Chose intéressante, cela ne fonctionne pas vraiment. Mais c'est peut-être juste un bug ou un problème avec mon système.
Boris Terzic
1
Je crois que pour le moment, ce n'est que pour 1.x, pas encore implémenté dans la version bêta 2.0
Pere Villega
18
J'utilise Play 2.0. Quand j'essaye, play run 8080il fonctionne toujours sur 9000. Je suis sur un Mac. Ce qui donne? EDIT: play "run 8080" fonctionne!
Jay Q.
6
@StefanK. Vous ne pouvez pas placer le port dans un fichier de configuration Play car la configuration n'est pas lue tant que Play n'écoute pas sur le port. Vous pouvez utiliser une variable env et définir le port sur cela.
James Ward du
1
@James J'ai soumis le problème suivant avec une solution de contournement: github.com/sbt/sbt-native-packager/issues/155 . Merci!
gfournier
33

Jouer 2.0-RC4

Il est important d'inclure des guillemets autour de la commande de lecture que vous souhaitez exécuter. Dans mon cas, sans les guillemets, le jeu fonctionnerait toujours sur le port 9000.

play "run 8080"

Vous pouvez également exécuter ce qui suit à partir de la console de jeu (tapez 'play' pour accéder à la console)

run 8080
Jonathan Dixon
la source
4
Pour les personnes fonctionnant sous Windows, la deuxième option a fonctionné pour moi (Play 2.0.4 final).
Baztoune
14

J'espère que cela aide quelqu'un.

via les paramètres sbt:

...
.settings(PlayKeys.playDefaultPort := 8855)
...
Armin
la source
1
Ceci est la bonne réponse! Je vous remercie! (Pour les autres novices SBT et Play comme moi, ajoutez la .settingsligne à votre build.sbtfichier, après lazy val root = (project in file(".")). Pour plus de détails sur les paramètres SBT, voir ici: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson
C'est la seule solution que j'ai trouvée qui fonctionne en jeu 2.7.x
Coert Grobbelaar
7

Version 2.0.3 :

  • Allez dans le répertoire du projet et dites simplement jouer (et rien après). Cela ouvrira la console de jeu.

  • Ensuite, dites exécuter 8080 . Cela commencera à jouer sur le port 8080.

J'espère que ça aide.

Shashank Araokar
la source
5

Pour Play 2.2.x sous Windows avec un fichier tar distribuable, j'ai créé un fichier dans le répertoire racine distribuable appelé: {PROJECT_NAME} _config.txt et ajouté:

-Dhttp.port=8080

Où {PROJECT_NAME} doit être remplacé par le nom de votre projet. Ensuite, vous avez démarré le script {PROJECT_NAME} .bat comme d'habitude dans le répertoire bin \.

Wextux
la source
dans Windows (en utilisant les options dist et zip), la transmission d'arguments en ligne de commande ne fonctionne pas (lecture 2.2.0). Mais fournir les mêmes arguments dans le fichier de configuration fonctionne comme un charme.
skywalker
5

Jouer à 2.2.0 sur Windows

À l'aide d'une distribution zip (produite à l'aide de la commande "dist"), la seule façon dont j'ai pu changer le port de démarrage était tout d'abord de définir JAVA_OPTS puis de lancer l'application.

Par exemple, à partir de la ligne de commande

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

où myapp.bat est le fichier de commandes créé par la commande "dist".

Les éléments suivants ignorent toujours mon paramètre http.port et tentent de démarrer sur le port par défaut, 9000

bin\myapp.bat -Dhttp.port=9002

Cependant, j'ai remarqué que cela fonctionne bien sous Linux / OSX, en démarrant sur le port demandé:

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

Pour Play 2.3.x

activateur "run -Dhttp.port = 9001"

sumitarora
la source
4

Vous pouvez également définir le port HTTP .sbtoptsdans le répertoire du projet:

-Dhttp.port=9001

Ensuite, vous n'avez pas à vous rappeler de l'ajouter à la runtâche à chaque fois.

Testé avec Play 2.1.1.

lachdrache
la source
3

pour Play 2.5.x et Play 2.6.x

sbt "-Dhttp.port=9002"

puis

run
Mesut Yiğit
la source
2

Avec la validation introduite aujourd'hui (25 novembre), vous pouvez maintenant spécifier un numéro de port juste après le runoustart commandes sbt.

Par exemple

play run 8080 ou play start 8080

Jouer par défaut au port 9000

Olivier Refalo
la source
Merci pour les dernières mises à jour! J'ai mis à jour la réponse de James pour ajouter vos informations, peut-être pouvons-nous construire une réponse canonique ici.
Boris Terzic
2

Sur Windows, le jeu "run 9001" ne fonctionnera peut-être pas. Vous devez modifier le fichier play.bat. Voir le ticket

Paddy
la source
Il peut être utile d'indiquer rapidement comment modifier le fichier play.bat ici, au cas où ce lien se briserait (et d'aider plus rapidement quelqu'un qui cherche de l'aide sur SO).
Taylor R
2

À partir de la console de jeu, il vous suffit de taper run 8888, si vous souhaitez l'exécuter à partir du port 8888.

play> run 8888
Siddhu
la source
2

pour jouer 2.5.x

Étape 1: Arrêtez le serveur netty (s'il est en cours d'exécution) à l'aide de control + D

Étape 2: accédez à sbt-dist / conf

Étape 3: éditez ce fichier 'sbtConfig.txt' avec ceci

-Dhttp.port=9005

Étape 4: démarrez le serveur

Étape 5: http: // hôte: 9005 /

policier
la source
2

Ajoutez simplement la ligne suivante dans votre build.sbt

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

Nitin Aggarwal
la source
1

Play 2.2.1 sous Windows prend en charge une variable d'environnement PLAY_OPTS. Le fichier play.bat de Play contient cette ligne:

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

donc pour exécuter sur le port 9002, faites

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

Testé avec le framework 2.3.7 Play. Fonctionne bien.

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

J'ai fait ça. sudoest nécessaire.

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

EDIT: J'ai eu des problèmes à cause de l'utilisation sudoalors faites attention. Enfin, j'ai nettoyé le projet et je n'ai plus utilisé cette astuce.

Ferran Maylinch
la source
1
Cela dépend de votre distribution (Ubuntu ...) et si vous êtes connecté en tant que root ou non.
Pierre-Yves Le Dévéhat
1

Nous utilisons la version 2.5.6 de Play.

Pour modifier le port, accédez au dossier racine de votre projet et appuyez sur: activator "run 8008"dans l'invite de commande / terminal.

et c'est tout.

Swapnil Kadu
la source
0

Sous Windows, j'utilise un fichier start.bat comme celui-ci:

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

Le paramètre -DapplyEvolutions.default = true indique à evolution d'appliquer automatiquement les évolutions sans demander de confirmation. À utiliser avec prudence sur l'environnement de production, bien sûr ...

opensas
la source
0

Nous ne pouvons pas changer le port d'application depuis l'avtivator mais pouvons changer depuis l'activateur de ligne de commande "~ run 8080"

Mais pour fonctionner sur le poète 9000 à partir de l'activateur, nous devons arrêter l'application qui utilise ce port. Nous pouvons utiliser cette application pour le trouver et terminer le processus https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

Après cela, nous pouvons courir et ce sera un succès.

Avinav Mishra
la source
0

Spécifiez le port en développement

Par défaut, SBT exécute l'application sur le port 9000:

sbt run

Pour spécifier un port, ajoutez l' indicateur -Dhttp.port , par exemple:

sbt run -Dhttp.port=8080

En utilisant l' indicateur -Dhttp.port , vous pouvez déboguer plusieurs applications sur votre machine de développement. Veuillez noter que vous pouvez également utiliser l' indicateur -Dhttp.port dans les environnements de test et de production.

LineDrop
la source