Как изменить порт по умолчанию (9000), который Play использует при выполнении команды «run»?

207

Как изменить порт по умолчанию, используемый структурой воспроизведения в режиме разработки при вводе команды «run» на игровой консоли.

Это для playframework 2.0 beta.

Использование параметра конфигурации 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

Play 2.x

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

Play 2.x - Dev Mode

Для режима перезагрузки браузера:

sbt "run 8080"

Для режима непрерывной перезагрузки:

sbt "~run 8080"

Play 2.x - режим отладки

Для запуска в режиме отладки с прослушивателем http на порту 8080выполните:

sbt -jvm-debug 9999 "run 8080"

Play 2.x - Prod Mode

Запустите в режиме Prod:

sbt "start -Dhttp.port=8080"

Play 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

Play 2.x - Zip Distribution

Чтобы создать почтовый дистрибутив:

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

Play 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/issues/155 . Спасибо!
gfournier
33

Play 2.0-RC4

Важно включать кавычки вокруг команды воспроизведения, которую вы хотите запустить. В моем случае без кавычек игра все равно будет работать на порту 9000.

play "run 8080"

В качестве альтернативы вы можете запустить следующее из игровой консоли (введите «play», чтобы получить доступ к консоли)

run 8080
Джонатан Диксон
источник
4
Для людей, работающих под Windows, у меня работал второй вариант (Play 2.0.4 final).
Базун
14

Надеюсь, это кому-нибудь поможет.

через настройки sbt:

...
.settings(PlayKeys.playDefaultPort := 8855)
...
Armin
источник
1
Это правильный ответ! Спасибо! (Для других новичков SBT и Play, таких как я, добавьте .settingsстроку в ваш build.sbtфайл после lazy val root = (project in file(".")). Подробнее о настройках SBT см. Здесь: scala-sbt.org/1.0/docs/Custom-Settings.html )
Кэмерон Хадсон
Это единственное найденное мной решение, которое работает в игре 2.7.x
Coert Grobbelaar
7

Версия 2.0.3 :

  • Перейдите в каталог проекта и просто скажите play (и ничего после этого). Это откроет игровую консоль.

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

Надеюсь, это поможет.

Шашанк Араокар
источник
5

Для Play 2.2.x в Windows с распространяемым файлом tar я создал файл в корневом каталоге распространяемого файла с именем {PROJECT_NAME} _config.txt и добавил:

-Dhttp.port=8080

Где {PROJECT_NAME} должен быть заменен названием вашего проекта. Затем запустил скрипт {PROJECT_NAME} .bat, как обычно, в каталоге bin \.

Wextux
источник
в окнах (с использованием параметров dist и zip) передача аргументов командной строки не работает (игра 2.2.0). Но предоставление тех же аргументов в конфигурационном файле работает как шарм.
Скайуокер
5

Play 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
Джейсон Басс
источник
5

Для игры 2.3.x

активатор "run -Dhttp.port = 9001"

sumitarora
источник
4

Вы также можете установить порт HTTP .sbtoptsв каталоге проекта:

-Dhttp.port=9001

Тогда вам не нужно runкаждый раз добавлять его в задачу.

Протестировано с Play 2.1.1.

lachdrache
источник
3

для Play 2.5.x и Play 2.6.x

sbt "-Dhttp.port=9002"

затем

run
Месут Йигит
источник
2

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

Например

play run 8080 или play start 8080

Play по умолчанию для порта 9000

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

На Windows, возможно, игра «запустить 9001» не будет работать. Вы должны изменить файл play.bat. Посмотреть билет

Пэдди
источник
Возможно, было бы полезно быстро указать, как изменить файл play.bat здесь, на случай, если эта ссылка когда-нибудь разорвется (и быстрее помочь кому-нибудь, ищущему помощь в SO).
Тейлор Р
2

С консоли воспроизведения вам просто нужно набрать run 8888, если вы хотите запустить его через порт 8888.

play> run 8888
Siddhu
источник
2

для игры 2.5.x

Шаг 1. Остановите сервер netty (если он работает), используя control + D

Шаг 2: зайдите в sbt-dist / conf

Шаг 3: отредактируйте этот файл 'sbtConfig.txt' с этим

-Dhttp.port=9005

Шаг 4: Запустите сервер

Шаг 5: http: // host: 9005 /

Бобби
источник
2

Просто добавьте следующую строку в ваш build.sbt

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

Нитин Аггарвал
источник
1

Play 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
IanRae
источник
1

Протестировано с 2.3.7 Play Framework. Работает хорошо.

./{application}/bin/{executable} -Dhttp.port=5000
Venkatesh
источник
1

Я сделал это. sudoэто необходимо.

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

РЕДАКТИРОВАТЬ: у меня были проблемы из-за использования, 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 указывает эволюции автоматически применять эволюции без запроса подтверждения. Используйте с осторожностью на производственной среде, конечно ...

opensas
источник
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 в тестовой и производственной среде.

LineDrop
источник