簡體   English   中英

Flask 網站 -- 500 內部服務器錯誤

[英]Flask website -- 500 Internal Server Error

我一生都無法弄清楚為什么我嘗試啟動的這個燒瓶應用程序不起作用。 我在 5 美元的 Digital Ocean 液滴上運行它。 這是(希望)您需要了解的所有信息:

目錄布局(包含在/var/www/ ):

FlaskApp
    FlaskApp
        __init__.py
        static
        templates
        venv
    flaskapp.wsgi

__init__.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "yay it worked"

if __name__ == "__main__":
    app.run()

flaskapp.wsgi

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")

from FlaskApp import app as application
application.secret_key = 'Add your secret key'

FlaskApp.conf (包含在/etc/apache2/sites-availble ):

<VirtualHost *:80>
        ServerName the.ip.blah.blah
        ServerAdmin admin@mywebsite.com
        WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
        <Directory /var/www/FlaskApp/FlaskApp/>
            Order allow,deny
            Allow from all
        </Directory>
        Alias /static /var/www/FlaskApp/FlaskApp/static
        <Directory /var/www/FlaskApp/FlaskApp/static/>
            Order allow,deny
            Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

venv是通過在/var/www/FlaskApp/FlaskApp/調用virtualenv venv創建的。 在使用source venv/bin/activate進入venv后,我使用pip install flask flask 在venvpip install flask

Wsgi 已啟用 ( a2enmod wsgi )。 FlaskApp.conf 已啟用( a2ensite FlaskApp )。 最后,我多次重新啟動 apache,但都沒有成功( service apache2 restart )。

我下面這個關於如何建立一個燒瓶應用指南。

這是我的錯誤的屏幕截圖:

錯誤

任何有關使其工作的幫助將不勝感激。

提前致謝。

編輯:我發現了問題: ImportError: No module named flask 這有點奇怪,因為我確實在 virtualenv pip install flask執行了pip install flask 當我只是在 virtualenv 中打開一個 python 控制台會話並嘗試import flask我沒有收到任何錯誤,所以不確定發生了什么。

另外,這個應用程序如何使用venv 我沒有看到它在任何地方被訪問,那么它是如何使用它的? 也許這就是我收到ImportError原因,因為我只在 virtualenv 上安裝了 Flask 但它沒有被使用?

問題本質上是您在虛擬環境中安裝 Flask,可能還有其他需要的庫,但是 python(wsgi 接口)與系統 python 一起運行,而系統 python 沒有安裝這些額外的庫。

我最近在 Apache 上運行 Python 的經驗很少(我來自 mod_python 和 cgi 的時代),但顯然處理這個問題的一種方法是使用site包將site-packages從您的 venv 添加到執行的 Python . 這將出現在您的.wsgi文件中。

import site

site.addsitedir('/path/to/your/venv/lib/pythonX.X/site-packages')

我認為解決您的問題的最佳方法是添加告訴您的 wsgi 文件有關您的虛擬環境並激活它:將以下代碼放入您的flaskapp.wsgi

activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

並重新啟動apache。 希望它會有所幫助! 這里找到更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM