[英]Django doesn't serve static files with NGINX + GUNICORN
Everything worked very well before gunicorn and nginx, static files were served to the website.在 gunicorn 和 nginx、static 文件被提供给网站之前,一切都运行良好。 But now, it doesn't work anymore.
但现在,它不再起作用了。
Settings.py设置.py
STATICFILES_DIRS = [
'/root/vcrm/vcrm1/static/'
]
STATIC_ROOT = os.path.join(BASE_DIR, 'vcrm/static')
STATIC_URL = '/static/'
MEDIA_ROOT = '/root/vcrm/vcrm1/vcrm/media/'
MEDIA_URL = '/media/'
/etc/nginx/sites-available/vcrm /etc/nginx/sites-available/vcrm
server {
listen 80;
server_name 195.110.58.168;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
root /root/vcrm/vcrm1/vcrm;
}
location = /media {
root /root/vcrm/vcrm1/vcrm;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
} }
When I run collectstatic:当我运行 collectstatic 时:
You have requested to collect static files at the destination
location as specified in your settings:
/root/vcrm/vcrm1/vcrm/static
This will overwrite existing files!
Are you sure you want to do this?
and then:接着:
Found another file with the destination path 'admin/js/vendor/jquery/jquery.min.js'. It will be
ignored since only the first encountered file is collected. If this is not what you want, make sure
every static file has a unique path.
0 static files copied to '/root/vcrm/vcrm1/vcrm/static', 251 unmodified.
NGINX + Gunicorn + Django NGINX + Gunicorn + Django
Django project: Django 项目:
djangoapp
- ...
- database
- djangoapp
- settings.py
- urls.py
- ...
- media
- static
- manage.py
- requirements.txt
Server: install venv, requirements.txt:服务器:安装venv,requirements.txt:
sudo apt-get update
sudo apt-get install -y git python3-dev python3-venv python3-pip supervisor nginx vim libpq-dev
--> cd djangoapp
pathon3 -m venv venv
source venv/bin/activate
(venv) pip3 install -r requirements.txt
Server: install NGINX:服务器:安装NGINX:
sudo apt-get install nginx
sudo vim /etc/nginx/sites-enabled/default
Server: NGINX config:服务器:NGINX 配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
location /static/ {
alias /home/ubuntu/djangoapp/static/;
}
location /media/ {
alias /home/ubuntu/djangoapp/media/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
add_header P3P 'CP="ALL DSP COR PSAa OUR NOR ONL UNI COM NAV"';
add_header Access-Control-Allow-Origin *;
}
}
Server: setup supervisor:服务器:设置主管:
cd /etc/supervisor/conf.d/
sudo vim djangoapp.conf
Server: supervisor config:服务器:主管配置:
[program:djangoapp]
command = /home/ubuntu/djangoapp/venv/bin/gunicorn djangoapp.wsgi -b 127.0.0.1:8000 -w 4 --timeout 90
autostart=true
autorestart=true
directory=/home/ubuntu/djangoapp
stderr_logfile=/var/log/game_muster.err.log
stdout_logfile=/var/log/game_muster.out.log
Server: update supervisor with the new process:服务器:使用新进程更新主管:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart djangoapp
python manage.py collectstatic
from your project directory.python manage.py collectstatic
。sudo systemctl reload nginx
.sudo systemctl reload nginx
重新加载 nginx 服务器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.