Django不支持NGINX + GUNICORN的静态文件

bsxbgnwa  于 2023-05-16  发布在  Nginx
关注(0)|答案(3)|浏览(108)

在gunicorn和nginx之前,一切都运行得很好,静态文件被提供给网站。但现在,它不再工作了。
Settings.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

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;
}

}
运行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?

然后:

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.
r55awzrz

r55awzrz1#

Nginx + Gunicorn + Django
Django项目:

djangoapp
 - ...
 - database
 - djangoapp
   - settings.py
   - urls.py
   - ...
 - media
 - static
 - manage.py
 - requirements.txt

服务器:install 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

服务器:安装NGINX:

sudo apt-get install nginx
sudo vim /etc/nginx/sites-enabled/default

服务器: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 *;
        }
}

服务器:设置主管:

cd /etc/supervisor/conf.d/
sudo vim djangoapp.conf

服务器:管理员配置:

[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

服务器:使用新进程更新supervisor:

sudo supervisorctl reread
sudo supervisorctl update

sudo supervisorctl restart djangoapp
bxgwgixi

bxgwgixi2#

1.从项目目录中运行python manage.py collectstatic
1.访问nginx的webserver配置文件并在配置文件中添加一个位置。
1.使用sudo systemctl reload nginx重新加载nginx服务器。

brc7rcf0

brc7rcf03#

安装django软件包whitenoise后解决了这个问题。
我试过staticfiles_urlpatterns,但只有当Debug = Truesettings.py文件中时才能工作,而你不会用于生产。无法更新nginx配置文件。

相关问题