Issue
This Content is from Stack Overflow. Question asked by YoungE
I have followed the setup procedures here https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-22-04 and my Django app is running but whenever I turn debug = False it will not load my static files.
Below is my nginx configuration:
server {
listen 80;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/sammy/myprojectdir;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
and my settings.py:
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'etal/static')]
I have tried my best, researched a lot online, and followed many links but still fruitless.
Solution
I think this is due to the fact that in your project url.py there is a line:
if settings.DEBUG:
urlpatterns += static(....)
I also recommend that you replace root
with alias
:
location /static/ {
alias /home/sammy/myprojectdir;
}
and execute the statiŃ collection command:
python3 manage.py collectstatic
and lastly, make sure that you do not have the conditions for checking the debug mode anywhere
UPDATE:
Make sure nginx looks for static where you have STATIC_ROOT
:
location /static/ {
alias /home/sammy/myprojectdir/static/;
}
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
This Question was asked in StackOverflow by YoungE and Answered by darl1ne It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.