Як змінити порт за замовчуванням (9000), який Play використовує, коли виконую команду "run"?


207

Як я можу змінити порт за замовчуванням, використовуваний рамкою відтворення в режимі розробки при видачі команди "запустити" на консолі відтворення.

Це для бета-версії playframework 2.0.

Використання параметра конфігурації http.port або в командному рядку, або в application.conf, здається, не впливає:

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 це весело, бо це правда: github.com/playframework/playframework/blob/…
Грегорі Калабін

1
Після того, як я побачив "Windows, справді?" Мені довелося попросити свого Windows за допомогою колеги перевірити, чи все ще це робить. Ми використовуємо 2.2.0, і це повідомлення більше не відображає, але воно відключає кольори. Я підозрюю, що це було лише в бета-версії.
Ерік Вілсон

поставити PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") у build.sbt
Раджат

Відповіді:


407

Відтворити 2.x

У Play 2 вони реалізовані за допомогою плагіна sbt, тому наведені нижче інструкції - це справді завдання sbt. Ви можете використовувати будь-який SBT бігун (е В Play 2, вони реалізовані з SBT плагін, так що наступні дійсно тільки SBT завдання. Ви можете використовувати будь-яку SBT бігун (наприклад sbt, playчи activator). Нижче sbtбігун використовуються, але ви може замінити його на ваш вибір sbt runner.

Відтворити 2.x - Dev Mode

Для режиму перезавантаження браузера:

sbt "run 8080"

Для режиму безперервного перезавантаження:

sbt "~run 8080"

Відтворити 2.x - режим налагодження

Щоб запустити в режимі налагодження з http-слухачем на порту 8080, запустіть:

sbt -jvm-debug 9999 "run 8080"

Відтворити 2.x - режим роботи

Початок у режимі програми:

sbt "start -Dhttp.port=8080"

Відтворити 2.x - поетапне розповсюдження

Створіть поетапний розподіл:

sbt stage

Для Play 2.0.x та 2.1.x використовуйте target/startскрипт (тільки для Unix):

target/start -Dhttp.port=8080

Для Play 2.2.x та 2.3.x використовуйте відповідний сценарій запуску в target/universal/stage/binкаталозі:

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

З програмою Play 2.2.x та 2.3.x у Windows:

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

Грати 2.x - Розподіл Zip

Щоб створити поштовий розподіл:

sbt dist

Для Play 2.0.x та 2.1.x використовуйте startскрипт (тільки для Unix) у витягнутому zip:

start -Dhttp.port=8080

Для Play 2.2.x використовуйте відповідний скрипт у [appname]-[version]/binкаталозі:

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

З Play 2.2.x у Windows:

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

Відтворити 1.x

Змініть http.portзначення у conf/application.confфайлі або передайте його командному рядку:

play run --http.port=8080

Досить цікаво, що насправді не працює. Але, можливо, це лише помилка чи проблема з моєю системою.
Борис Терзич

1
Я вважаю, що зараз це лише для 1.x, ще не впровадженого в бета-версії 2.0
Pere Villega

18
Я працюю в Play 2.0. Коли я намагаюся, play run 8080він все ще працює на 9000. Я на Mac. Що дає? Редагувати: play "run 8080" працює!
Джей Q.

6
@StefanK. Ви не можете розмістити порт у файлі конфігурації Play, оскільки конфігурація не читається до того моменту, коли Play прослуховується на порту. Ви можете використовувати env var і встановити порт.
Джеймс Уорд

1
@James Я подав наступне питання із вирішенням проблеми: github.com/sbt/sbt-native-packager/isissue/155 . Дякую!
gfournier

33

Відтворити 2.0-RC4

Важливо включити лапки навколо команди play, яку потрібно запустити. У моєму випадку без котирування гра все ще працюватиме на порту 9000.

play "run 8080"

Ви також можете виконати наступне з консолі відтворення (введіть 'грати', щоб дістатися до консолі)

run 8080

4
Для людей, що працюють на Windows, для мене працював другий варіант (Play 2.0.4 final).
Baztoune

14

Сподіваюся, що це комусь допоможе.

через налаштування sbt:

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

1
Це правильна відповідь! Дякую! (Для інших початківців SBT і Play, як я, додайте .settingsрядок у свій build.sbtфайл, після lazy val root = (project in file(".")). Детальніше про налаштування SBT див. Тут: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson

Це єдине рішення, яке я знайшов, що працює в грі 2.7.x
Coert Grobbelaar

7

Версія 2.0.3 :

  • Перейдіть до каталогу проектів і просто скажіть грати (і нічого після цього). Це відкриє ігрову консоль.

  • Далі, скажімо, запустіть 8080 . Це почне грати в порт 8080.

Я сподіваюся, що це допомагає.


5

Для Play 2.2.x для Windows з роздавальним файлом tar, я створив файл у кореневій директорії, що передається під назвою: {PROJECT_NAME} _config.txt та додав:

-Dhttp.port=8080

Де {PROJECT_NAME} слід замінити назвою вашого проекту. Потім запустили {PROJECT_NAME} .bat скрипт, як зазвичай, у каталозі bin \.


у Windows (використовуючи параметри dist та zip) передача аргументів командного рядка не працює (відтворювати 2.2.0). Але надання однакових аргументів у конфігураційному файлі працює як шарм.
skywalker

5

Відтворюйте 2.2.0 в Windows

За допомогою zip-розподілу (створеного за допомогою команди "dist"), єдиний спосіб, яким я зміг змінити порт запуску, спочатку встановив JAVA_OPTS, а потім запустив програму.

Наприклад, з командного рядка

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

де myapp.bat - це пакетний файл, створений командою "dist".

Наступне завжди ігнорує мій параметр http.port і намагатиметься запустити порт за замовчуванням 9000

bin\myapp.bat -Dhttp.port=9002

Однак я помітив, що це працює добре в Linux / OSX, запускаючи запитуваний порт:

./bin/myapp -Dhttp.port=9002


4

Ви також можете встановити HTTP-порт у .sbtoptsкаталозі проекту:

-Dhttp.port=9001

Тоді вам не потрібно пам’ятати runщоразу додавати його до завдання.

Перевірено за допомогою Play 2.1.1.



2

Завдяки команді, введеній сьогодні (25 листопада), тепер ви можете вказати номер порту відразу після команд runабо startsbt.

Наприклад

play run 8080 або play start 8080

Відтворення за замовчуванням до порту 9000


Дякуємо за найновіші оновлення! Я оновив відповідь Джеймса, щоб додати вашу інформацію, можливо, тут ми можемо побудувати канонічну відповідь.
Борис Терзич

2

У Windows, можливо, гра "запустити 9001" не буде працювати. Ви повинні змінити файл play.bat. Дивіться квиток


Це може бути корисним швидко вказати, як тут змінити файл play.bat, на випадок, коли посилання колись перерветься (і швидше допомогти тому, хто шукає допомоги на SO).
Тейлор Р

2

З консолі відтворення просто потрібно набрати run 8888, якщо ви хочете запустити його з порту 8888.

play> run 8888

2

для гри 2.5.x

Крок 1. Зупиніть мережевий сервер (якщо він працює), використовуючи управління + D

Крок 2: перейдіть до sbt-dist / conf

Крок 3: відредагуйте цей файл 'sbtConfig.txt' за допомогою цього

-Dhttp.port=9005

Крок 4: Запустіть сервер

Крок 5: http: // хост: 9005 /



1

Відтворення 2.2.1 у Windows підтримує змінну середовища PLAY_OPTS. Файл play.bat Play містить цей рядок:

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

щоб запустити порт 9002, зробіть

set PLAY_OPTS=-Dhttp.port=9002
play run


1

Я зробив це. sudoце необхідно.

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

EDIT: У мене виникли проблеми через використання, sudoтому будьте обережні. Нарешті я прибрав проект і вже не використовував цей трюк.


1
Це залежить від вашого розповсюдження (Ubuntu ...) і від того, чи ви зареєстровані як root або ні.
П’єр-Ів Ле Девехат

1

Ми використовуємо Play версію 2.5.6.

Щоб змінити порт, перейдіть до кореневої папки проекту та натисніть: activator "run 8008"у командному рядку / терміналі.

і це все.


0

У Windows я використовую файл start.bat таким чином:

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

-DapplyEvolutions.default = true говорить еволюції автоматично застосовувати еволюції, не вимагаючи підтвердження. Звичайно, використовуйте з обережністю щодо виробничого середовища ...


0

Ми не можемо змінити порт програми від avtivator, але можемо змінити з активатора командного рядка "~ run 8080"

Але для запуску поета 9000 від активатора нам потрібно зупинити додаток, який використовує цей порт. Ми можемо скористатися цим додатком, щоб знайти це і закінчити процес https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

Після цього ми можемо бігати, і це буде успішно.


0

Вкажіть порт у розробці

За замовчуванням SBT запускає додаток на порт 9000:

sbt run

Щоб вказати порт, додайте прапор -Dhttp.port , наприклад:

sbt run -Dhttp.port=8080

Використовуючи прапор -Dhttp.port , ви можете налагоджувати кілька програм на вашій розроблювальній машині. Зауважте, ви також можете використовувати прапор -Dhttp.port у тестових та виробничих середовищах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.