2017-05-07 84 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是一个不能在子网址的挂载点上有尾随斜线的地方。 –