Django无法在ec2中提供静态文件?

问题描述 投票:0回答:1

我正在尝试使用nginx和uwsgi在ec2实例上部署django项目。该项目可以在本地PC上的开发模式下正常运行,并且可以轻松地在localhost中提供静态文件。但是问题是在ec2实例上部署后,它无法加载静态文件(css)文件。

我的项目结构:

enter image description here

设置文件在设置目录内:

设置内容的某些部分:

BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",                                                                                              "django.contrib.staticfiles",
    "control",
] 
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = '/static/'
STATICFILES_DIRS = (
      os.path.join(BASE_DIR, "static"),
)

nginx内容:

upstream url_shortener {
    server 127.0.0.1:8000;
}


server {
        listen 80;
    server_name mahbubcseju.com ;
    charset     utf-8;
    location = /favicon.ico {access_log off; log_not_found off; }

    location = /static/ {
        autoindex on;
        alias  /home/ubuntu/projects/url_shortener/static/;
    }

    location / {
        include        /etc/nginx/uwsgi_params;
        uwsgi_pass     url_shortener;
    }
}

uwsgi内容:

[uwsgi]
project = url_shortener
uid = ubuntu
base = /home/%(uid)

home = %(base)/projects
chdir = %(home)/%(project)
module = %(project).wsgi:application

master = true
processes = 5

chown-socket = %(uid):www-data
chmod-socket = 666
socket  = 127.0.0.1:8000
vacuum = true

plugins = python3,http

我在启动Nginx服务器之前运行python manage.py runserver collectstatic。>>

如果我尝试从浏览器访问css文件,则显示以下错误:

请求:http://mahbubcseju.com/static/css/home.css响应:

未找到在此服务器上找不到请求的资源。

用户ubuntu的静态目录权限:

drwxrwxrwx 4 ubuntu ubuntu 4096 Nov 7 07:50 static

我正在尝试使用nginx和uwsgi在ec2实例上部署django项目。该项目可以在本地PC上的开发模式下正常运行,并且可以轻松地在localhost中提供静态文件。但是问题是...

django nginx uwsgi
1个回答
0
投票

从nginx配置中的位置块中删除=,并且假设已经在目录上设置了允许nginx用户访问的正确权限,这应该可以工作:

© www.soinside.com 2019 - 2024. All rights reserved.