我正在尝试新的AWS Elastic Beanstalk控制台ui。我现在遇到一个问题,就是在ui上设置虚拟路径。
基本上我将所有静态文件(包括index.html)放在我的包中的文件夹ui
中。
这是捆绑结构:
/ui
/ui/favicon.ico
/ui/index.html
/ui/static
/ui/static/css/...
/ui/static/js/...
/ui/static/media/...
package.json
yarn.lock
app.js // this is the node api and it works
访问我的[http://public]/api/alive时,API有效。我的目的是将虚拟目录设置为从bundle文件夹ui提供静态文件。
当节点api没有匹配任何内容时,它会向下发送index.html
。这有效:[http://public]/。我得到index.html
。
然后浏览器请求静态文件/static/js/main[hash].js
。这有效,但问题是我甚至无法设置任何虚拟路径来玩。我需要在AWS上将浏览器请求/static
映射到/ui/static
。
elasticbeanstalk错误:
/ static /:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' / static /'):未知的配置设置。 static /:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' static /'):未知的配置设置。 / assets:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' / assets'):未知的配置设置。 static:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' static'):未知的配置设置。
无论我把斜杠放在哪里,它都不会起作用:
我指定的所有路径都存在于我已部署的应用包中,除了/static/assets
之外,只是为了尝试不同的东西。
我不确定这是否是新UI上的错误。如果有人遇到同样的问题,请告诉我。
答案 0 :(得分:2)
在尝试使用 Amazon Linux 2 从 Python 3.7 Django应用程序提供静态内容时,我发现了这个问题;但是,我认为对于不同的平台,答案是相同的。
阅读文档here,我发现此链接:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-staticfiles.html
表示这样的.config
示例文件
示例.ebextensions/static-files.config
option_settings:
aws:elasticbeanstalk:environment:proxy:staticfiles:
/html: statichtml <-- path/to/your/static/dir/ (added by Nick)
/images: staticimages
因此,名称空间似乎从aws:elasticbeanstalk:container:python:staticfiles
更改为aws:elasticbeanstalk:environment:proxy:staticfiles
。对于平台不可知的来说,这似乎是一个更通用的反向代理,这很有意义。做好AWS。
当我尝试这样做时,惊奇地文档是最新的并且可以正常工作。
答案 1 :(得分:0)
只是详细说明尼克的回答 - 此处的 /html
或 /images
将对应于您的环境期望接收文件的路径。
因此,如果您打开浏览器控制台的网络选项卡并看到如下内容:
404 GET http://your.app.com/static/admin/css/base.css
那么您可能希望路径为 /static
而不是 /html
值 statichtml
将对应于您的 eb 实例上静态文件的位置。
因此,如果您运行 eb ssh
然后运行 manage.py collectstatic
并获得如下输出:
You have requested to collect static files at the destination
location as specified in your settings:
/var/app/current/static
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
那么您可能希望值为 /static/