2010-07-18 38 views
11

Bất kỳ ai biết cách triển khai một ứng dụng Flask đơn giản trên Webfaction? Tôi biết hỗ trợ Webfaction mod_wsgi và tôi đã đọc hướng dẫn trên trang web Flask nhưng tôi vẫn không thể làm cho ứng dụng của mình hoạt động. Có ai có cấu hình hoạt động không?Cách triển khai ứng dụng Flask trên Webfaction?

CẬP NHẬT để trả lời nhận xét của Graham Dumpleton.

Tôi nhận được 500 lỗi máy chủ nội bộ. Apache không hiển thị bất kỳ lỗi nào trong nhật ký. Kịch bản WSGI được thực hiện và dường như tạo ứng dụng chính xác, nhưng tôi vẫn gặp lỗi 500.

Cảm ơn.

+1

lỗi thực tế bạn là gì đang? –

+0

Thử bật gỡ lỗi trong Flask. Tôi quên làm thế nào để làm điều này vì vậy bạn có thể muốn hỏi trên #pocco irc kênh. Nếu bạn sử dụng chế độ daemon mod_wsgi với một quá trình duy nhất, bạn cũng có thể bật trình gỡ lỗi Flask. –

+0

bạn đã bao giờ làm việc này chưa? Câu trả lời của JoshFinnie có phù hợp với bạn không? –

Trả lời

16

Tôi đã làm việc với các thủ tục sau:

  • tạo và ứng dụng có tên 'myapp' kiểu mod_wsgi 3.3/Python 2.7. Webfaction sẽ tạo ra các thư mục sau:

    myapp 
        |- apache2 
        |- htdocs 
    
  • Webfaction cũng sẽ tự động tạo ra một kịch bản đơn giản index.py trong thư mục htdocs của bạn. Kiểm tra xem tập lệnh mẫu có hoạt động truy cập vào thư mục gốc của ứng dụng mới được tạo của bạn (để làm mỏng trên Webfaction, bạn cần phải "gắn kết" ứng dụng trên một trang web). Nếu nó tất cả OK thay đổi kịch bản xóa nội dung và thêm:

    from myapp import app as application 
    
  • Trong apache2/conf/httpd.conf thêm các dòng follwing:

    WSGIPythonPath /home/username/webapps/myapp/htdocs/ 
    #If you do not specify the next directive the app *will* work but you will 
    #see index.py in the path of all subdir 
    WSGIScriptAlias//home/username/webapps/myapp/htdocs/index.py 
    
    
    <Directory /home/username/webapps/myapp/htdocs> 
        AddHandler wsgi-script .py 
        RewriteEngine on 
        RewriteBase/
        WSGIScriptReloading On 
    </Directory> 
    
  • Restart apache2

+7

lưu ý rằng myapp.py phải nằm trong đường dẫn tìm kiếm mô-đun python. Bạn có thể chỉ cần làm điều đó bằng cách thêm mã sau vào index.py của bạn (nếu myapp.py được lưu trữ bên cạnh chỉ mục.py): 'nhập sys sys.path.append ('/ home//webapps//htdocs')' –

+0

Thực ra, không sửa 'sys.path', tôi nhận được 500 lỗi nội bộ gây ra bởi một Python ImportError, được chỉ ra bởi tệp nhật ký Apache trong '/ home//logs/user/error_ .log'. –

1

Bạn cần thiết lập ứng dụng "Ứng dụng tùy chỉnh (nghe trên cổng)". Ghi lại cổng được gán. Sau đó, trong mã Flask của bạn, bạn cần phải đặt hardcode cổng:

if __name__ == __main__: 
    app.run(host='0.0.0.0' port=XXXXXXX) 

Nơi bạn thay thế XXXXXXX bằng cổng được gán ngẫu nhiên cho ứng dụng tùy chỉnh của bạn.

Hy vọng điều đó sẽ hữu ích.

EDIT:

Vui lòng sử dụng Raben's Answer, cách này không nên được sử dụng trong sản xuất.

+0

Sử dụng app.run không được khuyến nghị cho sản xuất. Thật dễ dàng và sẽ hoàn thành công việc một cách nhanh chóng, nhưng khi dự án của bạn trưởng thành, bạn nên chuyển sang một thứ như mod_wsgi. – Joe

+0

Bước 2: Thông qua bảng điều khiển "Thêm trang web" trỏ đến ứng dụng này. – Shekhar

+0

Đồng ý với Joe, điều này không tốt cho sản xuất. app.run() chỉ nên được sử dụng để phát triển. –

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