通过 AWS Elastic Beanstalk 部署 Django 应用程序会破坏 CSS 路径
Posted
技术标签:
【中文标题】通过 AWS Elastic Beanstalk 部署 Django 应用程序会破坏 CSS 路径【英文标题】:Deployment of Django App Through AWS Elastic Beanstalk Breaks CSS Paths 【发布时间】:2017-06-07 08:50:26 【问题描述】:我刚刚通过 Elastic Beanstalk 将我的第一个简单的 Django 1.8.6(以防万一)应用程序部署到 AWS。
似乎一切正常;但是,样式没有加载。
这是模板的代码:
% load blog_tags %
% load staticfiles %
<!DOCTYPE html>
<html>
<head>
<title>% block title %% endblock %</title>
<link href="% static "css/blog.css" %" rel="stylesheet">
</head>
<body>
<div id="content">
% block content %
% endblock %
</div>
<div id="sidebar">
<h2>My blog!</h2>
<p>This is my blog. I have written % total_posts % posts so far.</p>
<h3>Latest posts</h3>
% show_latest_posts 3 %
</div>
</body>
</html>
这里是页面的源代码:
<!DOCTYPE html>
<html>
<head>
<title>My Blog !!!</title>
<link href="/static/css/blog.css" rel="stylesheet">
</head>
<body>
<div id="content"> ...
如果我在本地机器上点击链接“/static/css/blog.css”,CSS文件就会打开;但是,在 Beanstalk 上找不到它。
我怀疑这与某些配置有关。知道我可以在哪里解决这个问题吗?
编辑:
这里是 .ebextensions/django.config 文件
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: django_by_example_blog/wsgi.py
StaticFiles: /static/=static/
【问题讨论】:
你读过realpython.com/blog/python/…吗? 没有。我跟着另一个教程。我将尝试添加该命令。 我已编辑问题以包含我的配置文件。根据上面的教程,它应该可以工作还是我错过了什么? 我意识到的另一件事是我的项目中有一个应用程序。未加载的是该应用程序的static
目录中的 CSS 文件。将STATIC_ROOT
指向它是个好主意吗?如何确保应用的静态文件正确提供?
【参考方案1】:
如果您使用的是 AMI 2,那么可以使用这个
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: mysite.wsgi:application
aws:elasticbeanstalk:environment:proxy:staticfiles:
/static: static
container_commands:
01_collectstatic:
command: "source /var/app/venv/staging-LQM1lest/bin/activate && python manage.py collectstatic --noinput"
02_migrate:
command: "source /var/app/venv/staging-LQM1lest/bin/activate && python manage.py migrate --noinput"
leader_only: true
【讨论】:
以上是关于通过 AWS Elastic Beanstalk 部署 Django 应用程序会破坏 CSS 路径的主要内容,如果未能解决你的问题,请参考以下文章
HTTPS Elastic Beanstalk (AWS) 到 Android
通过 AWS Elastic Beanstalk 部署应用程序时出错
通过 AWS Elastic Beanstalk 部署 Django 应用程序会破坏 CSS 路径
通过 AWS Elastic Beanstalk 成功部署 Django,但出现 500 错误