ฉันจะเปลี่ยนพอร์ตเริ่มต้น (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/…
Gregory Kalabin

1
หลังจากที่ฉันเห็น "Windows จริงเหรอ?" ฉันต้องขอให้ Windows ของฉันใช้เพื่อนร่วมงานเพื่อตรวจสอบว่ามันยังทำอยู่หรือไม่ เราใช้ 2.2.0 และมันไม่แสดงข้อความนั้นอีกต่อไป แต่มันจะปิดการใช้งานสี ฉันสงสัยว่ามันเป็นรุ่นเบต้าเท่านั้น
Eric Wilson

ใส่ PlayKeys.devSettings: = Seq ("play.server.http.port" -> "9001") ใน build.sbt
Rajat

คำตอบ:


407

เล่น 2.x

ใน Play 2 สิ่งเหล่านี้ถูกนำมาใช้กับปลั๊กอิน sbt ดังนั้นคำแนะนำต่อไปนี้เป็นเพียงแค่งาน sbt คุณสามารถใช้ SBT วิ่ง (จในการเล่น 2 เหล่านี้จะถูกนำมาใช้กับ SBT ปลั๊กอินดังนั้นต่อไปนี้เป็นงานจริงๆเพียงแค่ SBT. คุณสามารถใช้วิ่ง SBT ใด ๆ (เช่นsbt, playหรือ activator). ด้านล่างsbtวิ่งจะใช้ แต่คุณ สามารถแทนที่มันสำหรับนักวิ่งที่คุณเลือกได้

เล่นโหมด 2.x - Dev

สำหรับโหมดโหลดเบราว์เซอร์:

sbt "run 8080"

สำหรับโหมดการโหลดซ้ำอย่างต่อเนื่อง:

sbt "~run 8080"

เล่น 2.x - โหมดแก้ไขข้อบกพร่อง

ในการรันในโหมดดีบักด้วยตัวฟัง http บนพอร์ต8080ให้รัน:

sbt -jvm-debug 9999 "run 8080"

เล่น 2.x - โหมด Prod

เริ่มในโหมด Prod:

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

วิธีสร้างการกระจาย 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

น่าสนใจพอที่ใช้ไม่ได้จริง แต่บางทีนั่นอาจเป็นเพียงข้อผิดพลาดหรือมีปัญหากับระบบของฉัน
Boris Terzic

1
ฉันเชื่อว่าตอนนี้ใช้สำหรับ 1.x เท่านั้นยังไม่ได้ใช้งานในเบต้า 2.0
Pere Villega

18
ฉันใช้งาน Play 2.0 เมื่อฉันลองplay run 8080มันยังคงทำงานบน 9000 ฉันใช้ Mac สิ่งที่ช่วยให้? แก้ไข: ใช้ play "run 8080"งานได้!
Jay Q.

6
@StefanK คุณไม่สามารถใส่พอร์ตในไฟล์ Play config เนื่องจากการตั้งค่าจะไม่อ่านจนกว่าหลังจาก Play กำลังฟังพอร์ต คุณสามารถใช้ env var และตั้งค่าพอร์ตเป็น
James Ward

1
@James ผมได้ส่งปัญหาต่อไปนี้มีวิธีแก้ปัญหา: github.com/sbt/sbt-native-packager/issues/155 ขอบคุณ!
gfournier

33

เล่น 2.0-RC4

เป็นสิ่งสำคัญที่จะต้องใส่เครื่องหมายคำพูดรอบคำสั่งเล่นที่คุณต้องการเรียกใช้ ในกรณีของฉันที่ไม่มีคำพูดเล่นจะยังคงทำงานบนพอร์ต 9000

play "run 8080"

หรือคุณสามารถเรียกใช้สิ่งต่อไปนี้จากคอนโซลการเล่น (พิมพ์ 'เล่น' เพื่อไปยังคอนโซล)

run 8080

4
สำหรับผู้ที่ใช้งาน Windows ตัวเลือกที่สองใช้งานได้สำหรับฉัน (เล่น 2.0.4 สุดท้าย)
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) แต่การจัดให้มีอาร์กิวเมนต์เดียวกันในไฟล์กำหนดค่าจะทำงานเหมือนเครื่องราง
กายวอล์คเกอร์

5

เล่น 2.2.0 บน Windows

การใช้การกระจายซิป (ผลิตโดยใช้คำสั่ง "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


ขอบคุณสำหรับการอัพเดทล่าสุด! ฉันอัปเดตคำตอบของเจมส์เพื่อเพิ่มข้อมูลของคุณบางทีเราอาจสร้างคำตอบที่ยอมรับได้ที่นี่
Boris Terzic

2

บน Windows บางทีการเล่น "run 9001" จะไม่ทำงาน คุณต้องเปลี่ยนไฟล์ play.bat ดูตั๋ว


อาจมีประโยชน์ที่จะต้องระบุวิธีการเปลี่ยนไฟล์ play.bat อย่างรวดเร็วที่นี่ในกรณีที่ลิงก์หยุดชะงัก
Taylor R

2

จากคอนโซลการเล่นคุณเพียงแค่พิมพ์ run 8888 ถ้าคุณต้องการเรียกใช้จากพอร์ต 8888

play> run 8888

2

สำหรับการเล่น 2.5.x

ขั้นตอนที่ 1: หยุดเซิร์ฟเวอร์ netty (หากกำลังทำงาน) โดยใช้การควบคุม + D

ขั้นตอนที่ 2: ไปที่ sbt-dist / conf

ขั้นตอนที่ 3: แก้ไขไฟล์นี้ 'sbtConfig.txt' ด้วยสิ่งนี้

-Dhttp.port=9005

ขั้นตอนที่ 4: เริ่มเซิร์ฟเวอร์

ขั้นตอนที่ 5: http: // host: 9005 /



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


1

ฉันทำอย่างนี้. sudoเป็นสิ่งที่จำเป็น

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

แก้ไข: ฉันมีปัญหาเนื่องจากการใช้งานsudoดังนั้นดูแล ในที่สุดฉันก็ทำความสะอาดโครงการและฉันไม่ได้ใช้เคล็ดลับนั้นอีกต่อไป


1
ขึ้นอยู่กับการกระจายของคุณ (Ubuntu ... ) และถ้าคุณเข้าสู่ระบบในฐานะ root หรือไม่
Pierre-Yves Le Dévéhat

1

เรากำลังใช้ Play เวอร์ชั่น 2.5.6

สำหรับการเปลี่ยนพอร์ตไปที่โฟลเดอร์รูทโปรเจ็กต์ของคุณแล้วกด: activator "run 8008"ใน command prompt / terminal

และนั่นคือมัน


0

ใน windows ฉันใช้ไฟล์ start.bat ดังนี้:

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

-DapplyEvolutions.default = true บอกให้วิวัฒนาการใช้การวิวัฒนาการโดยอัตโนมัติโดยไม่ต้องขอการยืนยัน ใช้ด้วยความระมัดระวังในสภาพแวดล้อมการผลิตแน่นอน ...


0

เราไม่สามารถเปลี่ยนพอร์ตแอปพลิเคชันจาก avtivator ได้ แต่สามารถเปลี่ยนจาก command line activator "~ run 8080"

แต่ในการทำงานบนกวี 9000 จาก activator เราจำเป็นต้องหยุดแอปพลิเคชันที่ใช้พอร์ตนี้ เราสามารถใช้แอปพลิเคชันนี้เพื่อค้นหาสิ่งนี้และสิ้นสุดกระบวนการ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ในสภาพแวดล้อมการทดสอบและการใช้งานจริง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.