2

一些帮助之后,我让我的瓶子应用程序与 Elastic Beanstalk 一起运行。几乎 - 我仍然看不到任何静态文件。我已按照此处的说明在.ebextensions 目录中插入一个名为 python.conf 的文件,其中包含以下内容:

option_settings:
  "aws:elasticbeanstalk:container:python:staticfiles":
    "/static/": "static/"

不幸的是,这并没有奏效。我的文件位于 /static 下的文件夹中(例如 /static/js、/static/css 等)。在我的瓶子应用程序中,我根据此处的答案提供静态文件,如下所示:

@route('/static/:path#.+#')
def server_static(path):
    return static_file(path, root='./static')

当我在本地运行它时,一切正常。有谁知道我做错了什么?我应该遵循不同的程序,因为我的静态文件位于子文件夹中,还是因为我使用的是瓶子而不是烧瓶?我知道这里已经针对烧瓶提出了类似的问题,但没有答案(据我所知,这可能是一个完全不同的问题)。非常感谢,亚历克斯

4

2 回答 2

1

我确信这不是最优雅的解决方案,但我通过将我所有的静态文件放在一个 S3 存储桶中并在我的所有页面中使用它来解决这个问题。

我一开始并没有那么多静态文件,所以这没什么大不了的。我刚刚创建了一个 S3 存储桶 url 的变量:

S3Static = r'mystaticbucket.s3-us-west-2.amazonaws.com'

将它传递给我的瓶子模板,并将链接更改为:

<link rel="stylesheet" type="text/css" href = "/static/css/MarmoStyle.css" >

<link rel="stylesheet" type="text/css" href = "{{S3Static}}/static/css/Style.css">

(即刚刚在路径前添加 {{S3Static}})如果您像我一样在单独的 %included 标头模板中使用静态文件,则必须将 S3Static 变量传递给模板,如下所示:

%include header.tpl S3Static=S3Static

就是这样。我知道这对每个人来说都不是一个理想的解决方案,并且可能有更好的方法来做到这一点,但到目前为止它对我有用。谢谢,亚历克斯

于 2013-05-02T03:48:59.393 回答
0

你真的应该研究一下 python 的白噪声模块。然后,您只需更改一行,并且 URL 路由由瓶子旁边的 whitenoise 处理。本质上,您可以保持 url 与您的域相同,即使 whitenoise 是从其他地方提取的。另外,它旨在缓存您的静态数据。绝对应该使用它。设置大约需要 3 行,您可以删除瓶子的静态文件夹路由。

于 2017-08-24T17:04:03.640 回答