Como altero a porta padrão (9000) que o Play usa quando executo o comando "run"?

207

Como posso alterar a porta padrão usada pela estrutura play no modo de desenvolvimento ao emitir o comando "run" no play console.

Isto é para o playframework 2.0 beta.

O uso do parâmetro de configuração http.port na linha de comando ou no application.conf parece não ter efeito:

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
fonte
3
@PereVillega é hilário porque é verdade: github.com/playframework/playframework/blob/…
Gregory Kalabin
1
Depois que eu vi o "Windows, sério?" Eu tive que perguntar ao meu Windows usando o colega para verificar se ele ainda faz isso. Estamos usando o 2.2.0, e ele não exibe mais essa mensagem, mas desativa as cores. Eu suspeito que era apenas na versão beta.
22913 Eric Eric Eric
coloque PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") no build.sbt
Rajat

Respostas:

407

Reproduzir 2.x

No Play 2, eles são implementados com um plug-in sbt; portanto, as instruções a seguir são realmente apenas tarefas sbt. Você pode usar qualquer sbt corredor (e In Play 2, estes são implementados com um sbt plugin, então o seguinte são tarefas realmente apenas sbt. Você pode usar qualquer corredor sbt (por exemplo sbt, playou activator). Abaixo do sbtcorredor é usado, mas você pode substituí-lo pelo seu sbt runner de sua escolha.

Reproduzir 2.x - Modo Dev

Para o modo de recarga do navegador:

sbt "run 8080"

Para o modo de recarga contínua:

sbt "~run 8080"

Reproduzir 2.x - Modo de depuração

Para executar no modo de depuração com o ouvinte http na porta 8080, execute:

sbt -jvm-debug 9999 "run 8080"

Reproduzir 2.x - Modo Prod

Iniciar no modo Prod:

sbt "start -Dhttp.port=8080"

Play 2.x - Distribuição em etapas

Crie uma distribuição faseada:

sbt stage

Para o Play 2.0.xe 2.1.x, use o target/startscript (somente Unix):

target/start -Dhttp.port=8080

Para o Play 2.2.x e 2.3.x, use o script de início apropriado no target/universal/stage/bindiretório:

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

Com o Play 2.2.x e 2.3.x no Windows:

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

Play 2.x - Distribuição Zip

Para criar uma distribuição zip:

sbt dist

Para o Play 2.0.xe 2.1.x, use o startscript (somente Unix) no zip extraído:

start -Dhttp.port=8080

Para o Play 2.2.x, use o script apropriado no [appname]-[version]/bindiretório:

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

Com o Play 2.2.x no Windows:

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

Reproduzir 1.x

Altere o http.portvalor no conf/application.confarquivo ou passe-o pela linha de comando:

play run --http.port=8080
James Ward
fonte
Curiosamente, isso realmente não funciona. Mas talvez isso seja apenas um bug ou um problema no meu sistema.
Boris Terzic
1
Acredito que agora esta é apenas para 1.x, ainda não implementado em 2.0 beta
Pere Villega
18
Estou executando o Play 2.0. Quando tento, play run 8080ele ainda roda em 9000. Estou em um Mac. O que da? EDIT: play "run 8080" funciona!
Jay Q.
6
@StefanK. Você não pode colocar a porta em um arquivo de configuração do Play porque a configuração não é lida até que o Play esteja escutando na porta. Você pode usar um env var e definir a porta para isso.
James Ward
1
@ James Enviei o seguinte problema com uma solução alternativa: github.com/sbt/sbt-native-packager/issues/155 . Obrigado!
gfournier
33

Tocar 2.0-RC4

É importante incluir aspas no comando play que você deseja executar. No meu caso, sem as aspas, o jogo ainda seria executado na porta 9000.

play "run 8080"

Como alternativa, você pode executar o seguinte no console do play (digite 'play' para chegar ao console)

run 8080
Jonathan Dixon
fonte
4
Para as pessoas que executam o Windows, a segunda opção funcionou para mim (versão 2.0.4 final).
Baztoune 6/10/12
14

Espero que isso ajude alguém.

via configurações sbt:

...
.settings(PlayKeys.playDefaultPort := 8855)
...
Armin
fonte
1
Essa é a resposta correta! Obrigado! (Para os outros iniciantes do SBT e do Play como eu, adicione a .settingslinha ao seu build.sbtarquivo, depois lazy val root = (project in file(".")). Para obter mais detalhes sobre as configurações do SBT, consulte aqui: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson
Esta é a única solução que eu encontrei que funciona em jogo 2.7.x
Coert Grobbelaar
7

Versão 2.0.3 :

  • Vá para o diretório do projeto e diga play (e nada depois disso). Isso abrirá o console do jogo.

  • Em seguida, diga executar 8080 . Isso começará a ser executado na porta 8080.

Eu espero que isso ajude.

Shashank Araokar
fonte
5

Para o Play 2.2.x no Windows com um arquivo tar distribuível, criei um arquivo no diretório raiz distribuível chamado: {PROJECT_NAME} _config.txt e adicionei:

-Dhttp.port=8080

Onde {PROJECT_NAME} deve ser substituído pelo nome do seu projeto. Em seguida, inicie o script {PROJECT_NAME} .bat como de costume no diretório bin \.

Wextux
fonte
no Windows (usando as opções dist e zip), a transmissão de argumentos da linha de comando não funciona (reprodução 2.2.0). Mas fornecer os mesmos argumentos no arquivo de configuração funciona como um encanto.
skywalker
5

Reproduzir 2.2.0 no Windows

Usando uma distribuição zip (produzida usando o comando "dist"), a única maneira de alterar a porta de inicialização foi primeiro definindo JAVA_OPTS e iniciando o aplicativo.

Por exemplo, na linha de comando

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

onde myapp.bat é o arquivo em lotes criado pelo comando "dist".

O seguinte sempre ignoraria meu parâmetro http.port e tentaria iniciar na porta padrão, 9000

bin\myapp.bat -Dhttp.port=9002

No entanto, notei que isso funciona bem no Linux / OSX, iniciando na porta solicitada:

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

Para o Play 2.3.x

ativador "run -Dhttp.port = 9001"

sumitarora
fonte
4

Você também pode definir a porta HTTP no .sbtoptsdiretório do projeto:

-Dhttp.port=9001

Então você não precisa se lembrar de adicioná-lo à runtarefa todas as vezes.

Testado com o Play 2.1.1.

lachdrache
fonte
3

para o Play 2.5.xe Play 2.6.x

sbt "-Dhttp.port=9002"

então

run
Mesut Yiğit
fonte
2

Com o commit apresentado hoje (25 de novembro), agora você pode especificar um número de porta logo após os comandos runou startsbt.

Por exemplo

play run 8080 ou play start 8080

Padrões de reprodução para a porta 9000

Olivier Refalo
fonte
Obrigado pelas atualizações de última hora! Atualizei a resposta de James para adicionar suas informações, talvez possamos criar uma resposta canônica aqui.
Boris Terzic
2

No Windows, talvez o jogo "run 9001" não funcione. Você precisa alterar o arquivo play.bat. Ver Ticket

Paddy
fonte
Pode ser valioso indicar rapidamente como alterar o arquivo play.bat aqui, caso esse link seja interrompido (e ajudar mais rapidamente alguém que procura assistência no SO).
Taylor R
2

No console do jogo, basta digitar run 8888, se desejar executá-lo a partir da porta 8888.

play> run 8888
Siddhu
fonte
2

para jogar 2.5.x

Etapa 1: Interrompa o servidor netty (se estiver em execução) usando o controle + D

Etapa 2: vá para sbt-dist / conf

Etapa 3: edite este arquivo 'sbtConfig.txt' com este

-Dhttp.port=9005

Etapa 4: iniciar o servidor

Etapa 5: http: // host: 9005 /

bobby
fonte
2

Basta adicionar a seguinte linha no seu build.sbt

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

Nitin Aggarwal
fonte
1

O Play 2.2.1 no Windows suporta uma variável de ambiente PLAY_OPTS. O arquivo play.bat do Play contém esta linha:

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 rodar na porta 9002, faça

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

Testado com o framework 2.3.7 Play. Funciona bem.

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

Eu fiz isso. sudoé necessário.

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

EDIT: Eu tive problemas por causa do uso, sudoentão tome cuidado. Finalmente, limpei o projeto e não usei mais esse truque.

Ferran Maylinch
fonte
1
Isso depende da sua distribuição (Ubuntu ...) e se você está logado como root ou não.
Pierre-Yves Le Dévéhat 17/04/2015
1

Estamos usando o Play versão 2.5.6.

Para alterar a porta, vá para a pasta raiz do projeto e pressione: activator "run 8008"no prompt de comando / terminal.

e é isso.

Swapnil Kadu
fonte
0

No Windows, eu uso um arquivo start.bat como este:

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

O -DapplyEvolutions.default = true diz à evolução para aplicar automaticamente as evoluções sem pedir confirmação. Use com cuidado no ambiente de produção, é claro ...

opensas
fonte
0

Não podemos alterar a porta do aplicativo no avtivator, mas podemos alterar no ativador da linha de comando "~ run 8080"

Mas para rodar no poeta 9000 a partir do ativador, precisamos parar o aplicativo que está usando essa porta. Podemos usar o aplicativo this para encontrar e finalizar o processo https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

Depois disso, podemos executar e será bem-sucedido.

Avinav Mishra
fonte
0

Especificar porta em desenvolvimento

Por padrão, o SBT executa o aplicativo na porta 9000:

sbt run

Para especificar uma porta, adicione o sinalizador -Dhttp.port , por exemplo:

sbt run -Dhttp.port=8080

Usando o sinalizador -Dhttp.port , você pode depurar vários aplicativos em sua máquina de desenvolvimento. Observe que você também pode usar o sinalizador -Dhttp.port em ambientes de teste e produção.

LineDrop
fonte