2011-03-09 26 views
8

Tôi đang cố triển khai ứng dụng web.py của mình trên dotcloud, nhưng không thể tìm ra cách thực hiện.Web.py trên dotcloud với wsgi

tôi đã đi qua tốt hướng dẫn này: http://docs.dotcloud.com/static/tutorials/firststeps/

Và sau đó tôi nhìn http://docs.dotcloud.com/static/components/python/ ...

Dịch vụ python có thể lưu trữ bất kỳ ứng dụng web python tương thích với các tiêu chuẩn WSGI.

Điều đó bao gồm tất cả hiện đại Python web khung: Django, giá treo, web.py, web2py vv

...

python chạy với Nginx + uWSGI, bởi supervisord quản lý. Nội dung tĩnh được cung cấp trực tiếp bởi Nginx, cho hiệu suất cao hơn.

...

DotCloud dựa vào các công cụ và quy ước được thiết lập tốt để xây dựng ứng dụng của bạn. Nó sẽ là tầm thường để thích ứng với bất kỳ ứng dụng nào để chạy trên DotCloud.

...

Khi triển khai ứng dụng của bạn, DotCloud tìm kiếm một tập tin gọi wsgi.py. Hãy tạo chắc chắn tạo tệp đó ở thư mục gốc trong thư mục ứng dụng của bạn.


Googling "wsgi web.py" dẫn đến http://webpy.org/install trong đó có một mảng khá bối rối của hướng dẫn. Tôi đã thử một số đề xuất trên trang nhưng không thể làm được gì.

Triển vọng đầy hứa hẹn nhất dường như đang tạo ra một tập tin gọi là wsgi.py như vậy:

import web 

urls = (
    '/(.*)', 'hello' 
) 

class hello:  
    def GET(self, name): 
    if not name: 
     name = 'World' 
    return 'Hello, ' + name + '!' 

app = web.application(urls, globals(), autoreload=False) 
application = app.wsgifunc() 

Tôi cũng tạo ra một sản phẩm nào __init__.py bên cạnh nó.

Sau đó, tôi đã làm:

dotcloud create jca_hello.py 
dotcloud deploy -t python jca_hello.www 
dotcloud push jca_hello.www . 

Nhưng bây giờ khi tôi đi đến http://www.jca_hello.dotcloud.com/ tất cả tôi thấy là:

uWSGI Lỗi

ứng dụng wsgi không tìm thấy

Bất kỳ ý tưởng?

Trả lời

13

Tôi dùng viên của web.py và tôi làm việc tại DotCloud bằng cách này :-)

Chúng tôi sử dụng uWSGI để chạy ứng dụng WSGI của bạn. Vấn đề là uWSGI đang tìm kiếm một biến có tên là "ứng dụng".

Dưới đây là những gì tôi thường làm:

app = web.application(urls, globals()) 

if __name__ == '__main__': 
    app.run() 
else: 
    web.config.debug = False 
    application = app.wsgifunc() 

Vì vậy, bạn có thể vừa tiếp tục sử dụng ứng dụng của bạn trên máy tính địa phương của bạn:

$ python ./wsgi.py 

Và đẩy nó vào sản xuất (trên DotCloud tất nhiên;) đã tắt chế độ gỡ lỗi.

Dưới đây là tập tin của bạn wsgi.py chỉnh:

import web 

urls = (
    '/(.*)', 'Hello' 
) 

class Hello(object): 

    def GET(self, name): 
     if not name: 
      name = 'World' 
     return 'Hello, ' + name + '!' 

app = web.application(urls, globals()) 

if __name__ == '__main__': 
    app.run() 
else: 
    web.config.debug = False 
    application = app.wsgifunc() 

Cẩn thận với một cách chính xác có wsgi.py của bạn trong approot của bạn.

Ngoài ra hãy chắc chắn rằng bạn có một tập tin có tên là "requirements.txt" trong approot của bạn có chứa:

web.py 

Trong khi đó, đừng ngần ngại liên hệ với hỗ trợ DotCloud nếu bạn có bất kỳ vấn đề với việc triển khai của bạn .

+1

Tuyệt vời. Nó hoạt động. Tôi phải nói rằng tôi đã không mong đợi để có được một câu trả lời chi tiết từ một dev dotcloud trong vòng 2 giờ :) –

+0

biến 'ứng dụng' trong câu hỏi ban đầu đã tồn tại. Không? – skyork

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