我已经在带有mod_wsgi的Ubuntu 16.04 x64(阿里云)的Apache2上部署了一个简单的Flask应用程序。我正在使用mysql作为同一ubuntu服务器实例上的数据库服务器。
我已经将本地静态资源文件保存在应用程序的静态目录中。每当我调用远程资源时,它都会很好地实现,但是对于我的本地资源(即css文件,图像等)却不会发生同样的事情。
我知道默认情况下,flask的静态目录是静态的。在我的本地计算机上,一切正常。 这就是我试图从jinja2模板获取静态资源的方法。
<div id="loader-div2"><img src={{ url_for('static',filename='simple_gif.gif') }}></div>
在我认为(jinapp.py)的jinja2模板中,这是url端点:
app = Flask(__name__,static_url_path='/static')
@app.route('/')
def home():
return render_template('my_template.html')
# I've called this at the end
app.run(debug=False)
在我的wsgi文件中
#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")
from myapp import app as application
文件夹结构
/var/www/FlaskApp
|-myapp.py
|-flaskapp.wsgi
| |-static
| |-simple_gif.gif
| |-templates
| |-my_template.html
问题摘要: 无法访问Apache2服务器中的静态资源,但可以访问本地计算机。如果我尝试执行http://XX.XX.XX.XX/static/simple_gif.gif,我总是会得到404状态。出于同样的原因,我也无法在那里访问css文件。我被严重卡在这里。任何帮助将不胜感激。
预先感谢
修改 这是apache的配置
<VirtualHost *:80>
ServerName 127.0.0.1
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/>
Order allow,deny
Allow from all
Require all granted
</Directory>
Alias /static /var/www/FlaskApp/static
<Directory /var/www/FlaskApp/static/>
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Edit2 我已经解决了问题。这是另一个使apache混乱的apache conf文件。非常感谢您的关注。