[英]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 在venv
中pip 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.