2016-01-20 25 views
-1

我有一個Apache(版本2.2.15)服務器(在Linux CentOS上運行),其中有很多.cgi腳本位於/ var/www/cgi-斌,別名:Apache和Flask:試圖調用目錄作爲腳本

ScriptAlias /cgi-bin "/var/www/cgi-bin" 

而當我進入MYDOMAIN/cgi-bin目錄/ something.cgi它工作正常。

現在我想讓Flask應用程序在80端口的Apache服務器上運行。該應用程序位於/ var/www/cgi-bin/app中。所以,我創建簡單的瓶的應用程序 - a.py

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return 'Hello World!' 

a.wsgi文件:

import sys 
import site 
sys.path.insert(0, '/var/www/cgi-bin/app') 
site.addsitedir('/var/www/cgi-bin/app:/<my_python_path>/Lib/site-packages') 
from app import app as application 

此外,在/etc/httpd/conf/httpd.conf中我有創建所需的虛擬主機:

<VirtualHost *:80> 
ServerName app.<mydomain>:80 
WSGIDaemonProcess app python-path=/var/www/cgi-bin/app:/<my_python_path>/Lib/site-packages user=user1 group=user1 threads=5 
WSGIScriptAlias /cgi-bin/app /var/www/cgi-bin/app/a.wsgi 
<Directory /var/www/cgi-bin/app> 
    WSGIProcessGroup app 
    WSGIApplicationGroup %{GLOBAL} 
    Order deny,allow 
    Allow from all 
</Directory> 
ErrorLog /var/www/cgi-bin/app/logs/error.log 
CustomLog /var/www/cgi-bin/app/logs/custom.log combined 
</VirtualHost> 

但每次我嘗試打開MYDOMAIN/cgi-bin目錄/應用/在error.log文件中我看到這個錯誤:

(...) attempt to invoke directory as script: /var/www/cgi-bin/app/ 

你知道我在這裏做錯了什麼嗎?

回答

0

你不應該把你的Flask應用放在cgi-bin之下,實際上它不應該在DocumentRoot之下。將它完全移到其他地方 - 我喜歡/srv/,但這取決於您 - 並適當更改WSGI別名。

+0

謝謝你的回答。我沒有想過。現在燒瓶應用程序被移至/home/user/app/a.py。 wsgi文件(位置沒有任何變化:/var/www/cgi-bin/app/a.wsgi)和httpd.conf現在看起來像這樣:http://pastebin.com/tWcupwCv 但是,不幸的是它似乎不工作。我的路上有更多的錯誤嗎? – mchfrnc