Bagaimana cara mengubah port default (9000) yang Play gunakan ketika saya menjalankan perintah "jalankan"?

207

Bagaimana saya bisa mengubah port default yang digunakan oleh kerangka kerja dalam mode pengembangan saat mengeluarkan perintah "jalankan" pada konsol bermain.

Ini untuk playframework 2.0 beta.

Menggunakan parameter konfigurasi http.port baik di baris perintah atau di application.conf tampaknya tidak berpengaruh:

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
sumber
3
@PereVillega sangat lucu karena memang benar: github.com/playframework/playframework/blob/…
Gregory Kalabin
1
Setelah saya melihat "Windows, benarkah?" Saya harus meminta Windows saya menggunakan kolega untuk memeriksa apakah masih melakukan itu. Kami menggunakan 2.2.0, dan tidak lagi menampilkan pesan itu, tetapi itu menonaktifkan warna. Saya menduga itu hanya dalam versi beta.
Eric Wilson
masukkan PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") di build.sbt
Rajat

Jawaban:

407

Mainkan 2.x

Di Play 2, ini diimplementasikan dengan plugin sbt, jadi instruksi berikut ini benar-benar hanya tugas sbt. Anda dapat menggunakan sbt pelari (e In Play 2, ini diimplementasikan dengan sbt Plugin, sehingga berikut ini adalah tugas benar-benar hanya sbt. Anda dapat menggunakan sbt pelari (misalnya sbt, playatau activator). Di bawah sbtpelari yang digunakan, tetapi Anda dapat menggantinya dengan pelari sbt pilihan Anda.

Mainkan 2.x - Mode Dev

Untuk mode browser-reload:

sbt "run 8080"

Untuk mode reload terus menerus:

sbt "~run 8080"

Mainkan 2.x - Mode Debug

Untuk menjalankan dalam mode debug dengan pendengar http pada port 8080, jalankan:

sbt -jvm-debug 9999 "run 8080"

Mainkan 2.x - Mode Prod

Mulai dalam mode Prod:

sbt "start -Dhttp.port=8080"

Mainkan 2.x - Distribusi Tahapan

Buat distribusi bertahap:

sbt stage

Untuk Play 2.0.x dan 2.1.x gunakan target/startskrip (Hanya Unix):

target/start -Dhttp.port=8080

Untuk Play 2.2.x & 2.3.x gunakan skrip start yang sesuai di target/universal/stage/bindirektori:

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

Dengan Play 2.2.x & 2.3.x di Windows:

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

Mainkan 2.x - Distribusi Zip

Untuk membuat distribusi zip:

sbt dist

Untuk Play 2.0.x dan 2.1.x gunakan startskrip (Unix Only) di zip yang diekstrak:

start -Dhttp.port=8080

Untuk Play 2.2.x gunakan skrip yang sesuai di [appname]-[version]/bindirektori:

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

Dengan Play 2.2.x di Windows:

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

Mainkan 1.x

Ubah http.portnilai dalam conf/application.conffile atau berikan baris perintah:

play run --http.port=8080
James Ward
sumber
Cukup menarik yang sebenarnya tidak berfungsi. Tapi mungkin itu hanya bug atau masalah dengan sistem saya.
Boris Terzic
1
Saya percaya saat ini ini hanya untuk 1.x, belum diimplementasikan dalam versi 2.0 beta
Pere Villega
18
Saya menjalankan Play 2.0. Saat saya coba play run 8080masih berjalan pada 9000. Saya menggunakan Mac. Apa yang menyebabkannya? EDIT: play "run 8080" berfungsi!
Jay Q
6
@StefanK. Anda tidak dapat memasukkan port ke dalam file Play config karena config tidak terbaca sampai setelah Play mendengarkan pada port. Anda dapat menggunakan env var dan mengatur port untuk itu.
James Ward
1
@ James, saya telah mengirimkan masalah berikut ini dengan solusi: github.com/sbt/sbt-native-packager/issues/155 . Terima kasih!
gfournier
33

Mainkan 2.0-RC4

Penting untuk menyertakan kutipan di sekitar perintah main yang ingin Anda jalankan. Dalam kasus saya tanpa bermain tanda kutip masih akan berjalan pada port 9000.

play "run 8080"

Atau Anda dapat menjalankan yang berikut dari konsol play (ketik 'play' untuk menuju konsol)

run 8080
Jonathan Dixon
sumber
4
Untuk orang-orang yang menjalankan Windows, opsi kedua bekerja untuk saya (Play 2.0.4 final).
Baztoune
14

Semoga ini bisa membantu seseorang.

melalui pengaturan sbt:

...
.settings(PlayKeys.playDefaultPort := 8855)
...
Armin
sumber
1
Ini jawaban yang benar! Terima kasih! (Untuk pemula SBT dan Play lainnya seperti saya, tambahkan .settingsbaris ke build.sbtfile Anda , setelah lazy val root = (project in file(".")). Untuk detail lebih lanjut tentang pengaturan SBT, lihat di sini: scala-sbt.org/1.0/docs/Custom-Settings.html )
Cameron Hudson
Ini adalah satu-satunya solusi yang saya temukan yang berfungsi dalam permainan 2.7.x
Coert Grobbelaar
7

Versi 2.0.3 :

  • Pergi ke direktori proyek dan katakan saja bermain (dan tidak ada setelah itu). Itu akan membuka konsol permainan.

  • Selanjutnya, katakan jalankan 8080 . Itu akan mulai bermain di port 8080.

Saya harap ini membantu.

Shashank Araokar
sumber
5

Untuk Play 2.2.x di Windows dengan file tar yang dapat didistribusikan, saya membuat file di direktori root yang dapat didistribusikan bernama: {PROJECT_NAME} _config.txt dan menambahkan:

-Dhttp.port=8080

Di mana {PROJECT_NAME} harus diganti dengan nama proyek Anda. Kemudian mulailah skrip {PROJECT_NAME} .bat seperti biasa di direktori bin \.

Wextux
sumber
di windows (menggunakan opsi dist dan zip), meneruskan argumen baris perintah tidak berfungsi (main 2.2.0). Tetapi memberikan argumen yang sama dalam file konfigurasi berfungsi seperti pesona.
skywalker
5

Mainkan 2.2.0 di Windows

Menggunakan distribusi zip (diproduksi menggunakan perintah "dist"), satu-satunya cara saya dapat mengubah port startup adalah dengan terlebih dahulu mengatur JAVA_OPTS dan kemudian meluncurkan aplikasi.

Misalnya, dari baris perintah

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

di mana myapp.bat adalah file batch yang dibuat oleh perintah "dist".

Berikut ini akan selalu mengabaikan parameter http.port saya dan mencoba untuk memulai pada port default, 9000

bin\myapp.bat -Dhttp.port=9002

Namun, saya perhatikan bahwa ini berfungsi dengan baik di Linux / OSX, memulai pada port yang diminta:

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

Untuk Play 2.3.x

aktivator "run -Dhttp.port = 9001"

sumitarora
sumber
4

Anda juga dapat mengatur port HTTP di .sbtoptsdalam direktori proyek:

-Dhttp.port=9001

Maka Anda tidak harus ingat untuk menambahkannya ke runtugas setiap saat.

Diuji dengan Play 2.1.1.

lachdrache
sumber
3

untuk Play 2.5.x dan Play 2.6.x

sbt "-Dhttp.port=9002"

kemudian

run
Mesut Yiğit
sumber
2

Dengan komit yang diperkenalkan hari ini (25 Nov), Anda sekarang dapat menentukan nomor port tepat setelah perintah runatau startsbt.

Misalnya

play run 8080 atau play start 8080

Putar default ke port 9000

Olivier Refalo
sumber
Terima kasih atas pembaruan terkini! Saya memperbarui jawaban James untuk menambahkan info Anda, mungkin kita dapat membangun jawaban kanonik di sini.
Boris Terzic
2

Di Windows, permainan "run 9001" tidak akan berfungsi. Anda harus mengubah file play.bat. Lihat Tiket

Padi
sumber
Mungkin bermanfaat untuk secara cepat menunjukkan cara mengubah file play.bat di sini, jika tautannya terputus (dan untuk lebih cepat membantu seseorang yang mencari bantuan di SO).
Taylor R
2

Dari konsol play, Anda hanya perlu mengetikkan run 8888, jika Anda ingin menjalankannya dari port 8888.

play> run 8888
Siddhu
sumber
2

untuk bermain 2.5.x

Langkah 1: Hentikan server netty (jika sedang berjalan) menggunakan kontrol + D

Langkah 2: pergi ke sbt-dist / conf

Langkah 3: edit file ini 'sbtConfig.txt' dengan ini

-Dhttp.port=9005

Langkah 4: Mulai server

Langkah 5: http: // host: 9005 /

polisi
sumber
2

Cukup tambahkan baris berikut di blog Anda build.sbt

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

Nitin Aggarwal
sumber
1

Mainkan 2.2.1 di Windows mendukung variabel lingkungan PLAY_OPTS. File play.bat Play mengandung baris ini:

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

jadi untuk berjalan di port 9002, lakukan

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

Diuji dengan kerangka kerja 2.3.7 Play. Bekerja dengan baik.

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

Saya melakukan ini. sudodiperlukan.

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

EDIT: Saya punya masalah karena menggunakan sudojadi hati-hati. Akhirnya saya membersihkan proyek dan saya tidak menggunakan trik itu lagi.

Ferran Maylinch
sumber
1
Ini tergantung pada distribusi Anda (Ubuntu ...) dan jika Anda login sebagai root atau tidak.
Pierre-Yves Le Dévéhat
1

Kami menggunakan Play versi 2.5.6.

Untuk mengubah port, buka folder root proyek Anda dan tekan: activator "run 8008"di command prompt / terminal.

dan hanya itu.

Swapnil Kadu
sumber
0

Di windows, saya menggunakan file start.bat seperti ini:

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

The -DapplyEvolutions.default = true memberi tahu evolusi untuk secara otomatis menerapkan evolusi tanpa meminta konfirmasi. Gunakan dengan hati-hati pada lingkungan produksi, tentu saja ...

opensas
sumber
0

Kami tidak dapat mengubah port aplikasi dari avtivator tetapi dapat mengubah dari aktivator baris perintah "~ run 8080"

Tetapi untuk menjalankan penyair 9000 dari aktivator kita harus menghentikan aplikasi yang menggunakan port ini. Kita dapat menggunakan aplikasi ini untuk menemukan ini dan mengakhiri proses https://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

Setelah ini kita bisa berlari dan itu akan berhasil.

Avinav Mishra
sumber
0

Tentukan Port dalam Pembangunan

Secara default, SBT menjalankan aplikasi pada port 9000:

sbt run

Untuk menentukan port tambahkan flag -Dttp.port , misalnya:

sbt run -Dhttp.port=8080

Menggunakan flag -Dhttp.port , Anda dapat men-debug beberapa aplikasi pada mesin pengembangan Anda. Harap dicatat, Anda juga dapat menggunakan flag -Dttp.port di lingkungan pengujian dan produksi.

LineDrop
sumber