【发布时间】:2019-08-21 09:49:04
【问题描述】:
我对 Django 开发和 Nginx 配置还很陌生。 使用 gunicorn 和 Nginx 将应用程序部署到 Amazon EC2 中后,页面加载时不会包含静态文件(css、js 等)。
我怀疑 Nginx 无法加载静态文件。我花了几个小时尝试调整 Nginx 配置,并阅读其他答案,但仍然没有运气。
感谢任何正确方向的提示。
/etc/nginx/sites-available/sbs
server{
listen 80;
server_name my_server_host;
location = /favicon.ico {
access_log off; log_not_found off;
}
location /static/ {
autoindex on;
root /home/ubuntu/secure-banking-system/sbs/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/secure-banking-system/sbs/sbs.sock;
}
}
settings.py
STATIC_ROOT = '/home/ubuntu/secure-banking-system/sbs/static'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'sbs/static')
]
我已经验证了静态文件在/home/ubuntu/secure-banking-system/sbs/static/中可用
文件结构
secure-banking-system
|
|──sbs
|
|────│
│
├── sbs
│ |
│ └── static
│ ├── css
│ ├── images
│ └── js
|
├── static
├── css
├── images
└── js
【问题讨论】:
-
确定一下,你执行
python manage.py collectstatic了吗? -
还可以尝试在您的 sbs 文件中的
/static/位置块中删除此语句root /home/ubuntu/secure-banking-system/sbs/static/;最后的斜杠。 -
@Paandittya 我确实运行了 collectstatic。曾尝试删除尾部斜杠。感谢您的回复。但它仍然不加载文件。
-
我认为它必须在开发环境中正常工作?
-
删除
root /home/ubuntu/secure-banking-system/sbs/中的static。此外,假设BASE_DIR是/home/ubuntu/secure-banking-system/,您将STATIC_ROOT与STATICFILES_DIRS一起使用是错误的。有关this SO question 和STATICFILES_DIRS docs 的更多信息。
标签: django nginx amazon-ec2 gunicorn static-files