u011371270
漆黑天使复活
采纳率100%
2021-02-21 13:25

django部署到阿里云后,网站样式丢失,nginx+uwsgi+ubuntu 20

50

django放到阿里云之后,网站前端样式丢失,反而admin的样式没有丢失,找了很多教程,都说是admin样式丢失,我的情况正好相反,admin的样式在,但是网站的样式丢失了

环境是阿里云 ubantu 20 64位

django项目虚拟机的位置在var/www/datavis

项目放在var/www/datavis/project_my_blog下

nginx.conf是这样配置的(这里有个另外的问题,没有配置media文件,但是网站中所有放在media的图片都能显示)

server{
	listen   80;
	server_name 47.103.43.207;
	charset utf-8;

	location /static {
		# 指定静态文件存放的目录
		alias /var/www/datavis/project_my_blog/static;
	}

    location /media {
	     alias /var/www/datavis/peoject_my_blog_local/media;
	}

	location / {
	     uwsgi_pass  127.0.0.1:8000;
	     include /etc/nginx/uwsgi_params;
	}


  uwsgi是这么配置的

[uwsgi]
chdir = /var/www/datavis/project_my_blog
module = project_my_blog.wsgi:application
home   = /var/www/datavis
socket = 127.0.0.1:8000 
master = true         
processes =4
chmod-socket =666
vacuum =true

settings.py中是这么配置的,其中strtic的路径也是用过STATIC_ROOT = os.path.join(BASE_DIR,'static')的形式配置过,也不行

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

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

也尝试过网上的教程用python manage.py collectstatics把静态文件全部放到根目录下,收集完成后目录如下,无论是在使用python manage.py collectstatics之前,还是之后,后台admin的样式都可以使用,前端界面都不能用,我总感觉应该是nginx.conf没有配置对,没有去读取相应的静态目录,但又不知道具体怎么回事(比如后台admin的相识就读取到了,哪怕是在使用collectstatics命令之前)

咋回事,网上的教程都是admin的样式都是。。。

  • 点赞
  • 收藏
  • 复制链接分享

4条回答

  • weixin_41908433 知雀的天空 2月前

    settings.py

    STATIC_URL = '/static/'
    
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
    ]
    
    # 这里设置服务器静态文件的存储地址
    STATIC_ROOT = '/var/www/datavis/project_my_blog/static'

    urls.py

     

    urlpatterns = [
    
                  ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
                  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    然后最重要的是在项目根目录执行python manage.py collectstatic 将静态资源拷贝到前面设置的目录中

     

    点赞 评论 复制链接分享
  • bill20100829 歇歇 2月前

    部署

    django.contrib.staticfiles 提供了一个方便管理命令,用于将静态文件收集到一个目录中,以便您可以轻松地为它们提供服务。

    1. STATIC_ROOT设置设置为您要从中提供这些文件的目录,例如:

      STATIC_ROOT = "/var/www/example.com/static/"
      
    2. 运行collectstatic管理命令:

      $ python manage.py collectstatic
      

      这会将所有文件从静态文件夹复制到 STATIC_ROOT目录中。

    3. 使用您选择的Web服务器来提供文件。部署静态文件涵盖了一些常见的静态文件部署策略。

    点赞 评论 复制链接分享
  • bill20100829 歇歇 2月前
    点赞 评论 复制链接分享
  • bill20100829 歇歇 2月前

    您应该在settings.py中设置STATICFILES_DIRS设置,以映射到存储CSS,JS和图像的静态文件夹。

    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, "static"),
        '/var/www/static/',
    )

     

    在您项目的urls.py中,您必须具有以下代码段:

    from django.conf.urls import include, url

    from django.conf import settings

    from django.conf.urls.static import static

     

    urlpatterns = [

        ...

    ]

     + static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT

    点赞 评论 复制链接分享