問題タブ [django-compressor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 絶対URLパスを持つdjangoコンプレッサーとclevercss
Django、Compressor、および Clevercss を使用する場合、CSS の URL を絶対パスに設定します。次に、Clevercss には、COMPRESS_ROOT を前に付けずに .ccss ファイルのパス (絶対パス) が渡されます。CSS の URL を相対パスに設定すると、clevercss は ccss ファイルを処理しますが、ブラウザーは相対的に配置された css ファイルを正しく検索します (例: mywebsite.com/profile/user/1/css/stylesheet.css)。
ただし、Compressor は、CSS リンクが相対 URL の場合は MEDIA_ROOT を使用しますが、絶対 URL が使用される場合は使用しません。これにより、css が Clevercss によってレンダリングされ、ブラウザからアクセスできない (ホームページ上を除く) か、clevercss がファイルにアクセスできない (絶対 URL が使用されているため) という不幸な影響があります。皮肉なことに、http://github.com/mintchaos/django_compressor で提供されている例では、CSS パスに絶対 URL を使用しています。
私はここで何か間違ったことをしていると思いますが、それがどこにあるのかわからず、かなりの時間を探しました。また、現在、./manage.py runserver を介してこれをローカルで実行し、django を介していくつかの静的ファイル (画像) を提供しています。(これは私のローカル開発では問題ありません)。
python - ロードバランサーの背後で django-compressor を使用するには?
ロード バランサーの背後に 2 台のサーバーがあります。各サーバーはmemcachedサーバーを実行しており、設定ファイル(両方のサーバーで同一)には両方が定義されています(つまり、共有キャッシュ)。
クライアントが複数回ダウンロードする必要がないように、生成されたファイルへのパスをサーバー上で同一にする必要があります。
これを機能させるには、djangoコンプレッサーの仕組みを理解する必要があります。
- djangoコンプレッサーのキャッシュの実際の目的は何ですか?
- ファイルの内容はキャッシュとファイルシステムの両方に保存されていますか?
- もしそうなら、どちらが最初に起こりますか?
- ここで正しい質問をしていることを願っています。自由に追加してください。
これよりも詳細で、より適切に構築されたシーケンスがあれば、非常に役立ちます。
編集
- サーバーは両方ともmemcachedサーバーを共有しているため、設定する必要がありますか
COMPRESS_CACHE_KEY_FUNCTION = 'compressor.cache.socket_cachekey'
(開発ブランチを参照)、または同じキャッシュキーを使用すると、同じファイル名を持つという私のポイントに貢献しますか? - 私がこれを理解している方法では、mtime はソース js/css ファイルから収集され、それらが変更された可能性があるかどうかを判断し、それらから新しいファイルを生成する必要があります。正しい?
- これはおそらく、すべてのロードで発生するわけではありません。それはいつ起こりますか?
django - Amazon の S3 で django-compressor と django-staticfiles を設定するには?
圧縮された CSS/Javascript と画像が Amazon の S3 から提供されるように、 django -compressorとdjango-staticfilesをセットアップしようとしています。
S3 をバックエンドとして使用して staticfiles をセットアップすることができたので、collectstatic
コマンドはファイルを の代わりに S3 に送信しますSTATIC_ROOT
。
しかしdjango-compressor
、ミックスに追加しようとすると、すべてがバラバラになるように見えます。リモート ストレージの設定に関するドキュメントに従って、ストレージ バックエンドbotoのサブクラスを作成したので、例をにコピーしましたstorage.py
。このキャッシュされたバックエンドの使用を開始すると、ファイルは S3 ではなく static_media にコピーされます。最初のページの読み込み後、S3 と static_media フォルダーに CACHE フォルダーが表示されます。
設定STATICFILES_STORAGE
しCOMPRESS_STORAGE
て boto の通常の S3 クラスに戻す ( storages.backends.s3boto.S3BotoStorage
) と、静的アセットが S3 バケットに収集され、static_media フォルダーは収集されません。ただし、ページをリロードしようとすると、次のエラーがスローされます。
{% compress css %}
タグおよびcompressor/base.py
オリジンとして強調表示します。
my の s3/staticfiles/compressor セクションsettings.py
:
それで、どこが間違っているのですか?CachedS3BotoStorage
カスタム ストレージを使用するときに、何かを誤って構成したのでしょうか?
django - Django-Compressor が UncompressableFileError をスローする
私はdjango-compressorとdjango-staticfilesを使用しています(外部バージョン、私はDjango 1.2を使用しています)。
サイトを読み込もうとすると、次のエラーが表示されます。
COMPRESS_URL
が と等しいことを確認しましSTATIC_URL
た。その URL でファイルに実際にアクセスできます。
django-compressor コードを見ると、その例外がスローされる場所が見つかりました。
テンプレートの最初の{% compress css %}
ブロックは次のとおりです。
(最初のリンクは を使用していません{{ STATIC_URL }}
が、2 番目のリンクは使用していることに注意してください)
そして、私はエラーログにこれを取得します:
ご覧のとおり、screen.css ファイルは 2 回処理され、2 回目は成功しています。ただし、facebox.css ファイルは 2 回目に失敗します。これ{{ STATIC_URL }}
は、ファイルが 2 回目に解析されるときにテンプレート コンテキストで が定義されていないためと考えられます。
を使用しないことで問題を解決できることは明らかですが{{ STATIC_URL }}
、それは受け入れられる解決策ではありません。
css ファイルが 2 回処理されるのはなぜですか? もともと持っていたmedia='screen, projection'
のですが、それが問題の原因だと思って削除しました。
関連する設定:
django - SassでのDjango_compressorエラー。ファイルを@インポートできません
Sassを使用してdjango_compressorでstyle.scssファイルをコンパイルしようとしています。
私がcssディレクトリにいる場合、Sassはコマンドラインで動作することがわかりましたが、他のディレクトリにいる場合は、以下と同じエラーが発生します。
このエラーを修正するにはどうすればよいですか?
python - subprocess.Popenをapache+mod_wsgiで実行すると、リターンコードが-6のエラーが常に返されます。
私は誰かがこれを見たことを望んでいます-
私はdjango-compressorを実行しており、lesscセットアップを利用して、ファイルのCSSにlessをレンダリング/圧縮しています。開発サーバーから呼び出された場合は完全に機能しますが、apache + mod_wsgiの下で実行すると、常にエラーが返されます。
これをデバッグするために、フィルターがwww-dataユーザー(WSGIDaemonProcessディレクティブでwsgiユーザーとして定義されている)として呼び出す正確なコマンドを実行し、ファイルの読み取りと書き込みのアクセス許可を含め、正しく機能することを確認しました。それは操作しています。
また、そのシステムのcompressor / filters / base.pyのdjango-compressorコードをハッキングしました。呼び出されようとするコマンドは、proc.communicate()の呼び出し後に-6のリターンコードを取得しているようです。
私は誰かがこれを以前に見たことがあることを望んでいます-またはそれがいくつかのベルを鳴らしていることを願っています。このマシンでは、apache + mod_wsgiプロセスの外部(つまり、プロセスを開発サーバーとして実行する)でも正常に機能します。subprocess.Popen()の呼び出しをブロックしている可能性があるものがわかりません。
django - django (django_compressor を使用) は、s3 の圧縮ファイルのみを提供できますか?
ローカルの site_media ディレクトリから静的ファイルを提供するように django(1.3) を構成しました。
django_compressor(1.1) を設定して、オフライン モードで js/css ファイルを圧縮し、Amazon の S3 から圧縮ファイルを提供するが、他の静的ファイルはローカル ディレクトリから提供する方法はありますか?
django_compressor は、カスタム ストレージ バックエンドを使用して S3 を使用するように簡単に構成できることがわかりましたが、すべての静的ファイルがそこから提供される場合に限られます。
静的ファイルのソースおよび宛先 URL として設定する必要がある COMPRESS_URL 変数があります。おそらく、コンプレッサーがファイルを検索する別のURLと、コンプレッサーが圧縮ファイルを保存するS3への2番目のURLを設定する必要があります。それを行う方法はありますか?
apache - virtualenvのbinディレクトリを含めるようにapache仮想ホストのPATHを設定するにはどうすればよいですか?
プロジェクトを仮想ホストとしてデプロイし、virtualenv内で提供しようとしています。virtualenv内にインストールされたパッケージをインポートして使用することは問題ではありません。ただし、サーバーで次のビットが失敗します。
次のエラーが発生します。
ネットで見つけたいくつかのことを試しましたが、どれもうまくいきませんでした。私は期待していたSetEnv
:
しかし、それは機能しません。私の推測では、CompilerFilter
がを使用しているためですがsubprocess.Popen
、よくわかりません。
pyscss実行可能ファイルのパスをハードコーディングせずに、この仮想ホスト専用のディレクトリをbin
作成するにはどうすればよいですか?PATH
アップデート:
Apacheのバージョンは2.2.17、mod_wsgiのバージョンは3.3、virtualenvのバージョンは1.4.9です。
django - Windows で Django Compressor を LessCSS と連携させる方法
Windows で Django Compressor を LessCSS と連携させる方法を知りたいです。
lesscがインストールされています
Django パイプラインの設定
COMPRESS_PRECOMPILERS = (('text/less', 'lessc {infile} {outfile}'), )
python - Django-compressor: S3 に書き込み、CloudFront から読み取る方法は?
圧縮された CSS/JS を CloudFront から提供したい (それらは S3 上にある) のですが、settings.py のコンプレッサー設定を介してそれを行う方法がわかりません。
COMPRESS_URL にもかかわらず、私のファイルは私の s3 バケットから読み取られています:
<link rel="stylesheet" href="https://example.s3.amazonaws.com/compressed_static/css/e0684a1d5c25.css?Signature=blahblahblah;Expires=farfuture;AWSAccessKeyId=blahblahblah" type="text/css" />
問題は、ファイルを S3 に書き込みたいのですが、CloudFront から読み取ることだと思います。これは可能ですか?