通过apache提供静态文件

时间:2014-07-14 15:18:57

标签: python static flask apache2 mod-wsgi

我是整个mod_wsgi的新手,并通过apache提供文件。我对烧瓶很满意,但这是我无法理解的问题。我做了hello-world程序并成功地展示了你好世界! 现在我想显示一个图像文件。所以我将hello-world.py更新为:

from flask import *
yourflaskapp = Flask(__name__)

@yourflaskapp.route("/")
def hello():
    file="203.jpg"
    return render_template("hello.html",file=file)
#   return"HEY"
if __name__ == "__main__":
    yourflaskapp.run()

我的目录结构类似于:/ var / www / hello-world

/hello-world
    test.py
    yourflaskapp.wsgi
    /static
        -203.jpg
    /templates
        -hello.html

我的模板很简单:

<!DOCTYPE html>
<html><head><title>hi</title></head>
<body>
<img src="{{url_for('static',filename=file)}}"/>
</body></html>

我的apache conf文件是:

<VirtualHost *:80>
     WSGIDaemonProcess yourflaskapp
     WSGIScriptAlias / /var/www/hello-world/yourflaskapp.wsgi
     Alias /static/ /var/www/hello-world/static
     Alias /templates/ /var/www/hello-world/templates
     <Directory /var/www/hello-world>
            WSGIProcessGroup yourflaskapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
     </Directory>
        <Directory /var/www/hello-world/static>
            Order allow,deny
            Allow from all
        </Directory>
        <Directory /var/www/hello-world/templates>
            Order allow,deny
            Allow from all
        </Directory>
     ErrorLog ${APACHE_LOG_DIR}/error.log
     LogLevel warn
     CustomLog ${APACHE_LOG_DIR}/access.log combined
 </VirtualHost>

虽然当我打开浏览器并前往我的IP时,它并没有显示图像文件。 我究竟做错了什么?我应该遵循其他任何方法吗? 如果有人可以推荐任何好的链接,我可以理解使用flask + mod_wsgi + apache2

1 个答案:

答案 0 :(得分:0)

在子URL上安装静态文件时,通常总是优先使用尾部斜杠。所以而不是:

Alias /static/ /var/www/hello-world/static

使用:

Alias /static /var/www/hello-world/static