前書き

DigitalOcean Spacesは、WordPressサイトデータのオブジェクトストレージソリューションを提供できます。 このデータは、メディアアセットやデータベースファイルなど、多くの場合多様であり、オブジェクトストレージの候補として適しています。 Spacesなどのソリューションは大量の非構造化データを保存できるため、サイトの静的アセットに対応できます。 静的アセットを個別に保存すると、サーバーのスペースとリソースを解放してサイトのパフォーマンスを最適化できます。 サイトに動的なアセット(高いリクエストレートのリソースや頻繁に変更する必要があるデータベースファイル)がある場合、データを最適に保存するためにブロックストレージソリューションとDigitalOcean Spaceのペアリングを検討できます。 オブジェクトおよびブロックストレージの詳細については、https://www.digitalocean.com/community/tutorials/object-storage-vs-block-storage-services [オブジェクトストレージvs. ブロックストレージサービス]。

このチュートリアルでは、スペースを使用してWordPressデータをバックアップします。 DigitalOcean Spaces APIはAWS S3 APIと相互運用できるため、S3互換プラグインを使用して、http:/と同様にバックアップを管理できます。 /s3tools.org/s3cmd[S3cmd]、S3およびS3互換オブジェクトストアを操作するためのクライアントツール。 バックアップを作成するには、WordPressプラグインを使用する、S3cmdを使用して手動バックアップを作成する、S3cmdとその目的で作成されたスクリプトを使用してバックアップを自動化する、さまざまな方法を検討します。

前提条件

このチュートリアルでは、サーバー上にWordPressインスタンスとDigitalOcean Spaceがあることを前提としています。 そうでない場合は、次を設定できます。

これらの前提条件が整ったら、WordPressサイトのSpacesへのバックアップを開始できます。

WordPressの権限を変更する

このチュートリアル全体を通して、WordPressプロジェクトの + wp-content / uploads +`フォルダーを操作するため、このフォルダーが存在し、適切な権限を持っていることが重要です。 `+ mkdir +`コマンドで作成できます。+ -p + `フラグを使用して、フォルダーが存在しない場合は作成し、存在する場合はエラーをスローしないようにします。

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

これで、フォルダにアクセス許可を設定できます。 まず、所有権をユーザーに設定し(ここでは* sammy *を使用しますが、必ずルート以外の `+ sudo `ユーザーを使用してください)、グループ所有権を ` www-data +`グループに設定します。

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

次に、Webサーバーにこのフォルダーへの書き込みアクセスを許可するアクセス許可を確立します。

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

プラグインを使用して、 `+ wp-content / uploads +`フォルダー内のアセットのバックアップを作成し、WordPressインターフェースからアセットを操作できるようになります。

プラグインを使用してバックアップを作成する

WordPressサイトをSpaceにバックアップするために使用できるさまざまなS3互換プラグインがあります。 プラグインを評価する際に考慮すべき要素の1つは、データベースファイルをバックアップするかどうかです。これらのリソースの一部はその機能を提供していません。 留意すべきもう1つの要素は、プラグインが他のプラグインからリソースをプルするかどうかです。 たとえば、ドキュメントマネージャーを使用している場合、バックアッププラグインがドキュメントマネージャーによって作成されたファイルとリソースを `+ wp-content / uploads +`フォルダー内にキャプチャするかどうかを検討することができます。

WP-CLIを使用したプラグインのインストール

WP-CLIと連携して、コマンドラインからWordPressプラグインを管理することができます。 このセクションでインストールし、次に使用してプラグインを操作してWordPressデータをSpacesにバックアップする方法を示します。

WP-CLIをインストールするには、プロジェクトの推奨手順に従います。 次のコマンドを実行して、バイナリを「+ tmp +」フォルダーにダウンロードします。

cd /tmp
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

このファイルを実行可能にし、コマンドラインから使用可能にするには、次のように入力します。

chmod +x /tmp/wp-cli.phar

ファイルを実行可能にしたら、その名前を変更して、 `+ PATH +`の場所に移動できます。

sudo mv /tmp/wp-cli.phar /usr/local/bin/wp

インストールが成功したことを確認したい場合は、次を実行できます。

wp --info

これにより、使用しているバージョンとそのパスに関する一般的な情報が得られます。

WP-CLIを使用して、使用するプラグインをインストールし、WordPressサイトに関連するhttps://make.wordpress.org/cli/handbook/ [その他のタスクを管理]にインストールできるようになりました。

UpdraftPlus Backupのインストールと構成

他のメディアアセットと一緒にデータベースファイルをバックアップすることが心配な場合は、データベースバックアップオプションを提供するプラグインを使用することをお勧めします。 UpdraftPlus Backupは、データベースとメディアのバックアップとバックアップスケジュールを可能にするS3互換の無料バージョンを提供します。

UpdraftPlusをインストールするには、WordPressプラグインディレクトリに移動します。

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

ここから、 `+ wp `コマンドを使用して ` updraftplus +`をインストールできます。

wp plugin install updraftplus

プラグインをアクティブにするには、次を実行します。

wp plugin activate updraftplus

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

image:https://assets.digitalocean.com/articles/spaces_wordpress_backup/small_plugin_tab.png [WordPressプラグインタブ]

  • Installed Plugins を選択すると、インストールされたプラグインをリストするページが表示されます。 利用可能なオプションのリストに UpdraftPlus-バックアップ/復元*が表示されます。

画像:https://assets.digitalocean.com/articles/spaces_wordpress_backup/updraft_activated.png [UpdraftPlus Activated]

バックアップの設定を構成するには、管理ダッシュボードの*設定*タブに移動し、利用可能なオプションのリストから* UpdraftPlusバックアップ*を選択します。 次のようなランディングスクリーンが表示されます。

image:https://assets.digitalocean.com/articles/spaces_wordpress_backup/clean_updraft_menu.png [アップドラフトメニュー]

このプラグインを使用して基本的なサイトバックアップを行う方法について説明します。 ページ上部の[設定]タブの下に、バックアップのスケジュールを設定できるメニューがあります。

image:https://assets.digitalocean.com/articles/spaces_wordpress_backup/schedule_menu.png [スケジュールメニュー]

プラグインが機能することをテストしたい場合は、この設定を*手動*のままにしておくことができます。 プラグインが正しく機能することをテストするために、この設定を今のところ保持します。

このメニューの下には、さまざまなリモートストレージオプションが表示されます。 * S3-Compatible(Generic)*を選択します。

image:https://assets.digitalocean.com/articles/spaces_wordpress_backup/s3_compatible.png [S3-Compatible Option]

このオプションを選択すると、DigitalOcean Space情報を要求するメニューが表示されます。

image:https://assets.digitalocean.com/articles/spaces_wordpress_backup/s3_settings.png [S3設定]

SpaceのURLに基​​づいて、バケット名とエンドポイントを決定できます。 たとえば、スペースのURLが「+ https://.nyc3.digitaloceanspaces.com+」の場合、「+」がバケットになり、「 nyc3.digitaloceanspaces.com +」がエンドポイントになります。 * S3ロケーション*はバケット名になり、* S3エンドポイント*はエンドポイントになります。

この下に、バックアップに含めるファイルと除外するファイルのオプションがあります。

image:https://assets.digitalocean.com/articles/spaces_wordpress_backup/include_exclude_files.png [ファイルの除外オプションを含める]

バックアップしたい内容を反映するためにこれらの設定を入力したら、*現在のステータス*タブに戻ることができます。 画面上部の使用可能なボタンから[今すぐバックアップ]を選択すると、次のメニューが表示されます。

image:https://assets.digitalocean.com/articles/spaces_wordpress_backup/database_menu_new.png [データベースメニュー]

ここで、データベースをバックアップするかどうかを選択できます。

このメニューの下部にある[今すぐバックアップ]オプションを選択すると、バックアップファイルにバケットが入力されます。 DigitalOceanコントロールパネルの[スペース]ページに移動して、スペースがあることを確認できます。 プラグインの機能をテストしたら、ニーズに合わせてバックアップスケジュール設定を変更できます。

S3cmdを使用したWordPressのバックアップ

オブジェクトストレージソリューションのデータを管理するためのコマンドラインツールとして、S3cmdはWordPressデータをSpacesにバックアップするためのさまざまなオプションを提供します。 バックアッププロセスを自動化する分離コマンドおよびスクリプトで使用できます。

サーバーに `+ s3cmd +`がまだインストールされていない場合は、https://www.digitalocean.com/community/tutorials/how-to-backup-your-git-repository-to-に従ってインストールできます。 digitalocean-spaces#install-s3cmd [このチュートリアルの「S3cmdのインストール」セクション]およびhttps://www.digitalocean.com/community/tutorials/how-to-backup-your-gitに従ってSpaces情報で構成します-repository-to-digitalocean-spaces#configure-s3cmd [「S3cmdの構成」セクション]。

Spaces情報を使用して、 `+ s3cmd `をインストールして設定する必要があります。 次のように入力して、 ` s3cmd +`設定を確認できます。

s3cmd --dump-config

次のような出力が表示されるはずです。

Output
[default]
access_key =
access_token =
add_encoding_exts =
add_headers =
bucket_location = US
ca_certs_file =
cache_file =
check_ssl_certificate = True
check_ssl_hostname = True
cloudfront_host = cloudfront.amazonaws.com
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encrypt = False

...

Spacesクレデンシャルと一致することを確認するために `+ s3cmd `設定情報を検査したら、 ` s3cmd +`を使用してファイルをSpaceにバックアップする準備が整います。 この作業を自動化するスクリプトを作成する前に、まずこれを手動で行います。

`+ wp-content / uploads +`フォルダーの手動バックアップの作成

`+ wp-content / uploads `フォルダーのバックアップを作成するには、 ` s3cmd sync `というコマンドを使用します。 これにより、スペースにまだ存在しないファイルのみを転送できます。 これは1回限りの転送では重要ではないかもしれませんが、より多くのデータをSpaceに移動するとすぐに重要になります。 バケットには* sammys-bucket *を使用し、Spaceのバックアップフォルダーを指定するには* sammys-backups *を使用しますが、これらをバケットとバックアップフォルダーの名前(該当する場合)に置き換える必要があります。 ファイルが目的の場所に確実に移動するように、次のように、 ` s3cmd `とともに `-dry-run +`オプションを使用します。

s3cmd sync --dry-run /var/www/html/wp-content/uploads s3:////

データが目的の宛先に到達することをコマンドの出力が示している場合、先に進み、 `+-dry-run +`オプションなしでコマンドを実行できます。

s3cmd sync /var/www/html/wp-content/uploads s3:////

MySQLデータベースの手動バックアップの作成

これで、MySQLデータベースの手動バックアップを作成できます。 これは4つの部分で行われます。 まず、データベースファイルを保持するためにホームディレクトリにフォルダーを作成できます。

mkdir ~/mysqldmp

次に、データベースユーザーとパスワード情報を保持するファイルを作成します。 これにより、バックアップファイルの作成プロセスでその情報がコマンドラインに渡されることを回避できます。 MySQLのユーザー固有のオプションは通常 `+〜/ .my.cnf +`に保存されるため、そのファイルをホームディレクトリに作成します。 タイプ:

nano ~/.my.cnf

ファイル内で、MySQLクライアントのユーザー名とパスワードを指定します。

〜/ .my.cnf

[client]
user=
password=

`+ CTRL + X `に続けて ` Y +`を入力して、このファイルを保存します。

ユーザーの読み取りおよび書き込み権限を制限するには、次のように入力します。

chmod 600 .my.cnf

これで、コマンドラインにパスワード情報を渡すことなく、データベースファイルのコピーを作成するために `+ mysqldump `コマンドを実行できます。 ` mysqldump `を実行すると、デフォルトオプションを読み取るプロセスの一部として ` .my.cnf `ファイルを探します。 データベースからの出力を圧縮するには、次のように ` gzip +`を使用することもできます。

mysqldump  | gzip > ~/mysqldmp/mysql_dump.sql.gz

最後に、 `+ s3cmd +`を使用して圧縮ファイルをSpaceに送信できます。

s3cmd sync mysqldmp/mysql_dump.sql.gz s3:////

Spaceに圧縮されたデータベースファイルが表示されます。

Cronを使用したWordPressバックアップの自動化

バックアップを自動化すると、WordPressデータへのアクセスと回復が可能になります。 バックアップを手動で作成することは可能ですが、これは時間のかかるプロセスであり、 `+ cron `ジョブスケジューラを使用すると便利に自動化できます。 「 cron +」を使用してタスクをスケジュールする方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-schedule-routine-tasks-with-cron-and-anacron-のチュートリアルをご覧くださいon-a-vps [VPSでCronとAnacronを使用して定期的なタスクをスケジュールする方法]。

バックアップスクリプト用のファイルを作成するには、次のコマンドを使用できます。

nano ~/wp-sync.sh

空のファイル内で、このスクリプトがBashシェルによって実行されることを示すために、最初に以下を記述します。

wp-sync.sh

#!/bin/bash

次に、バックアップするファイルとデータベースに関する情報を指定する変数を宣言します。 `+ DATABASE `変数と ` UPLOADS_DIR +`変数は、バックアップするデータベースとフォルダーに関する情報を指定します。 これらの変数を配列として宣言すると、複数の値を指定できます。

wp-sync.sh

...
DATABASE=("") # To add more than one database, separate values with spaces: ("database1" "database2")
UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")

BACKUP_DIR=/home//mysqldmp

`+ DATABASE `変数は、 ` mysqldump `がバックアップするWordPressデータベースの名前を指定します。 ` UPLOADS_DIR `は、バックアップするディレクトリを指します。 ` BACKUP_DIR `は、スクリプトに ` mysqldump +`がバックアップファイルを書き込む場所を指示します。

次に、Spacesバケット情報を含む `+ s3cmd `情報を設定します。 この情報は、 ` s3cmd `設定ファイルの ` s3 `バケット情報をミラーリングします。 ` S3_CMD `変数を指定するとき、 ` cron `の ` s3cmd `バイナリへのパスを含めます。 また、バックアップファイルのタイムスタンプを作成できるようにする ` DATE`変数も含めます。

wp-sync.sh

...

DATE=$(date +%y%m%d-%H_%M_%S)


S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3:////$DATE/

ここでは、年( +%y +)、月( +%m +)、日( +%d +)、時間( +%バックアップのH + `)、分( %M + `)、および秒(` +%S + `)。 バックアップスケジュールの頻度に応じて、バックアップを便利に追跡できるように変更できます。 ` S3_CMD `変数は、コマンドの実行を可能にする ` s3cmd +`実行可能ファイルを指します。

次に、 `+ mysqldmp +`ディレクトリがまだ存在しない場合に作成する一連のコマンドを含め、更新プロセス中にそのディレクトリからファイルを削除します。

wp-sync.sh

...

mkdir -p $BACKUP_DIR
rm -rf "${BACKUP_DIR:?}/*"

最後に、https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3 [+ for + loops]を作成して、「+ s3cmd sync 」を実行しますデータベースファイル。 再び ` mysqldump `を使用して圧縮されたデータベースファイルを作成しますが、 `-defaults-extra-file `オプションを追加して、 ` .my.cnf +`を標準オプションファイルに追加。 また、データベース配列を反復処理して、各データベースで同じアクションセットを実行します。

wp-sync.sh

...

for DB in "${DATABASE[@]}"
do
mysqldump --defaults-extra-file=/home//.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz"
$S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET"
done

`+ mysqldump `および ` s3cmd sync `コマンドは、前のセクションで行ったのと同じ働きをします。 しかし、 ` DATE +`変数のタイムスタンプをバケットに追加したため、ファイルは作成された時期を簡単に追跡できる方法でスペースに作成されます。

次に、ディレクトリのループを作成します。 繰り返しますが、 `+ UPLOADS_DIR +`配列を反復処理して、各ディレクトリで同じアクションを実行します。

wp-sync.sh

...

for DIR in "${UPLOADS_DIR[@]}"
do
$S3_CMD sync "$DIR" "$S3_BUCKET"
done

繰り返しになりますが、 `+ s3cmd sync +`コマンドは、このディレクトリの手動バックアップを作成するために使用したコマンドと同じです。 違いは、スペース内のこのマテリアルに付加されるタイムスタンプです。

完全なスクリプトは次のようになります。

wp-sync.sh

#!/bin/bash

DATABASE=("") # To add more than one database, separate values with spaces: ("database1" "database2")
UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")

BACKUP_DIR=/home//mysqldmp

DATE=$(date +%y%m%d-%H_%M_%S)

S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3:////$DATE/

mkdir -p $BACKUP_DIR
rm -rf "${BACKUP_DIR:?}/*"

for DB in "${DATABASE[@]}"
do
mysqldump --defaults-extra-file=/home//.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz"
$S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET"
done

for DIR in "${UPLOADS_DIR[@]}"
do
$S3_CMD sync "$DIR" "$S3_BUCKET"
done

これで、 `+ wp-sync.sh +`スクリプトを実行可能にできます。

chmod +x ~/wp-sync.sh

テストするには、次を実行します。

sudo ~/wp-sync.sh

スペースに移動し、ファイルが意図したとおりにコピーされていることを確認します。 これをチェックしたら、 `+ crontab +`ファイルを編集して、必要な間隔でスクリプトを実行できます。

次を入力して、 `+ crontab +`ファイルで開きます。

crontab -e

このファイルを初めて編集する場合は、エディターを選択するよう求められます。

crontab

no crontab for root - using an empty one
Select an editor.  To change later, run 'select-editor'.
 1. /bin/ed
 2. /bin/nano        <---- easiest
 3. /usr/bin/vim.basic
 4. /usr/bin/vim.tiny
Choose 1-4 [2]:
...

nanoに「2」を選択するか、選択したエディターに対応する番号を入力できます。

ファイルの最後に、スクリプトを実行する頻度を指定する行を追加します。 スクリプトの機能をテストするために、次のように時間間隔を2分に設定できます。

crontab

...

*/2 * * * * /home//wp-sync.sh

2分後、スペースにファイルのタイムスタンプ付きのデポジットが表示されます。 これで、 `+ crontab +`ファイルを変更して、バックアップに使用する時間間隔を指定できます。

結論

WordPressデータをDigitalOceanのSpacesオブジェクトストレージサービスにバックアップする方法をいくつか紹介しました。

`+ s3cmd +`とSpacesの操作の詳細については、https://www.digitalocean.com/community/tutorials/how-to-configure-s3cmd-2-x-to-manage-digitalocean-spaces [ DigitalOcean Spacesを管理するためのs3cmd 2xの構成ガイド]およびhttps://www.digitalocean.com/community/tutorials/how-to-manage-digitalocean-spaces-with-s3cmd[s3cmdによるDigitalOcean Spacesの管理]のチュートリアル。 DigitalOcean Spacesでバックアップを自動化する方法およびhttps://www.digitaloceanでチュートリアルを確認することもできます。自動化スクリプトおよびバックアップオプションのその他の例については、.com / community / tutorials / how-to-backup-your-git-repository-to-digitalocean-spaces [GitリポジトリをDigitalOcean Spacesにバックアップする方法]を参照してください。 最後に、Spacesの使用方法の最適化の詳細については、https://www.digitalocean.com/community/tutorials/best-practices-for-performance-on-digitalocean-spaces [DigitalOcean Spacesのパフォーマンスのベストプラクティス]をご覧ください。 。