Jak zmienić domyślny port (9000), z którego korzysta Play podczas wykonywania polecenia „uruchom”?


207

Jak mogę zmienić domyślny port używany przez środowisko gry w trybie programowania podczas wydawania polecenia „uruchom” na konsoli do gry.

To jest dla Playframework 2.0 beta.

Użycie parametru konfiguracyjnego http.port w wierszu polecenia lub w pliku application.conf wydaje się nie mieć wpływu:

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 to zabawne, bo to prawda: github.com/playframework/playframework/blob/…
Gregory Kalabin

1
Po tym, jak zobaczyłem „Windows, naprawdę?” Musiałem poprosić mojego współpracownika Windows o sprawdzenie, czy nadal to robi. Używamy 2.2.0 i nie wyświetla już tego komunikatu, ale wyłącza kolory. Podejrzewam, że było to tylko w wersji beta.
Eric Wilson,

wstaw PlayKeys.devSettings: = Seq („play.server.http.port” -> „9001”) w build.sbt
Rajat

Odpowiedzi:


407

Zagraj w 2.x

W Play 2 są one implementowane za pomocą wtyczki SBT, więc poniższe instrukcje są tak naprawdę tylko zadaniami SBT. Można użyć dowolnego SBT biegacz (e W grać 2, są one realizowane ze związkiem SBT wtyczki, więc dodaje to zadania naprawdę tylko SBT. Można użyć dowolnego biegacza SBT (np sbt, playlub activator). Poniżej sbtbiegacza jest używany, ale może zastąpić go wybranym przez Ciebie biegaczem SBT.

Zagraj w 2.x - Tryb deweloperski

W trybie przeładowania przeglądarki:

sbt "run 8080"

W trybie ciągłego przeładowania:

sbt "~run 8080"

Zagraj w 2.x - Tryb debugowania

Aby uruchomić w trybie debugowania z odbiornikiem HTTP na porcie 8080, uruchom:

sbt -jvm-debug 9999 "run 8080"

Zagraj w 2.x - Tryb Prod

Uruchom w trybie Prod:

sbt "start -Dhttp.port=8080"

Zagraj w 2.x - Dystrybucja etapowa

Utwórz dystrybucję etapową:

sbt stage

W przypadku Play 2.0.x i 2.1.x użyj target/startskryptu (tylko Unix):

target/start -Dhttp.port=8080

W przypadku Play 2.2.x i 2.3.x użyj odpowiedniego skryptu startowego w target/universal/stage/binkatalogu:

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

W Play 2.2.x i 2.3.x w systemie Windows:

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

Zagraj w 2.x - Dystrybucja Zip

Aby utworzyć dystrybucję zip:

sbt dist

W przypadku Play 2.0.x i 2.1.x użyj startskryptu (tylko Unix) w rozpakowanym pliku zip:

start -Dhttp.port=8080

W przypadku Play 2.2.x użyj odpowiedniego skryptu w [appname]-[version]/binkatalogu:

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

W Play 2.2.x na Windows:

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

Zagraj w 1.x

Zmień http.portwartość w conf/application.confpliku lub przekaż go w wierszu polecenia:

play run --http.port=8080

Co ciekawe, to tak naprawdę nie działa. Ale może to tylko błąd lub problem z moim systemem.
Boris Terzic

1
Wierzę, że teraz jest to tylko dla wersji 1.x, jeszcze nie zaimplementowane w wersji 2.0 beta
Pere Villega

18
Korzystam z Play 2.0. Kiedy próbuję play run 8080, nadal działa na 9000. Jestem na komputerze Mac. Co daje? EDYCJA: play "run 8080" działa!
Jay Q.

6
@StefanK. Nie można umieścić portu w pliku konfiguracji Play, ponieważ konfiguracja nie jest czytana, dopóki Play nie nasłuchuje na porcie. Możesz użyć env var i ustawić port do tego.
James Ward

1
@James Przesłałem następujący problem z obejściem: github.com/sbt/sbt-native-packager/issues/155 . Dzięki!
gfournier

33

Zagraj w 2.0-RC4

Ważne jest, aby dołączyć cudzysłowy wokół polecenia odtwarzania, które chcesz uruchomić. W moim przypadku bez cytatów gra nadal działałaby na porcie 9000.

play "run 8080"

Alternatywnie możesz uruchomić następujące polecenie z konsoli odtwarzania (wpisz „play”, aby dostać się do konsoli)

run 8080

4
W przypadku osób działających w systemie Windows druga opcja działała dla mnie (Play 2.0.4 wersja ostateczna).
Baztoune,

14

Mam nadzieję, że to komuś pomoże.

za pomocą ustawień sbt:

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

1
To poprawna odpowiedź! Dziękuję Ci! (W przypadku innych nowicjuszy SBT i Play, takich jak ja, dodaj .settingswiersz do build.sbtpliku po lazy val root = (project in file(".")). Więcej informacji o ustawieniach SBT można znaleźć tutaj: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson

To jedyne rozwiązanie, które znalazłem, które działa w grze 2.7.x
Coert Grobbelaar,

7

Wersja 2.0.3 :

  • Przejdź do katalogu projektu i powiedz „ zagraj” (a potem nic więcej). To otworzy konsolę do gry.

  • Następnie powiedzmy uruchom 8080 . To rozpocznie grę na porcie 8080.

Mam nadzieję, że to pomoże.


5

Dla Play 2.2.x w systemie Windows z rozpowszechnialnym plikiem tar utworzyłem plik w dystrybuowanym katalogu głównym o nazwie: {PROJECT_NAME} _config.txt i dodałem:

-Dhttp.port=8080

Gdzie {PROJECT_NAME} należy zastąpić nazwą twojego projektu. Następnie uruchom skrypt {PROJECT_NAME} .bat jak zwykle w katalogu bin \.


w Windows (przy użyciu opcji dist i zip) przekazywanie argumentów wiersza poleceń nie działa (play 2.2.0). Ale podanie tych samych argumentów w pliku konfiguracyjnym działa jak urok.
skywalker

5

Zagraj w 2.2.0 na Windowsie

Używając dystrybucji zip (wyprodukowanej za pomocą polecenia „dist”), jedynym sposobem, w jaki mogłem zmienić port startowy, było ustawienie JAVA_OPTS, a następnie uruchomienie aplikacji.

Np. Z linii poleceń

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

gdzie myapp.bat jest plikiem wsadowym utworzonym za pomocą polecenia „dist”.

Poniższe zawsze zignoruje mój parametr http.port i spróbuje uruchomić na domyślnym porcie 9000

bin\myapp.bat -Dhttp.port=9002

Zauważyłem jednak, że działa to dobrze w systemie Linux / OSX, uruchamiając się na żądanym porcie:

./bin/myapp -Dhttp.port=9002


4

Możesz także ustawić port HTTP w .sbtoptskatalogu projektu:

-Dhttp.port=9001

Nie musisz wtedy pamiętać o dodawaniu go do runzadania za każdym razem.

Testowane w Play 2.1.1.



2

Dzięki zatwierdzeniu wprowadzonemu dzisiaj (25 listopada) możesz teraz podać numer portu zaraz po poleceniach runlub startsbt.

Na przykład

play run 8080 lub play start 8080

Graj domyślnie do portu 9000


Dzięki za najświeższe aktualizacje! Zaktualizowałem odpowiedź Jamesa, aby dodać twoje informacje, być może uda nam się zbudować odpowiedź kanoniczną tutaj.
Boris Terzic

2

W systemie Windows być może gra „uruchom 9001” nie będzie działać. Musisz zmienić plik play.bat. Zobacz bilet


Przydatne może być szybkie wskazanie sposobu zmiany pliku play.bat na wypadek, gdyby link kiedykolwiek się zepsuł (i szybsze udzielenie pomocy komuś, kto szuka pomocy w SO).
Taylor R

2

W konsoli do gry wystarczy wpisać run 8888, jeśli chcesz uruchomić go z portu 8888.

play> run 8888

2

do gry 2.5.x

Krok 1: Zatrzymaj serwer Netty (jeśli jest uruchomiony) za pomocą control + D

Krok 2: Przejdź do sbt-dist / conf

Krok 3: edytuj ten plik 'sbtConfig.txt' za pomocą tego

-Dhttp.port=9005

Krok 4: Uruchom serwer

Krok 5: http: // host: 9005 /


2

Po prostu dodaj następujący wiersz w swoim build.sbt

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


1

Play 2.2.1 w systemie Windows obsługuje zmienną środowiskową PLAY_OPTS. Plik play.bat Play zawiera następujący wiersz:

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

więc, aby uruchomić na porcie 9002, zrób

set PLAY_OPTS=-Dhttp.port=9002
play run

1

Testowane z frameworkiem Play 2.3.7. Działa dobrze.

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

1

Ja to zrobiłem. sudojest konieczne.

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

EDYCJA: Miałem problemy z używaniem, sudowięc uważaj. W końcu posprzątałem projekt i nie użyłem już tej sztuczki.


1
To zależy od twojej dystrybucji (Ubuntu ...) i od tego, czy jesteś zalogowany jako root, czy nie.
Pierre-Yves Le Dévéhat

1

Używamy Play w wersji 2.5.6.

Aby zmienić port, przejdź do folderu głównego projektu i naciśnij: activator "run 8008"w wierszu polecenia / terminalu.

i to wszystko.


0

W systemie Windows używam pliku start.bat w następujący sposób:

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

-DapplyEvolutions.default = true mówi ewolucji, aby automatycznie zastosowała ewolucje bez pytania o potwierdzenie. Używaj ostrożnie w środowisku produkcyjnym, oczywiście ...


0

Nie możemy zmienić portu aplikacji z avtivatora, ale możemy zmienić z aktywatora wiersza poleceń „~ run 8080”

Ale aby uruchomić poetę 9000 z aktywatora, musimy zatrzymać aplikację korzystającą z tego portu. Możemy użyć tej aplikacji, aby to znaleźć i zakończyć proces https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

Po tym możemy uruchomić i to się powiedzie.


0

Określ port w fazie rozwoju

Domyślnie SBT uruchamia aplikację na porcie 9000:

sbt run

Aby określić port, dodaj flagę -Dhttp.port , na przykład:

sbt run -Dhttp.port=8080

Za pomocą flagi -Dhttp.port można debugować wiele aplikacji na komputerze programistycznym. Uwaga: flagi -Dhttp.port można także używać w środowiskach testowych i produkcyjnych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.