前書き
DigitalOcean Spacesは、大量の多様な非構造化データを格納するために使用できるオブジェクトストレージサービスです。 多くの場合、画像およびビデオ資産を含むWordPressサイトは、オブジェクトストレージソリューションの優れた候補となります。 これらのタイプの静的リソースにオブジェクトストレージを使用すると、サーバー上のスペースとリソースを解放してサイトのパフォーマンスを最適化できます。 オブジェクトストレージとWordPressの詳細については、How To Back Up a WordPress Site to Spacesに関するチュートリアルをご覧ください。
このチュートリアルでは、DigitalOcean Spacesと直接連携して主要なアセットストアとして使用するWordPressプラグインを使用します。 DigitalOcean Spaces Syncプラグインは、WordPressメディアライブラリのデータをSpacesにルーティングし、ニーズに基づいてさまざまな構成オプションを提供し、WordPressインスタンスでオブジェクトストレージを使用するプロセスを合理化します。
前提条件
このチュートリアルでは、サーバー上にWordPressインスタンスとDigitalOcean Spaceがあることを前提としています。 この設定がない場合は、次を完了できます。
-
Initial Server Setup with Ubuntu 16.04 tutorialに従ってセットアップされた1つのUbuntu16.04サーバー。
-
How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04のチュートリアルに従って、サーバーにインストールされたLAMPスタック。
-
How To Install WordPress with LAMP on Ubuntu 16.04のチュートリアルに従って、WordPressがサーバーにインストールされました。
-
How To Create a DigitalOcean Space and API Keyに従って作成されたDigitalOceanスペースおよびAPIキー。
-
次のthese instructionsによってインストールされたWP-CLI。
これらの前提条件が整ったら、このプラグインの使用を開始できます。
WordPressの権限を変更する
このチュートリアル全体を通して、WordPressプロジェクトのwp-content/uploads
フォルダーを操作するため、このフォルダーが存在し、適切なアクセス許可を持っていることが重要です。 フォルダーが存在しない場合はフォルダーを作成し、存在する場合はエラーをスローしないようにするために、-p
フラグを使用してmkdir
コマンドで作成できます。
sudo mkdir -p /var/www/html/wp-content/uploads
これで、フォルダにアクセス許可を設定できます。 まず、所有権をユーザーに設定し(ここではsammyを使用しますが、必ず非ルートsudo
ユーザーを使用します)、所有権をwww-data
グループにグループ化します。
sudo chown -R sammy:www-data /var/www/html/wp-content/uploads
次に、Webサーバーにこのフォルダーへの書き込みアクセスを許可するアクセス許可を確立します。
sudo chmod -R g+w /var/www/html/wp-content/uploads
これで、プラグインを使用して、wp-content/uploads
フォルダー内のアセットのオブジェクトストレージにストアを作成し、WordPressインターフェイスからアセットを操作できるようになります。
DigitalOcean Spaces Syncのインストール
DigitalOcean Spaces Syncを使用する最初のステップは、WordPressフォルダーにインストールすることです。 WordPressディレクトリ内のプラグインフォルダーに移動できます。
cd /var/www/html/wp-content/plugins
ここから、wp
コマンドを使用してDigitalOcean SpacesSyncをインストールできます。
wp plugin install do-spaces-sync
プラグインをアクティブにするには、次を実行します。
wp plugin activate do-spaces-sync
ここから、WordPress管理ダッシュボードの左側にあるプラグインタブに移動できます。
有効化されたプラグインのリストにDigitalOcean Spaces Syncが表示されるはずです。
DigitalOcean Spaces Syncの設定を管理するには、Settingsタブに移動し、メニューからDigitalOcean Spaces Syncを選択します。
DigitalOcean Spaces Syncは、アセットストレージを構成するオプションを提供します。
画面の上半分のConnection Settingsフィールドは、スペースアクセスキーとシークレットを要求します。 次に、スペースの名前となるContainerとEndpointを要求します。
URLに基づいてスペースのエンドポイントを決定できます。 たとえば、スペースのURLがhttps://example-name.nyc3.digitaloceanspaces.com
の場合、example-name
がバケット/コンテナーになり、nyc3.digitaloceanspaces.com
がエンドポイントになります。
プラグインのインターフェースでは、Endpointセクションにデフォルトのhttps://ams3.digitaloceanspaces.com
が事前に入力されています。 スペースが別の地域にある場合は、このエンドポイントを変更する必要があります。
次に、File & Path Settingsの入力を求められます。 Full URL-path to filesとマークされたフィールドに、ファイルをスペースにのみ保存する場合はストレージパブリックドメインを入力するか、スペースとサーバーにファイルを保存する場合は完全なURLパスを入力できます。
たとえば、WordPressプロジェクトが/var/www/html
にあり、サーバーとSpaceの両方にファイルを保存する場合は、次のように入力します。
-
Full URL-path to filesフィールドの
http://your_server_ip/wp-content/uploads
-
Local pathフィールドの
/var/www/html/wp-content/uploads
Storage prefixおよびFilemaskの設定は事前に入力されており、同期用に特定の種類のファイルを指定する場合を除いて、変更する必要はありません。
次のセクションでは、サーバーとスペース、およびスペースのみにファイルを保存する詳細について説明します。
複数の場所でのファイルの同期と保存
DigitalOcean Spaces Syncは、ファイルをSpaceに同期しながらサーバーに保存するオプションを提供します。 このユーティリティは、サーバーにファイルを保存する必要がある場合に役立ちますが、バックアップを別の場所に保存することもできます。 ファイルをサーバーに保持しながら、ファイルをスペースに同期するプロセスを実行します。 この例では、メディアライブラリとスペースに保存するsammy10x10.png
というファイルがあると想定します。
まず、WordPress管理ダッシュボードのSettingsタブに移動し、表示されたオプションのメニューからDigitalOcean Spaces Syncを選択します。
次に、Connections Settingsフィールドに、スペースキーとシークレットを入力し、続いてContainerとEndpointを入力します。 スペースのURLがhttps://example-name.nyc3.digitaloceanspaces.com
の場合、example-name
がContainerになり、nyc3.digitaloceanspaces.com
がEndpointになることに注意してください。 Connection Settingsフィールドの下部にあるCheck the Connectionボタンをクリックして、接続をテストします。
これで、File & Path Settingsに入力する準備ができました。
サーバーとスペースにファイルを保存しているので、Full URL-path to filesフィールドに完全なURLパスを入力できます。 ここではサーバーのIPを使用しますが、ドメインがある場合は、ドメイン名のIPアドレスを交換できます。 DigitalOceanにドメインを登録する方法の詳細については、How To Set Up a Host Name with DigitalOceanに関するチュートリアルを参照してください。 この場合、Full URL-path to filesはhttp://your_server_ip/wp-content/uploads
になります。
次に、Local pathフィールドにuploads
ディレクトリへのローカルパス/var/www/html/wp-content/uploads
を入力します。
単一のファイルで作業しているため、Storage prefixセクションとFilemaskセクションを変更する必要はありません。 WordPressメディアライブラリのサイズと種類が増えるにつれて、この設定を変更して、ワイルドカードとFilemaskフィールドの*.png
などの拡張子を使用して個々のファイルタイプをターゲットにすることができます。
最終的なFile & Path Settingsは次のようになります。
画面の下部にあるSave Changesボタンをクリックして、構成の変更を必ず保存してください。
これで、ファイルsammy10x10.png
をWordPressメディアライブラリに追加できます。 wp media import
コマンドを使用します。このコマンドは、ファイルをホームディレクトリからWordPressメディアライブラリにインポートします。 この場合、ホームディレクトリはsammyに属しますが、あなたの場合、これはルート以外のsudo
ユーザーになります。 ファイルを移動するときに、--path
パラメータを使用してWordPressプロジェクトの場所を指定します。
wp media import --path=/var/www/html/ /home/sammy/sammy10x10.png
WordPressインターフェースを見ると、Media Libraryにファイルが表示されているはずです。 WordPress管理ダッシュボードの左側にあるMedia Libraryタブに従って、そこに移動できます。
DigitalOceanコントロールパネルのSpacesページに移動すると、Spaceにもファイルが表示されます。
最後に、wp-content/uploads
フォルダーに移動できます。ここで、WordPressは年と月を含むサブフォルダーを作成します。 このフォルダ内に、sammy10x10.png
ファイルが表示されます。
スペースにファイルを保存する
DigitalOcean Spaces Syncプラグインには、サーバー上のスペースとリソースを最適化する場合に備えて、スペースにのみファイルを保存できる追加オプションがあります。 別のファイルsammy-heart10x10.png
を操作し、このファイルがSpaceにのみ保存されるようにDigitalOcean SpacesSync設定を設定します。
まず、プラグインのメイン設定ページに戻りましょう。
Connection Settingsの情報は残すことができますが、File & Path Settingsを変更します。 まず、Full URL-path to filesに、ストレージのパブリックドメインを記述します。 ここでも、サーバーIPを使用しますが、ドメインがある場合は、これをドメインと交換できます:http://uploads.your_server_ip
次に、ページの下部にあるSync Settingsに移動し、最初のボックスをクリックします。これにより、「ファイルをクラウドにのみ保存し、アップロードが成功した後に削除する」ことができます。最終的なFile & Path Settingsは次のようになります。
画面の下部にあるSave Changesボタンをクリックして、変更を保存してください。
コマンドラインに戻り、wp media import
を使用してsammy-heart10x10.png
をユーザーのホームディレクトリからメディアライブラリに移動します。
wp media import --path=/var/www/html/ /home/sammy/sammy-heart10x10.png
WordPressインターフェースに戻ると、Media Libraryにsammy-heart10x10.png
またはsammy10x10.png
が表示されません。 次に、コマンドラインに戻ってwp-content/uploads
ディレクトリに移動すると、タイムスタンプ付きのサブフォルダにsammy-heart10x10.png
がないことがわかります。
最後に、DigitalOceanコントロールパネルの[スペース]ページに移動すると、両方のファイルがスペースに保存されているはずです。
結論
DigitalOcean Spaces Syncを使用してWordPressメディアファイルをDigitalOcean Spacesに保存するために使用できる2つの異なるオプションについて説明しました。 このプラグインは、開発者の記事「https://medium.com/@kee_ross/sync-your-wordpress-media-with-digitalocean-spaces-b730eb7e19fc[WordPressの同期DigitalOcean Spacesのメディア]。」
Spacesの操作に関するより一般的な情報が必要な場合は、introduction to DigitalOcean Spacesとbest practices for performance on Spacesのガイドを確認してください。