2012-08-12 53 views
1

我正在研究一個小型web儀表板 - 使用python的web.py框架實現後端的項目。爲多個python web.py應用程序配置apache2 conf

儀表板上有各種小部件,其中一個小部件的後端也使用web.py實現。問題是,一次只有一個指定的應用程序入口點似乎起作用。儀表板和小部件的apache配置都放在同一個文件中。原始配置文件(實際上有一段工作)中的Apache2/conf.d /是這樣的:

WSGIPythonPath /var/www/ProjectDASHBOARD/api 
WSGIScriptAlias /ProjectDASHBOARD/api /var/www/ProjectDASHBOARD/api/api.py/ 

AddType text/html .py 

<Directory /var/www/ProjectDASHBOARD/api/> 
    Order deny,allow 
    Allow from all 
</Directory> 


# Stuff for graphingwidget 

WSGIPythonPath /var/www/ProjectDASHBOARD/widgets/graphingwidget/api 
WSGIScriptAlias /ProjectDASHBOARD/widgets/graphingwidget/api /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/api.py/ 

AddType text/html .py 

<Directory /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/> 
    Order deny,allow 
    Allow from all 
</Directory> 

僅憑這一點是不行的,還有的是需要在這兩個API的下一段代碼.py文件,檢查他們的approriate路徑,並加入他們,如果沒有找到(摘自widget的文件):

import web 
import json 
import sys 

path = '/var/www/ProjectDASHBOARD/widgets/graphingwidget/api' 
if path not in sys.path: 
    sys.path.append(path) 

一個類似的檢查,對儀表盤進行。

所有這些確實工作了整整一週,然後在試圖從頭安裝時突然停止工作,使得對於什麼是錯誤更容易混淆。嘗試從網頁訪問api時收到的錯誤是HTTP錯誤500內部服務器錯誤。然後到Apache的配置文件進行一些更改後的API的一開始工作:

WSGIPythonPath /var/www/ProjectDASHBOARD/widgets/graphingwidget/api 
WSGIPythonPath /var/www/ProjectDASHBOARD/api 
WSGIScriptAlias /ProjectDASHBOARD/api /var/www/ProjectDASHBOARD/api/api.py/ 
WSGIScriptAlias /ProjectDASHBOARD/widgets/graphingwidget/api /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/api.py/ 

AddType text/html .py 

<Directory /var/www/ProjectDASHBOARD/api/> 
    Order deny,allow 
    Allow from all 
</Directory> 


# Stuff for graphingwidget 

AddType text/html .py 

<Directory /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/> 
    Order deny,allow 
    Allow from all 
</Directory> 

基本上只是移動的路徑的文件的開頭,並調換了一點點的順序,以及API的突然一個開始再次工作。稍微改變順序,然後使另一個工作,並制動另一個。我不記得路徑的正確順序,但重點是過去它運行良好,然後在安裝到新的相同虛擬機時停止工作,並且根據路徑的順序只有一個api的工作。

最初的配置是在不同的文件中,但它沒有像那樣工作。如果像「Target WSGI腳本路徑」這樣的各種錯誤不能作爲Python模塊加載,並且只有在它們移動到同一文件時纔開始工作。

我在這裏想到某個路徑被另一個路徑覆蓋,或者這一次整個配置從根本上說是錯誤的,並且只能靠純粹的運氣來工作(整整一週,沒有問題...... )

任何線索至於什麼是錯的?

回答