2012-06-18 88 views
1

我試圖與運行的Apache2和mod_wsgi的一個基本的HelloWorld但是從燒瓶文檔的一切我得到了教程depsite下面是一個錯誤500麻煩運行瓶/ mod_wsgi的

一切都在/ 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() 

回答

2

首先,你應該配置某種logging所以你可以看到後面的500響應實際的異常。

根據您的代碼,當您嘗試從yourapplication而不是hello導入app時,可能會在WSGI文件中生成ImportError。嘗試:

from hello import app as application 

也有幾個點,你用myap代替myapp,如果你張貼在這裏比賽什麼是你的服務器上。無論哪種方式,記錄您的錯誤應該確認它。

+1

Apache/mod_wsgi不會抑制錯誤。如果WSGI腳本mod_wsgi中的錯誤會將其記錄到Apache錯誤日誌中。否則,除非您處於Flask調試模式,否則Flask本身會將內部應用程序錯誤轉換爲通用500錯誤頁面,因此沒有任何內容可以通過mod_wsgi進行記錄。因此,所有關於需要啓用Flask調試模式或設置Flask以其他方式記錄它們,但是這不是一個mod_wsgi問題。 –

+0

感謝您的更正。 –

2

我注意到三兩件事:

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

請確保您的代碼在嘗試部署到Apache之前使用Flask的網絡服務器工作。 你的最終代碼看起來應該是這樣工作的:

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)