通过 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 错误

通过 aws.push 部署到 Elastic Beanstalk 时保留某些现有文件

通过ebextensions在aws elastic beanstalk中用nginx替换apache