web-dev-qa-db-ja.com

Drupal 7のS3経由で静的ファイルを提供する

ロードバランサーの背後にある複数のサーバーから提供されるDrupal 7 Webサイトを開発しています。

Drupalキャッシュ(JS、CSS、およびテーマとモジュールの画像)によって生成されたすべての静的ファイルがAmazon S3バケットを介して提供されるようにします。

Amazon S3モジュールを使用して、コンテンツタイプのファイルアップロードフィールドに対して既にこれを実行しましたが、上記で説明した機能がありません。

Media Moverモジュールがあるのを見ましたが、それはD7プロダクションの準備ができていません。

他にどんな解決策がありますか?

4
Alon Pe'er

S3AutoPushモジュール を使用してしまいました。私はそれをDrupal 7に移行し、自分のニーズに合わせるためにそれを完全にハックしました。

誰かがこれを読んで興味があれば、私のコードを共有したいと思います。それは本当のハックジョブであり、まだ価値がないので、今のところdrupal.orgには入れません。

1
Alon Pe'er

[〜#〜] cdn [〜#〜] モジュールのメンテナーによる Easy Drupal楽しさと利益のためのCDN統合 を参照してください。

3
zerolab

その他Drupal File API のような7つのモジュールがこれを行います。ただし、Amazon S3モジュールの経験が豊富です。

Drupal 7 AmazonS3モジュールはまだJS/CSSを処理しません。 これに対するパッチ がありますが、この1年のステータスは "Needs"に設定されていますAndrew Berryからの次の応答によるものです。

このパッチにはいくつか問題があるようです。1.同じファイルの2つのファイルレコードが異なるパスにある可能性があります。たとえば、public://bucket/image.jpgやs3://bucket/image.jpgなどです。管理されたファイルの場合、これによりデータが破損する可能性があります。 2. URLにバケットが必要なため、S3ラッパーが適切に機能するためには、かなりの数のモジュールにパッチを適用する必要がありました。大量のモジュールがURLを正規化せずにpublic://ファイルパスをハードコーディングすることを想像します。 3. S3が新しいアセットの作成と初期統計の実行に非常に時間がかかることがあるというパフォーマンスの問題があります。画像スタイルについては、基本的にスタイル生成を独自のコードに置き換えましたが、これはCSSとJSで行うのが面倒です。また、contribモジュールでも非常によく似た問題が発生する可能性があります。

とにかく、これらすべてに対処できるのであれば、これを取り入れたいと思います。ただし、すべてを壊さない方法でこれを行うと、D8を待つ必要があります。

Drupal 8と言えば、@ cweagansによるs3モジュールがあり、すでに集約されたCSS/JSファイルも処理しています。 https://www.drupal.org/project/flysystem_s うまくいけば、これは誰かに役立つでしょう。

1
Scott Rigby

それはあなたがちょうど取らなかった良いアドバイスです:

Amazon S3ストレージにimages/css/jsファイルを配置しないでください。これにより、特に同期に関しては、Drupalインストールの複雑さが増すためです。解決策は次のとおりです。確かに、それは醜いでしょう。

本番サーバーの静的コンテンツで直接リバースプロキシを使用します。別の静的サブドメイン(例えば、assets.yourdomain.com)でimages/css/jsを分離できます。これには Static Server Drupal Module を利用できます。

Ec2スナップショットバックアップ、データベースバックアップなど、より高い目的でAmazon S3を使用します。

0
Basil A