欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django + uwsgi + nginx (手动部署) 解决后台及前端样式消失的问题

程序员文章站 2022-06-11 11:57:23
...

django + uwsgi + nginx (手动部署) 解决后台及前端样式消失的问题


首先给大家分享一下django中settings配置文件中参数的作用,详情见https://docs.djangoproject.com/en/3.0/ref/settings/#std:setting-STATIC_ROOT

1.设置settings参数

1.在之前请在settings.py将静态文件的位置设置好,本人的静态文件==全部==在项目的根目录下的static文件夹中,根目录就是图中的BASE_DIR,然后在STATICFILES_DIRS中添加,同时将STATIC_URL与STATIC_ROOT设置好,这两最好一样,下面的
MEDIA_ROOT和MEDIA_URL是网站中用户的头像之类的存放路径。设置完成以后在控制台执行python manage.py collectstatic,系统会自动将全部的静态资源放到static中。

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]
STATIC_ROOT = os.path.join(BASE_DIR, "static")

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'

2. 设置urls中的路由

2.在主路由urls.py中,与settings文件在同一目录下,将静态文件的URL和ROOT添加进去。媒体文件同理

urlpatterns = [
    path('admin/', admin.site.urls),
    ......
    ......
] + static(settings.MEDIA_URL,  document_root=settings.MEDIA_ROOT)
+static(settings.STATIC_URL,  document_root=settings.STATIC_ROOT)

3.将nginx.conf文件的location配置好

3.location 后跟的必须是你在settings文件中配置的路径

server {
                listen 80 ;
                server_name 192.168.71.6 ;
                location / {
                        uwsgi_pass 192.168.71.6:8000 ;
                        include uwsgi_params ;
                }
                location /static/ {
                        alias /home/gck/django_love_download/static/ ;
                }
                location /media/ {
                        alias /home/gck/django_love_download/media/ ;
                }
        }

将以上几步解决以后,重启wsgi,和nginx即可恢复样式,注意static中的是系统收集全部样式,不管是前端还是admin后台都在一起,所以静态样式只用一个路径。