You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Elastic Beanstalk(Python3.6+Amazon Linux2.7.7)中部署静态文件?

解决AWS Elastic Beanstalk上Django静态文件无法加载的问题

针对你的环境(Python 3.6,64位Amazon Linux/2.7.7的Elastic Beanstalk)和项目结构,我来一步步帮你修复静态文件的配置问题:

1. 修正settings.py中的静态文件配置

你的STATIC_ROOT和STATICFILES_DIRS配置搞反了,这是核心问题:

  • STATIC_ROOT是collectstatic命令收集所有静态文件的目标目录,绝对不能指向你项目里的静态源目录(ecs_site/static),得用一个专门存放收集后文件的独立目录,比如项目根目录下的staticfiles。
  • STATICFILES_DIRS是告诉Django去哪里找自定义的静态文件目录,这里应该指向你ecs_site app下的static文件夹。

修改后的settings.py相关配置如下:

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# 正确的STATIC_ROOT:collectstatic会把所有静态文件归集到这里
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

# 正确的STATICFILES_DIRS:指定app内的静态文件源目录
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'ecs_site/static'),
]

STATIC_URL = '/static/'

2. 让Elastic Beanstalk自动运行collectstatic

EB默认会在部署时自动执行collectstatic,但为了保险起见,你可以在项目根目录创建.ebextensions文件夹,添加01_django.config配置文件,强制确保这个步骤执行:

container_commands:
  01_collectstatic:
    command: "python manage.py collectstatic --noinput"
option_settings:
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: ecs_site.settings
  aws:elasticbeanstalk:container:python:
    WSGIPath: ecs_site/wsgi.py

3. 配置Web服务器访问静态文件

你的EB环境用Nginx做反向代理,需要配置Nginx把/static/开头的请求转发到收集后的静态文件目录。在.ebextensions里再创建02_nginx.config文件:

files:
  "/etc/nginx/conf.d/elasticbeanstalk/django.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      location /static/ {
          alias /var/app/current/staticfiles/;
      }

这个配置会告诉Nginx,当收到/static/请求时,去EB部署后的项目根目录(/var/app/current)下的staticfiles文件夹找对应文件。

4. 重新部署验证

  • 先在本地运行python manage.py collectstatic测试,确保没有报错,能正常生成staticfiles目录
  • 把修改后的settings.py、.ebextensions文件夹一起打包,重新部署到Elastic Beanstalk

如果还是有问题,可以去EB控制台的Logs选项下载完整日志,检查collectstatic是否运行成功,或者Nginx的配置是否生效。

内容的提问来源于stack exchange,提问作者SonOfSeuss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:46:49