web-dev-qa-db-ja.com

マルチサイト、Amazon S3に直接画像をアップロードする

私はマルチサイトネットワークを作成しましたが、私のサーバースペースを詰まらせている多数の画像ファイルを人々がアップロードしているのに気づきました。

デフォルトのネットワークテーマ(ユーザーは1つの標準テーマを使用するように制限されています)を修正して、すべての画像を私のS3アカウントにアップロードし、Wordpressメディアアップローダーに通常どおりに表示できるようにできますか。

一部のユーザーは技術に精通していないため、ネットワークのすべてのユーザーが手動でプラグインをインストールするのではなく、自動的にこれを実行できるようにしたいです。

4
Dean Elliott

もしあなたが専用のLinuxサーバ上で実行していてコマンドラインに慣れているなら、 s3fs をインストールすることができます。これはあなたが実際にあなたのサーバー上のディレクトリとしてあなたのAmazon s 3 Bucketをマウントすることを可能にするプログラムです。

標準のマルチサイト環境では、メインサイトを除くすべてのサイトのメディアアップロードは、wp-contentディレクトリ内のblogs.dirディレクトリに格納されています。 blogs.dir ISマウントされたs3バケットがあるマルチサイトインストールを現在実行しています。これが概要です...

  1. Blogs.dirフォルダの名前を_blogs.dirに変更します。 (注:これは一時的にすべてのマルチサイトメディアファイルをアクセス不能にします)。
  2. Blogs.dirという名前で新しいディレクトリを作成します。
  3. S3fsをインストールして使って、s3バケットをblogs.dirディレクトリにマウントします。
  4. _blogs.dirフォルダの内容を新しいblogs.dirにコピーします。これにより、すべてのファイルとフォルダが直接s3バケットにコピーされます。 (画像数によっては時間がかかる場合があります)。
  5. それが完了したら、(あなたのメインサイトではなく)あなたのユーザーサイトの一つのホームページをチェックして行き、そしてWordpressが画像を読んでそして表示できることを確認しなさい)。
  6. サーバーを再起動する必要がある場合に備えて、起動時にバケットがマウントされていることを確認してください。 Linuxでは、これは多くの場合、/ etc/fstabファイルにs3fsコマンドを追加することによって行われます。

他のものと同様に、この設定には長所と短所があります。

長所は、ユーザーがマルチサイトにメディアファイルをアップロードするたびに、それがあなたのs3バケットに直接保存されることです。そしてメディアが求められるとき、それはバケツから引っ張られています。また、ユーザーがWordpress管理者内で画像を編集すると、その変更は再びs3バケットに直接保存されます。

短所は、バックエンドで新しいファイルインターフェースのアップロードが少し遅くなることです。また、ファイルの読み込みが少し遅くなることもあります(Apacheの.htaccess書き換え規則を使用してメディアURLを直接s3にリダイレクトできない場合)。これは可能ですが、この回答の範囲を超えています)。

お役に立てれば。 s3fsのインストール方法と使い方についてのドキュメントは s3fs をご覧ください。

6
Mark