1

ステージング環境と本番環境を備えた Heroku に Django アプリがあります。静的ファイルは S3 でホストされます。デプロイ プロセスを合理化しており、手動で動作するようになったら fabfile をセットアップする予定です。

複数の場所にプッシュするように collectstatic を構成するにはどうすればよいですか? ローカルで実行すると、(ローカルの STATIC_ROOT を使用して) 私の開発設定が使用されます。Heroku アプリの 1 つで実行すると (heroku run ./manage.py collectstatic)、ファイルを取得できません (.slugignore により、ファイルが Heroku にプッシュされないことが保証されるため)。Procfile に collectstatic を含めた場合も同様です。

私はdjango-pipelineも使用していますが、collectstaticビットにこだわっているため、まだあまり機能していません。

更新 Marat の質問に応えて、オプションとして設定ファイルを collectstatic: に渡そうとしまし./manage.py collectstatic --settings=project.settings.prodたが、エラーが発生しました:Unknown command: 'collectstatic'サーバーを確認しましたが、インストールされたアプリには django.contrib.staticfiles が含まれており、collectstatic をリモートで実行することもできます。何が原因なのかわかりません。

4

3 に答える 3

2

環境変数 DJANGO_SETTINGS_MODULE を設定できるため、どこでも --settings を指定する必要はありません。

heroku config:set DJANGO_SETTINGS_MODULE=project.settings.prod
于 2013-06-05T19:22:04.980 に答える
0

Upload Media from Heroku to Amazon S3に関する同様の質問に回答しました。環境変数を考慮して設定をカスタマイズすると、ファイルシステム ストレージ バックエンドをローカルで使用し、Heroku にプッシュするときに S3 ストレージ バックエンドを使用できます。これにより、スラッグのコンパイル時に静的ファイルが収集されてアップロードされます。

于 2013-01-22T17:05:48.987 に答える
0

まず、CloudFront 経由で静的にサービスを提供する場合は、カスタムオリジンを使用して、常にローカルの STATIC_ROOT を使用できます。実際には、gzip のサポートなど、S3 ソースよりもいくつかの利点があります。

別のファイルに環境依存の設定を作成し、それを settings.py にインポートすることもできます。例:

local_settings.py (プロジェクト リポジトリにはありませんが、local_settings.py.example を使用できます):

#environment dependent settings
DATABASES = { .. }
CACHES = { .. }
STATIC_ROOT = 'your_path/static'

settings.py:

import local_settings
于 2012-08-26T04:56:12.600 に答える