Làm cách nào để thay đổi cổng mặc định (9000) mà Play sử dụng khi tôi thực hiện lệnh chạy run của Wikipedia?


207

Làm cách nào để thay đổi cổng mặc định được sử dụng bởi khung phát trong chế độ phát triển khi ban hành lệnh "chạy" trên bảng điều khiển phát.

Điều này là dành cho playframework 2.0 beta.

Sử dụng tham số cấu hình http.port trên dòng lệnh hoặc trong application.conf dường như không có hiệu lực:

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 thật vui nhộn vì nó đúng: github.com/playframework/playframework/blob/ mẹo
Gregory Kalabin

1
Sau khi tôi thấy "Windows, thật sao?" Tôi đã phải yêu cầu Windows của mình sử dụng đồng nghiệp để kiểm tra xem nó có còn như vậy không. Chúng tôi đang sử dụng 2.2.0 và nó không còn hiển thị thông báo đó nữa, nhưng nó vô hiệu hóa màu sắc. Tôi nghi ngờ rằng nó chỉ có trong phiên bản beta.
Eric Wilson

đặt PlayKeys.devSinstall: = Seq ("play.server.http.port" -> "9001") trong build.sbt
Rajat

Câu trả lời:


407

Chơi 2.x

Trong Play 2, chúng được triển khai với plugin sbt, vì vậy các hướng dẫn sau đây thực sự chỉ là các tác vụ sbt. Bạn có thể sử dụng bất kỳ SBT Á hậu (e Trong Chơi 2, đây là những thực hiện với một SBT plugin, nên sau đây là nhiệm vụ thực sự chỉ là SBT. Bạn có thể sử dụng bất kỳ Á hậu SBT (ví dụ sbt, playhoặc activator) Bên dưới. sbtÁ hậu được sử dụng, nhưng bạn có thể thay thế nó cho người chạy sbt của bạn lựa chọn.

Chơi 2.x - Chế độ Dev

Đối với chế độ tải lại trình duyệt:

sbt "run 8080"

Đối với chế độ tải lại liên tục:

sbt "~run 8080"

Chơi 2.x - Chế độ gỡ lỗi

Để chạy trong chế độ gỡ lỗi với trình nghe http trên cổng 8080, hãy chạy:

sbt -jvm-debug 9999 "run 8080"

Chơi 2.x - Chế độ Prod

Bắt đầu ở chế độ Prod:

sbt "start -Dhttp.port=8080"

Chơi 2.x - Phân phối theo giai đoạn

Tạo phân phối theo giai đoạn:

sbt stage

Đối với Play 2.0.x và 2.1.x, hãy sử dụng target/starttập lệnh (Chỉ dành cho Unix):

target/start -Dhttp.port=8080

Đối với Play 2.2.x & 2.3.x, hãy sử dụng tập lệnh bắt đầu thích hợp trong target/universal/stage/binthư mục:

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

Với Play 2.2.x & 2.3.x trên Windows:

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

Chơi 2.x - Phân phối Zip

Để tạo phân phối zip:

sbt dist

Đối với Play 2.0.x và 2.1.x, hãy sử dụng starttập lệnh (Chỉ dành cho Unix) trong zip được giải nén:

start -Dhttp.port=8080

Đối với Play 2.2.x, sử dụng tập lệnh thích hợp trong [appname]-[version]/binthư mục:

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

Với Play 2.2.x trên Windows:

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

Chơi 1.x

Thay đổi http.portgiá trị trong conf/application.conftệp hoặc truyền dòng lệnh:

play run --http.port=8080

Điều thú vị là nó không thực sự hoạt động. Nhưng có lẽ đó chỉ là một lỗi hoặc một vấn đề với hệ thống của tôi.
Boris Terzic

1
Tôi tin ngay bây giờ điều này chỉ dành cho 1.x, chưa được triển khai trong phiên bản 2.0 beta
Pere Villega

18
Tôi đang chạy Play 2.0. Khi tôi thử, play run 8080nó vẫn chạy trên 9000. Tôi đang dùng Mac. Đưa cái gì? EDIT: play "run 8080" hoạt động!
Jay Q.

6
@StefanK. Bạn không thể đặt cổng vào tệp cấu hình Play vì cấu hình không được đọc cho đến khi Play nghe trên cổng. Bạn có thể sử dụng một var env và đặt cổng vào đó.
Phường James

1
@James Tôi đã gửi vấn đề sau với một cách giải quyết: github.com/sbt/sbt-native-packager/issues/155 . Cảm ơn!
gfournier

33

Chơi 2.0-RC4

Điều quan trọng là bao gồm các trích dẫn xung quanh lệnh play mà bạn muốn chạy. Trong trường hợp của tôi không có dấu ngoặc kép, trò chơi vẫn chạy trên cổng 9000.

play "run 8080"

Ngoài ra, bạn có thể chạy các mục sau từ bảng điều khiển phát (nhập 'play' để đến bảng điều khiển)

run 8080

4
Đối với những người chạy trên Windows, tùy chọn thứ hai hoạt động với tôi (Play 2.0.4 Final).
Baztoune

14

Hy vọng điều này sẽ giúp được ai đó.

thông qua cài đặt sbt:

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

1
Đây là câu trả lời chính xác! Cảm ơn bạn! (Đối với những người mới chơi SBT và Play như tôi, hãy thêm .settingsdòng vào build.sbttệp của bạn , sau lazy val root = (project in file(".")). Để biết thêm chi tiết về cài đặt SBT, xem tại đây: scala-sbt.org/1.0/docs/Custom-Sinstall.html )
Cameron Hudson

Đây là giải pháp duy nhất tôi tìm thấy hoạt động trong trò chơi 2.7.x
Coert Grobbelaar

7

Phiên bản 2.0.3 :

  • Đi đến thư mục dự án và chỉ nói chơi (và không có gì sau đó). Điều đó sẽ mở giao diện điều khiển chơi.

  • Tiếp theo, nói chạy 8080 . Điều đó sẽ bắt đầu chơi trên cổng 8080.

Tôi hi vọng cái này giúp được.


5

Đối với Play 2.2.x trên Windows với tệp tar có thể phân phối, tôi đã tạo một tệp trong thư mục gốc có thể phân phối được gọi là: {PROJECT_NAME} _config.txt và đã thêm:

-Dhttp.port=8080

Trong đó {PRO DỰ_NAME} nên được thay thế bằng tên dự án của bạn. Sau đó, bắt đầu tập lệnh {PRO DỰ_NAME} .bat như bình thường trong thư mục bin \.


trong các cửa sổ (sử dụng tùy chọn dist và zip), truyền các đối số dòng lệnh không hoạt động (phát 2.2.0). Nhưng việc cung cấp các đối số tương tự trong tệp cấu hình hoạt động như một nét duyên dáng.
skywalker

5

Chơi 2.2.0 trên Windows

Sử dụng phân phối zip (được tạo bằng lệnh "dist"), cách duy nhất tôi có thể thay đổi cổng khởi động là trước tiên cài đặt JAVA_OPTS và sau đó khởi chạy ứng dụng.

Ví dụ, từ dòng lệnh

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

trong đó myapp.bat là tệp bó được tạo bởi lệnh "dist".

Sau đây sẽ luôn bỏ qua tham số http.port của tôi và cố gắng bắt đầu trên cổng mặc định, 9000

bin\myapp.bat -Dhttp.port=9002

Tuy nhiên, tôi nhận thấy rằng điều này hoạt động tốt trên Linux / OSX, bắt đầu từ cổng được yêu cầu:

./bin/myapp -Dhttp.port=9002


4

Bạn cũng có thể đặt cổng HTTP trong .sbtoptsthư mục dự án:

-Dhttp.port=9001

Sau đó, bạn không cần phải nhớ thêm nó vào run nhiệm vụ mỗi lần.

Đã thử nghiệm với Play 2.1.1.



2

Với cam kết được giới thiệu hôm nay (25/11), giờ đây bạn có thể chỉ định số cổng ngay sau lệnh runhoặc startsbt.

Ví dụ

play run 8080 hoặc là play start 8080

Chơi mặc định cho cổng 9000


Cảm ơn đã cập nhật đến phút! Tôi đã cập nhật câu trả lời của James để thêm thông tin của bạn, có lẽ chúng ta có thể xây dựng một câu trả lời chính tắc ở đây.
Boris Terzic

2

Trên Windows, có thể vở kịch "run 9001" sẽ không hoạt động. Bạn phải thay đổi tập tin play.bat. Xem


Có thể có giá trị khi nhanh chóng chỉ ra cách thay đổi tệp play.bat tại đây, trong trường hợp liên kết đó bị hỏng (và nhanh chóng giúp ai đó tìm kiếm trợ giúp về SO).
Taylor R

2

Từ bảng điều khiển chơi, bạn chỉ cần gõ run 8888, nếu bạn muốn chạy nó từ cổng 8888.

play> run 8888

2

để chơi 2.5.x

Bước 1: Dừng máy chủ netty (nếu nó đang chạy) bằng control + D

Bước 2: truy cập sbt-dist / conf

Bước 3: chỉnh sửa tệp này 'sbtConfig.txt' bằng cách này

-Dhttp.port=9005

Bước 4: Khởi động máy chủ

Bước 5: http: // máy chủ: 9005 /


2

Chỉ cần thêm dòng sau vào build.sbt

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


1

Play 2.2.1 trên Windows hỗ trợ biến môi trường PLAY_OPTS. Tệp play.bat của Play chứa dòng này:

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

Vì vậy, để chạy trên cổng 9002, hãy làm

set PLAY_OPTS=-Dhttp.port=9002
play run

1

Đã thử nghiệm với khung chơi 2.3.7. Hoạt động tốt.

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

1

Tôi đã làm điều này. sudolà cần thiết.

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

EDIT: Tôi gặp vấn đề vì sử dụng sudovì vậy hãy cẩn thận. Cuối cùng tôi đã dọn sạch dự án và tôi đã không sử dụng mánh khóe đó nữa.


1
Điều này phụ thuộc vào phân phối của bạn (Ubuntu ...) và nếu bạn đã đăng nhập bằng root hay không.
Pierre-Yves Le Dévéhat

1

Chúng tôi đang sử dụng phiên bản Play 2.5.6.

Để thay đổi cổng, hãy chuyển đến thư mục gốc của dự án và nhấn: activator "run 8008" in prompt prompt / terminal.

và đó là nó.


0

Trên windows, tôi sử dụng tệp start.bat như thế này:

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

-DapplyEvolutions.default = true cho phép tiến hóa tự động áp dụng các tiến hóa mà không yêu cầu xác nhận. Sử dụng thận trọng trên môi trường sản xuất, tất nhiên ...


0

Chúng tôi không thể thay đổi cổng ứng dụng từ trình kích hoạt nhưng có thể thay đổi từ trình kích hoạt dòng lệnh "~ run 8080"

Nhưng để chạy trên nhà thơ 9000 từ trình kích hoạt, chúng ta cần dừng ứng dụng đang sử dụng cổng này. Chúng tôi có thể sử dụng ứng dụng này để tìm ứng dụng này và kết thúc quá trình https://technet.microsoft.com/en-in/sysi INTERNals / bb897437.aspx

Sau này chúng ta có thể chạy và nó sẽ thành công.


0

Chỉ định cảng đang phát triển

Theo mặc định, SBT chạy ứng dụng trên cổng 9000:

sbt run

Để chỉ định một cổng thêm cờ -Dhttp.port , ví dụ:

sbt run -Dhttp.port=8080

Sử dụng cờ -Dhttp.port , bạn có thể gỡ lỗi nhiều ứng dụng trên máy phát triển của mình. Xin lưu ý, bạn cũng có thể sử dụng cờ -Dhttp.port trong môi trường thử nghiệm và sản xuất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.