【发布时间】:2019-06-27 08:31:32
【问题描述】:
我按照this 教程在 DigitalOcean 上部署了我的 Django 项目。我已经安装了 Nginx 和 Supervisor 并一直工作,直到我将 settings.py 中的 DEBUG 选项设置为 False
我尝试配置 nginx.conf 和 settings.py 百万次。将 root 更改为别名将无济于事。
Nginx 配置文件:
upstream app_server {
server unix:/home/db1/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
# add here the ip address of your server
# or a domain pointing to that ip (like example.com or www.example.com)
server_name ...;
keepalive_timeout 5;
client_max_body_size 4G;
access_log /home/db1/logs/nginx-access.log;
error_log /home/db1/logs/nginx-error.log;
location /static/ {
root /home/db1/site1/static;
}
# checks for static file, if not found proxy to app
location / {
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}
Settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
【问题讨论】:
-
你运行 collectstatic 了吗?尝试删除尾部斜杠
STATIC_ROOT = os.path.join(BASE_DIR, 'static')。如果您的STATIC_DIR是static,则应将名称更改为不同于static的名称,以保持 STATIC_ROOT 和 STATIC_DIR 不同 -
谢谢。我删除了斜线,它没有做魔法。而且我已经用不同的路径运行了 collectstatic 一百次。此外,我在项目内的三个不同位置都有我的静态文件夹的副本,但这无济于事。我的设置中没有 STATIC_DIR 参数,本教程也缺少它。只有 STATIC_URL
-
当 debug 设置为 true 时是否有效?
-
是的,它确实有效。无论如何,我找到了解决方案。我认为我的错误是我使用附加到地址的开发端口 8000 运行,因此为了能够加载静态文件,我需要删除端口。尽管如此,我还是不知道这是否是主要问题,因为我根据 DigitalOcean 本身的教程进行了一些调整digitalocean.com/community/tutorials/…
-
我应该提一下,nginx.conf中有一个错误。当您使用 'root' 而不是 'alias' 时,您应该排除结束文件夹,它必须是 `root /home/db1/site1/`。解释得很好here
标签: css django nginx digital-ocean