2011-10-03 34 views
11

Tôi theo các hướng dẫn ở đâyLàm thế nào để tạo ra tập tin chơi heroku?

http://blog.heroku.com/archives/2011/8/29/play/

nhưng tôi làm play run và sau đó git push heroku master nhưng một procfile không được tìm thấy.

-----> No Procfile found. Will use process: 
     play run --http.port=$PORT $PLAY_OPTS 
  1. Làm thế nào để rõ ràng tạo ra một procfile?
  2. Hướng dẫn dường như cho biết rằng tôi nên đẩy tới heroku master trong khi ứng dụng đang chạy. Tôi có đọc sai không?
  3. Tôi có thể chỉ định $PORT$PLAY_OPTS cho mydomain.herokuapp.com ở đâu?
  4. Tốt hơn là chỉ sửa đổi các giá trị cho %prod trong application.conf?

Trả lời

18

Bạn cần phải tạo một file có tên Procfile trong thư mục gốc của dự án của bạn và cho chơi nó nên chứa

web: play run --http.port=$PORT $PLAY_OPTS 

Khi bạn sau đó triển khai ứng dụng của bạn là $ PORT và $ PLAY_OPTS sẽ được thiết lập bởi Heroku khi ứng dụng được khởi động.

+3

Xin cảm ơn các bạn. Tôi chỉ không hiểu được sự cần thiết phải tạo ra một tập tin từ lúc 2 giờ sáng và bộ não của tôi bị tan chảy. Một thay đổi nhỏ trong các tài liệu để gọi một cách rõ ràng sự cần thiết phải tạo ra một "tập tin có tên Procfile trong thư mục gốc của ứng dụng chơi của bạn" sẽ là đề nghị của tôi cho những người giữ Heroku. – Brian

+2

Để chơi 2.0, bạn cần một tệp procfile khác. Xem: https://github.com/playframework/Play20/wiki/ProductionHeroku – logan

+0

@notbrain Làm thế nào để bạn thiết lập biến Heroku định nghĩa PORT mình – OVERTONE

9
  1. Tạo Procfile đơn giản như âm thanh. Chỉ cần tạo một tệp có tên là Procfile và khai báo các loại và lệnh của quy trình của bạn. Xem thêm thông tin ở đây: http://devcenter.heroku.com/articles/procfile Trong trường hợp này, bạn không cung cấp một Procfile để Heroku chỉ sử dụng quy trình Play chuẩn. Cách tốt nhất là cung cấp Procfile một cách khéo léo trong trường hợp thay đổi mặc định này trong tương lai.

  2. Không, bạn không đọc sai. Để tải lên phiên bản ứng dụng mới của bạn, bạn thực hiện lệnh git push to heroku.

  3. Biến $ PORT được đặt trong nội bộ bởi Heroku. Không cần thiết lập nó. Biến $ PLAY_OPTS được đặt trong không gian ứng dụng của bạn khi bạn lần đầu tiên đẩy ứng dụng Play lên Heroku. Bạn có thể thấy nó bằng cách sử dụng dòng lệnh heroku. Thông tin thêm về dòng lệnh là ở đây: http://devcenter.heroku.com/articles/heroku-command

Để xem cấu hình ứng dụng của bạn:

$ heroku config 

Để thay đổi $ PLAY_OPTS:

$ heroku config:remove PLAY_OPTS 
$ heroku config:add PLAY_OPTS=... 

Theo mặc định, Heroku sẽ chạy các ứng dụng chơi dưới id khung sản phẩm. Bạn có thể thay đổi điều này trong Procfile của bạn hoặc trong biến $ PLAY_OPTS. Điều quan trọng duy nhất ở đây là ứng dụng của bạn chạy ở chế độ PROD trên heroku (lưu ý rằng chế độ này khác với id khung). Heroku không thể chạy ứng dụng Play ở chế độ DEV.

+0

Re # 2 - kể từ khi tôi bây giờ thiết lập thẳng về Procfile, câu hỏi của tôi về việc cần phải đẩy nó * trong khi chơi đang chạy cục bộ * bây giờ được coi là vô lý. I * đã * đọc sai, một cú đẩy đơn giản đến heroku với các thay đổi sẽ kích hoạt triển khai, bất kể chạy. Đối với một số lý do tôi nghĩ rằng Procfile là một cái gì đó đã được tạo ra bởi chơi khi ra mắt. – Brian

8

Nó sẽ phụ thuộc đáng kể vào phiên bản phát bạn đang sử dụng. Tôi đã kiểm tra các tài liệu và tìm thấy Procfile s sau cho mỗi người trong số các phiên bản đưa ra:

  • 1.x

    web: play run --http.port=$PORT $PLAY_OPTS 
    
  • 2,0

    web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS} 
    
  • 2.2.0

    web: bin/<your-appname> -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true 
    
  • 2.2.1

    web: target/universal/stage/bin/<your-appname> -Dhttp.port=${PORT} -DapplyEvolutions.default=true 
    

Để biết thêm thông tin cho các phiên bản kiểm tra cụ thể URL này:

http://www.playframework.com/documentation/2.2.1/ProductionHeroku 

Hãy chắc chắn rằng bạn thay thế 2.2.1 với bất kỳ phiên bản bạn đang sử dụng.

Các vấn đề liên quan