Flask & uwsgi 不渲染静态文件夹中的文件



我正在学习本教程,一切都很顺利,但该应用程序没有呈现静态文件夹中的文件(css、图像、脚本等(。

我对文件夹(sudo chmod a+rwx static(和子文件夹授予了所有权限,但仍然没有进行渲染。

我使用的代码是以前使用几乎相同配置的代码(当时的Ubuntu 18.04(

app = Flask(__name__,static_url_path='',static_folder="static")

我的nginx配置文件:

location / {
include uwsgi_params;
uwsgi_pass unix:/home/sydney/ecocathlon/ecocathlon.sock;
}
location /static {
root /home/sydney/ecocathlon/static;
}

你对我如何允许程序访问文件夹有什么想法吗?

提前感谢

Sydney R.

使用alias而不是root:

location /static {
alias /home/sydney/ecocathlon/static;
}

基于这个答案。

此外,我会将static_url_path排除在应用程序定义之外,也将static_folder排除在外,因为您只是将其设置为默认值:

app = Flask(__name__)

static_url_path控制应用程序如何生成静态文件的URL,因此您可以通过将其设置为空字符串来强制它生成类似/something.js而不是/static/something.js的链接。

如果您可以使用wsgi提供文件,请检查whiteoise

如果您需要的话,它还可以简化以后迁移到CDN的操作。

使用

static_url_path=''

而不是默认的

static_url_path=None

你告诉Flask静态资源将存在于/而不是/static。这将混淆使用的尝试

location /static {

因为没有CCD_ 10url路径。但如果你尝试

location / {

请求永远不会到达应用程序的主页。

删除static_url_path=''(并保留location /static(,或者为解析为您希望nginx直接服务器化的文件的每个路由指定单独的位置。

最新更新