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

AWS EC2部署网站部分页面内容及静态文件加载异常求助

问题描述

我通过GitHub克隆代码在AWS EC2上部署了网站(访问地址:http://3.17.142.65/)。访问Influencer Marketing页面(http://3.17.142.65/influencers/)和Career页面(http://3.17.142.65/career/)时,服务器能正确从S3 Bucket加载静态文件;但访问首页(http://3.17.142.65/)和Who are We页面(http://3.17.142.65/COE/)时,既无法加载静态文件,也看不到页面内容(原始数据)。想知道这两个页面的内容去向,遗漏了哪些配置?我是AWS和网站部署新手,若有错误请指出,需补充信息可告知。首页及Who are We页面源码可查看对应GitHub仓库目录。


配置Nginx反向代理至Gunicorn

Gunicorn服务配置(systemd)

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/try-django-digital-marketing/try-django-digital-marketing
ExecStart=/home/ubuntu/try-django-digital-marketing/try-django-digital-marketing/env/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          BE.wsgi:application

Nginx站点配置

server {
    listen 80;
    server_name 3.17.142.65;

    location = /favicon.ico { access_log off; log_not_found off; }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

S3相关配置

Bucket Policy

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::try-marketing/*"
        }
    ]
}

CORS配置

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "POST",
            "GET",
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

IAM用户策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:AbortMultipartUpload"
            ],
            "Resource": [
                "arn:aws:s3:::try-marketing",
                "arn:aws:s3:::try-marketing/*"
            ],
            "Effect": "Allow"
        }
    ]
}

Django AWS配置文件

AWS_USERNAME = 'user11111'
AWS_ACCESS_KEY_ID = 'xxxxxxxxxx' 
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxx' 
AWS_PRELOAD_METADATA = True
AWS_QUERYSTRING_AUTH = False
AWS_S3_SIGNATURE_VERSION = "s3v4"
AWS_S3_REGION_NAME = 'us-east-2'
DEFAULT_FILE_STORAGE = 'BE.aws.utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'BE.aws.utils.StaticRootS3BotoStorage'
AWS_STORAGE_BUCKET_NAME = 'try-marketing'
S3DIRECT_REGION = 'us-east-2'
S3_URL = '//%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
MEDIA_URL = '//%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME
MEDIA_ROOT = MEDIA_URL
STATIC_URL = S3_URL + 'static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
AWS_DEFAULT_ACL = None

可能的配置遗漏与排查方向

  • URL路由配置问题
    检查Django项目的urls.py,确认首页(/)和/COE/的路由是否正确映射到对应视图。部分页面正常说明Gunicorn和Nginx基础代理无问题,大概率是路由缺失或匹配规则错误。注意Django默认的APPEND_SLASH规则,若路由定义为path('COE/', ...),访问/COE会自动重定向,但如果视图异常仍会导致页面加载失败。

  • 静态文件同步问题
    执行python manage.py collectstatic确保所有静态文件上传至S3的static/目录,检查S3中该目录的文件结构,确认首页和COE页面所需的CSS、JS等资源是否存在且权限为公开可读(Bucket Policy允许GetObject,但文件ACL设为私有仍无法访问)。

  • 视图函数异常
    通过journalctl -u gunicorn.service查看Gunicorn日志,确认首页和COE页面的视图是否抛出异常(如数据库连接错误、模板不存在等)。若DEBUG = False,Django不会显示错误信息,必须依赖日志排查;若DEBUG = True,访问页面可直接看到错误详情。

  • Django模板路径问题
    确认首页和COE页面的模板文件存在于项目templates目录下,且settings.py中的TEMPLATES配置正确。模板不存在会导致视图抛出异常,页面无内容返回。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:30:55