Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在多个环境中使用collectstatic_Django_Heroku_Amazon S3 - Fatal编程技术网

Django 在多个环境中使用collectstatic

Django 在多个环境中使用collectstatic,django,heroku,amazon-s3,Django,Heroku,Amazon S3,我在Heroku上有一个Django应用程序,它具有登台和生产环境。静态文件托管在S3上。我正在简化我的部署过程,并计划在手动完成工作后设置FabFile 如何将collectstatic配置为推送到多个位置?如果我在本地运行它,它将使用我的dev设置(使用本地静态根)。如果我在我的一个Heroku应用程序(Heroku run./manage.py collectstatic)上运行它,那么它就无法抓取文件(因为.slugignore确保它们永远不会被推送到Heroku)。如果在Procfil

我在Heroku上有一个Django应用程序,它具有登台和生产环境。静态文件托管在S3上。我正在简化我的部署过程,并计划在手动完成工作后设置FabFile

如何将collectstatic配置为推送到多个位置?如果我在本地运行它,它将使用我的dev设置(使用本地静态根)。如果我在我的一个Heroku应用程序(Heroku run./manage.py collectstatic)上运行它,那么它就无法抓取文件(因为.slugignore确保它们永远不会被推送到Heroku)。如果在Procfile中包含collectstatic,则同样适用

我也在使用django管道,尽管由于我被困在静态位上,它还没有做很多工作

更新
在回答Marat的问题时,我尝试传递一个设置文件作为collectstatic的选项:
/manage.py collectstatic--settings=project.settings.prod
,但出现了一个错误:
未知命令:“collectstatic”
我在服务器上进行了检查,安装的应用程序确实包含django.contrib.static文件,而且我还可以远程运行collectstatic,所以我不确定是什么原因造成的。

首先,如果要通过CloudFront为static提供服务,您可以使用自定义原点并始终使用本地静态根。实际上,它比S3源代码有一些优势,例如gzip支持

您可以做的另一件好事是将与环境相关的设置放在单独的文件中,然后将其导入settings.py,例如:

local_settings.py(不在项目存储库中,但您可以使用local_settings.py.example):

settings.py:

import local_settings

我刚才回答了一个类似的问题。如果您自定义设置以考虑环境变量,则在推送到Heroku时可以在本地使用文件系统存储后端和S3存储后端。这将在编译slug时收集并上载静态文件。

您可以设置环境变量DJANGO\u SETTINGS\u MODULE,这样您就不需要到处指定--SETTINGS:

heroku config:set DJANGO_SETTINGS_MODULE=project.settings.prod

我正计划建立CloudFront,但还没有-gzip支持是否实现了与django中间件(django.middleware.gzip.GZipMiddleware)不同的功能?价值连城。非常感谢。
heroku config:set DJANGO_SETTINGS_MODULE=project.settings.prod