2017-05-07 85 views
0

我想安裝apache服務器與燒瓶應用程序的API。 我想要一個訪問mydomain.com的用戶從apache獲得服務index.html,如果向mydomain.com/api燒瓶發出請求應該爲json服務。mod_wsg與燒瓶和由Apache服務的靜態文件

我可以得到index.html就好,但當我訪問mydomain.com/api時,我找不到404。

這是我的apache配置。

<VirtualHost *:80> 
     ServerName temp.mydomain.com 
     ServerAlias mydomain.com 
     ServerAdmin [email protected] 

     WSGIDaemonProcess incubator-web user=incubator-web group=www-data home=/var/www/incubator-web threads=5 
     WSGIScriptAlias /api/ /var/www/incubator-web/incubator-web.wsgi 
     Alias//var/www/incubator-web/html/ 

     <Directory /var/www/incubator-web> 
       WSGIProcessGroup incubator-web 
       WSGIApplicationGroup %{GLOBAL} 
       WSGIScriptReloading On 
       Require all granted 
     </Directory> 
     ErrorLog /var/www/incubator-web/logs/error.log 

     <Directory /var/www/incubator-web/html> 
       Require all granted 
     </Directory> 
</VirtualHost> 

我的瓶的應用:

from flask import Flask 

app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello, World!" 

if __name__ == "__main__": 
    app.run(host="0.0.0.0") 

和我.wsgi文件:

#!/usr/bin/python 
import sys 
sys.path.insert(0, '/var/www/incubator-web') 
from incubator_web import app as application 

我很新的這一切,所以我猜我失蹤一些明顯的事

回答

1

刪除:

Alias//var/www/incubator-web/html/ 

地址:

DocumentRoot /var/www/incubator-web/html/ 

設置Alias/隱藏WSGI應用程序作爲Alias需要precendence了WSGIScriptAliasDocumentRoot是指定默認文檔目錄的正確方法。

+0

我想我也必須將'WSGIScriptAlias/api /'改爲'WSGIScriptAlias/api'。在應用您的修復程序後,我在瀏覽器中收到了一條關於許多重定向的錯誤消息,但隨後我更改了配置(刪除了trailing斜槓),重新啓動了apache,重新加載了頁面並開始工作。 – evading

+0

是的,我差點說了一些。它是否導致具有尾隨斜線的問題取決於正在使用的Python Web框架。有些人不一定能處理好。看起來像Flask是一個不能在子網址的掛載點上有尾隨斜線的地方。 –