簡體   English   中英

麻煩在apache / mod_wsgi上運行燒瓶

[英]trouble running flask on apache/mod_wsgi

我正在嘗試使用apache2和mod_wsgi運行一個基本的helloworld,但是根據flask文檔中的教程,我得到的是一個錯誤500。

一切都在/ var / www / myapp中

myapp.wsgi

from yourapplication import app as application

在/ etc / apache2的/網站可獲取/默認

<VirtualHost *:80>
ServerName mydomain

WSGIDaemonProcess myap user=web group=www-data  threads=5
WSGIScriptAlias / /var/www/mydomain/myap.wsgi

<Directory /var/www/myapp>
    WSGIProcessGroup myap
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>

hello.py(燒瓶應用)

#!/usr/bin/env python
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello():
    return render_template('hello.html')

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

首先,您應該配置某種日志記錄,以便可以看到500響應背后的實際異常。

基於您的代碼,你可能會在嘗試導入將產生在你的WSGI文件的導入錯誤appyourapplication代替hello 嘗試:

from hello import app as application

如果您在此處發布的內容與您服務器上的內容相匹配,那么您還可以使用myap而不是myapp 無論哪種方式,記錄您的錯誤都應該確認。

我注意到三件事:

  1. 對.wsgi和.py使用相同的名稱
  2. 在.wsgi模塊中導入您自己的程序
  3. 你在apache配置中拼錯了myap.wsgi的myapp

在嘗試部署到Apache之前,請確保您的代碼使用Flask的Web服務器。 您的最終代碼應該看起來像這樣:

hello.wsgi

import sys
sys.path.insert(0, '/path/to/your/application')
from hello import app as application

httpd.conf文件

<VirtualHost *:80>
ServerName mydomain

WSGIDaemonProcess myapp user=web group=www-data  threads=5
WSGIScriptAlias / /var/www/mydomain/myapp.wsgi

<Directory /var/www/mydomain>
    WSGIProcessGroup myapp
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>

最后,如果發生任何錯誤,您可以在Apache的文件夾中,在Logs / error_log中跟蹤它們。 Graham說,在Flask中啟用調試模式,您將看到應用程序中的任何錯誤,並在此處更好地解釋。 基本上你只需要在hello.py中更改它:

if __name__ == '__main__':
    app.run(debug= True)

暫無
暫無

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

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