ウェブサイト検索

WordPressアセットをSpacesに保存する方法


紹介

DigitalOcean Spacesは、大量の多様かつ非構造化データを保存できるオブジェクトストレージサービスです。画像や動画のアセットを含むことが多いWordPressサイトは、オブジェクトストレージソリューションに適した候補となります。これらのタイプの静的リソースにオブジェクトストレージを使用することで、サーバーのスペースとリソースを解放し、サイトのパフォーマンスを最適化できます。オブジェクトストレージとWordPressに関する詳細は、WordPressサイトをSpacesにバックアップする方法に関するチュートリアルをご覧ください。

このチュートリアルでは、DigitalOcean Spacesを主要なアセットストアとして使用するために直接連携するWordPressプラグインを使用します。DigitalOcean Spaces Syncプラグインは、WordPressメディアライブラリのデータをSpacesにルーティングし、必要に応じたさまざまな設定オプションを提供することで、WordPressインスタンスとオブジェクトストレージの使用プロセスを合理化します。

前提条件

このチュートリアルでは、サーバー上にWordPressインスタンスとDigitalOcean Spaceがあると仮定しています。この設定がない場合は、以下の手順を完了してください:

  • 1つのUbuntuサーバーは、私たちの初期サーバーセットアップに関するUbuntuチュートリアルに従って設定されています。
  • UbuntuにLAMPスタックをインストールする方法に関するチュートリアルに従って、サーバーにLAMPスタックをインストールしました。
  • UbuntuにLAMPを使用してWordPressをインストールする方法に関する私たちのチュートリアルに従って、サーバーにWordPressをインストールしました。
  • DigitalOcean Space と API キーは、DigitalOcean Space と API キーの作成方法に従って作成されました。
  • これらの指示に従ってWP-CLIをインストールしました。

これらの前提条件が整ったので、このプラグインを使用する準備ができました。

WordPressの権限を変更する

このチュートリアルを通して、私たちはWordPressプロジェクトのwp-content/uploadsフォルダーを使用しますので、このフォルダーが存在し、正しい権限が設定されていることが重要です。mkdirコマンドを使用して、存在しない場合にフォルダーを作成し、存在する場合はエラーを投げないようにするために、-pフラグを指定して作成できます。

  1. sudo mkdir -p /var/www/html/wp-content/uploads

フォルダーの権限を設定できるようになりました。まず、オーナーシップをあなたのユーザーに設定します(ここではsammyを使用しますが、必ずあなたの非ルートのsudoユーザーを使用してください)、グループのオーナーシップをwww-dataグループに設定します:

  1. sudo chown -R sammy:www-data /var/www/html/wp-content/uploads

次に、このフォルダーに対してWebサーバーに書き込みアクセスを与える権限を設定します:

  1. sudo chmod -R g+w /var/www/html/wp-content/uploads

これからは、プラグインを使用して、wp-content/uploads フォルダ内のアセットのためにオブジェクトストレージにストアを作成し、WordPress インターフェースからアセットにアクセスできるようになります。

DigitalOcean Spaces Syncのインストール

DigitalOcean Spaces Syncを使用する最初のステップは、私たちのWordPressフォルダーにインストールすることです。私たちはWordPressディレクトリ内のプラグインフォルダーに移動できます:

  1. cd /var/www/html/wp-content/plugins

ここから、wpコマンドを使用してDigitalOcean Spaces Syncをインストールできます:

  1. wp plugin install do-spaces-sync

プラグインを有効にするには、次のように実行できます:

  1. wp plugin activate do-spaces-sync

ここから、WordPress管理ダッシュボードの左側にあるプラグインタブに移動できます:

私たちは、アクティブなプラグインのリストにDigitalOcean Spaces Syncが表示されるはずです。

DigitalOcean Spaces Syncの設定を管理するには、設定タブに移動し、メニューからDigitalOcean Spaces Syncを選択します:

DigitalOcean Spaces Sync は、私たちのアセットストレージを構成するためのオプションを提供するようになります:

画面上部の接続設定フィールドでは、私たちのスペースアクセスキーとシークレットを要求します。次に、私たちのコンテナを要求されます。これは、私たちのスペースの名前とエンドポイントです。

スペースのURLに基づいて、スペースのエンドポイントを決定できます。たとえば、スペースのURLがhttps://example-name.nyc3.digitaloceanspaces.comの場合、example-nameがあなたのバケット/コンテナになり、nyc3.digitaloceanspaces.comがあなたのエンドポイントになります。

プラグインのインターフェースでは、エンドポイントセクションがデフォルトのhttps://ams3.digitaloceanspaces.comで事前に入力されています。あなたのスペースが別のリージョンにある場合は、このエンドポイントを変更してください。

次に、ファイルとパスの設定を求められます。ファイルへの完全なURLパスとマークされたフィールドには、ファイルがあなたのスペースのみに保存される場合はストレージの公開ドメインを入力するか、スペースとサーバーの両方に保存する場合は完全なURLパスを入力することができます。

例えば、あなたのWordPressプロジェクトが/var/www/htmlにあるとし、サーバーとスペースの両方にファイルを保存したい場合は、次のように入力します:

  • http://your_server_ip/wp-content/uploads をファイルへの完全なURLパスフィールドに
  • /var/www/html/wp-content/uploads は ローカルパス フィールドにあります

ストレージプレフィックスおよびファイルマスクの設定は事前に入力されており、特定のファイルタイプを同期する場合を除き、変更する必要はありません。

次のセクションでは、サーバー上でのファイルの保存およびあなたのスペース専用の内容について具体的に説明します。

複数の場所でのファイルの同期と保存

DigitalOcean Spaces Syncは、ファイルをサーバーに保存しながら、それらをスペースに同期するオプションを提供します。このユーティリティは、サーバーにファイルを保持しておきたいが、他の場所にもバックアップを保存したい場合に役立ちます。ファイルをサーバーに保持しながら、スペースに同期するプロセスを見ていきましょう。この例では、メディアライブラリとスペースに保存したいsammy10x10.pngという名前のファイルがあると仮定します。

まず、WordPress管理ダッシュボードの設定タブに移動し、表示されたオプションのメニューからDigitalOcean Spaces Syncを選択します。

次に、接続設定フィールドに、スペースキーとシークレットを入力し、その後にコンテナとエンドポイントを入力します。スペースのURLがhttps://example-name.nyc3.digitaloceanspaces.comの場合、example-nameはコンテナになり、nyc3.digitaloceanspaces.comはエンドポイントになります。接続設定フィールドの下部にある接続を確認ボタンをクリックして接続をテストします。

さて、ファイルとパスの設定を記入する準備ができました。

ファイルへのフルURLパスのフィールドに、サーバーおよびスペースにファイルを保存するため、フルURLパスを入力できます。ここではサーバーのIPアドレスを使用しますが、ドメインがある場合はIPアドレスをドメイン名に置き換えることができます。DigitalOceanでのドメイン登録についての詳細は、How To Set Up a Host Name with DigitalOceanに関するチュートリアルを参照してください。私たちの場合、ファイルへのフルURLパスはhttp://your_server_ip/wp-content/uploadsになります。

次に、ローカルパスフィールドにuploadsディレクトリへのローカルパスを入力します: /var/www/html/wp-content/uploads.

単一のファイルで作業しているため、ストレージプレフィックスおよびファイルマスクセクションを変更する必要はありません。あなたのWordPressメディアライブラリがサイズや種類の面で成長していくにつれて、ファイルマスクフィールドでワイルドカードや拡張子(例えば*.png)を使用して、特定のファイルタイプをターゲットとして設定を変更することができます。

最終的なファイルとパス設定はこのようになります:

変更を保存ボタンを画面の下部でクリックして、設定の変更を必ず保存してください。

今、私たちはファイルsammy10x10.pngをWordPressメディアライブラリに追加できます。wp media importコマンドを使用して、ファイルをホームディレクトリからWordPressメディアライブラリにインポートします。この場合、私たちのホームディレクトリはsammyに属しますが、皆さんの場合は非ルートのsudoユーザーになります。ファイルを移動させる際には、--pathパラメータを使用してWordPressプロジェクトの場所を指定します:

  1. wp media import --path=/var/www/html/ /home/sammy/sammy10x10.png

WordPressのインターフェースを見ると、現在私たちのメディアライブラリにファイルが表示されているはずです。WordPressの管理ダッシュボードの左側にあるメディアライブラリタブを辿ることで、そこに移動できます:

DigitalOceanのコントロールパネルでSpacesページに移動すると、私たちのSpaceにファイルが表示されるはずです。

最後に、私たちは wp-content/uploads フォルダーに移動できます。そこには WordPress が年と月のサブフォルダーを作成しています。このフォルダーの中には私たちの sammy10x10.png ファイルが見えるはずです。

スペースにファイルを保存する

DigitalOcean Spaces Syncプラグインには、サーバーのスペースとリソースを最適化したい場合に、ファイルを私たちのSpaceのみに保存できる追加オプションがあります。私たちは別のファイル、sammy-heart10x10.pngを使用し、このファイルが私たちのSpaceのみに保存されるようにDigitalOcean Spaces Syncの設定を行います。

まず、プラグインのメイン設定ページに戻りましょう:

接続設定の情報はそのままにしておきますが、ファイルとパス設定を変更します。まず、ファイルへのフルURLパスには、ストレージのパブリックドメインを書きます。再度、私たちのサーバーのIPアドレスを使用しますが、ドメインをお持ちの場合はそれに置き換えることができます: http://uploads.your_server_ip

次に、ページの下部にある同期設定に移動し、最初のボックスをクリックします。これにより、「ファイルをクラウドにのみ保存し、アップロード後に削除する」ことが可能になります。最終的なファイルおよびパス設定は次のようになります:

画面の下部にある変更を保存ボタンをクリックして、変更を必ず保存してください。

コマンドラインに戻ると、ユーザーのホームディレクトリから sammy-heart10x10.png を wp media import を使用してメディアライブラリに移動します:

  1. wp media import --path=/var/www/html/ /home/sammy/sammy-heart10x10.png

WordPress インターフェースに戻ると、メディアライブラリには sammy-heart10x10.png や sammy10x10.png は表示されません。次に、コマンドラインに戻り、wp-content/uploads ディレクトリに移動すると、sammy-heart10x10.png がタイムスタンプ付きのサブフォルダーから欠けていることがわかります。

最後に、DigitalOceanコントロールパネルのSpacesページに移動すると、私たちのSpaceに保存されている2つのファイルが表示されるはずです。

結論

DigitalOcean Spaces Syncを使用して、WordPressのメディアファイルをDigitalOcean Spacesに格納するための2つの異なるオプションを取り上げました。このプラグインはカスタマイズのための追加オプションを提供しており、開発者の記事「DigitalOcean SpacesでWordPressメディアを同期する」を読むことで詳しく学ぶことができます。

Spacesの利用に関する一般的な情報をさらに知りたい場合は、DigitalOcean Spacesの紹介や、Spacesでのパフォーマンス向上のためのベストプラクティスガイドをご覧ください。

関連記事: