代码之家  ›  专栏  ›  技术社区  ›  D.B

django静态文件不随虚拟环境出现

  •  1
  • D.B  · 技术社区  · 7 年前

    因此,我试图将我的网站推向生产,但在虚拟环境中遇到了一个问题,在那里找不到我的静态文件(404个错误)。

    在设置中。py文件,我有 STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

    在/etc/nginx/sites available/django文件中,我修改了静态文件的位置,如下所示:

    location /static {
         alias /home/user/myproject/static;
    }
    

    在目录/home/user/myproject中,我有另一个名为 static ,内部有几个保存实际静态文件的目录。

    i、 e/主页/用户/我的项目/静态/shopApp/shop\u app。css

    i、 e/主页/用户/我的项目/静态/office app/office\u app。css

    我想知道的是,我的配置是否设置得不好。我对django和web开发非常陌生,因此我非常感谢您的任何帮助!

    编辑:在做了一些研究之后,我想我和stackoverflow的家伙在这个链接中遇到了同样的问题: Fetching static files failed with 404 in nginx

    我认为第二个答案可能会解决我的问题,但我不知道该在哪里应用命令 chown www-data:www-data .

    2 回复  |  直到 7 年前
        1
  •  0
  •   vadimchin    7 年前

    STATIC\u ROOT仅用于prod,静态文件夹用于应用程序或项目。产品静态!=项目静态。例如,你有10个应用程序,比如django admin。如果没有STATIC\u ROOT和collectstatic命令,您需要指向每个应用程序中的每个静态文件夹。 例如 location /static/admin { alias /home/user/myproject/env../admin/static; } location /static/someapp { alias /home/user/myproject/someapp/static; } 但Django为你做了很多工作。您需要指向文件夹,该文件夹收集所有应用程序中的所有静态数据。例如,STATIC\u ROOT=os。路径加入(BASE\u DIR,“static\u remote/”)并运行collectstatic location /static { alias /home/user/myproject/static_root; }

        2
  •  0
  •   D.B    7 年前

    事实证明,问题出在我的设置上。py文件。

    具体地说,当您仍然在虚拟环境中使用django开发服务器(0.0.0.0:8000)时,您应该 调试 设置为 符合事实的 ,以便它可以为您的静态文件提供服务。

    回想起仅当您使用django 发展 服务器对于 生产 ,应设置为 错误的

    我从django的这篇文章中得到了以下信息: https://docs.djangoproject.com/en/2.0/howto/static-files/

    推荐文章