序章

DigitalOcean Spacesは、WordPressサイトデータ用のオブジェクトストレージソリューションを提供できます。 このデータは、メディアアセットやデータベースファイルなど、多くの場合多様であるため、オブジェクトストレージの候補として適しています。 Spacesのようなソリューションは、大量の非構造化データを保存できるため、サイトの静的資産に対応できます。 静的アセットを個別に保存すると、サーバー上のスペースとリソースを解放することで、サイトのパフォーマンスを最適化できます。 サイトに動的なアセット(リクエスト率の高いリソースや頻繁に変更が必要なデータベースファイル)がある場合は、ブロックストレージソリューションをDigitalOcean Spaceと組み合わせて、データを最適に保存することを検討してください。 オブジェクトとブロックのストレージの詳細については、 オブジェクトストレージとのチュートリアル ブロックストレージサービス

このチュートリアルでは、Spacesを使用してWordPressデータをバックアップします。 DigitalOcean SpacesAPIはAWSS3APIと相互運用可能であるため、S3互換のプラグインを使用してバックアップを管理したり、S3cmdを使用して作業するためのクライアントツールを使用したりできます。 S3およびS3互換のオブジェクトストアを使用します。 バックアップを作成するためのいくつかの異なる方法について説明します。WordPressプラグインを使用する方法、S3cmdを使用して手動バックアップを作成する方法、S3cmdとその目的で作成されたスクリプトを使用してバックアップを自動化する方法です。

前提条件

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

  • 1つのUbuntu16.04サーバー。Ubuntu16.04チュートリアルを使用した初期サーバーセットアップに従ってセットアップします。
  • Ubuntu 16.04 にLinux、Apache、MySQL、PHP(LAMP)スタックをインストールする方法に関するチュートリアルに従ってサーバーにインストールされたLAMPスタック。
  • Ubuntu16.04にLAMPを使用してWordPressをインストールする方法に関するチュートリアルに従ってサーバーにインストールされたWordPress。
  • DigitalOceanスペースとAPIキーの作成方法に従って作成されたDigitalOceanスペースとAPIキー。

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

WordPressの権限を変更する

このチュートリアル全体を通して、私たちは wp-content/uploads WordPressプロジェクトのフォルダーであるため、このフォルダーが存在し、適切なアクセス許可を持っていることが重要です。 あなたはそれを作成することができます 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インターフェイスからアセットを操作します。

プラグインを使用したバックアップの作成

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

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

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

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

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

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

  1. chmod +x /tmp/wp-cli.phar

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

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

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

  1. wp --info

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

これで、WP-CLIを使用して、使用したいプラグインをインストールしたり、WordPressサイトに関連する他のタスクを管理したりしたりできます。

UpdraftPlusバックアップのインストールと構成

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

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

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

ここからインストールできます updraftplus を使用して wp 指図:

  1. wp plugin install updraftplus

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

  1. wp plugin activate updraftplus

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

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

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

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

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

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

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

SpaceのURLに基づいて、バケット名とエンドポイントを特定できます。 たとえば、スペースのURLが https://example-name.nyc3.digitaloceanspaces.com、 それから example-name あなたのバケツになります、そして nyc3.digitaloceanspaces.com エンドポイントになります。 S3の場所がバケット名になり、S3エンドポイントがエンドポイントになります。

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

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

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

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

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

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

まだお持ちでない場合 s3cmd サーバーにインストールされている場合は、このチュートリアルの「InstallS3cmd」セクションに従ってインストールし、「ConfigureS3cmd」セクションに従ってスペース情報を使用して構成できます。

あなたは今持っているはずです s3cmd Spaces情報をインストールおよび構成します。 確認できます s3cmd 次のように入力して構成します。

  1. s3cmd --dump-config

次のような出力が表示されます。

Output
[default] access_key = Your_Spaces_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 ...

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

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

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

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

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

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

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

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

  1. mkdir ~/mysqldmp

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

  1. nano ~/.my.cnf

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

〜/ .my.cnf

[client]
user=mysql_user
password=mysql_password

次のように入力して、このファイルを保存します CTRL+X に続く Y.

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

  1. chmod 600 .my.cnf

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

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

最後に、 s3cmd 圧縮ファイルをスペースに送信するには:

  1. s3cmd sync mysqldmp/mysql_dump.sql.gz s3://sammys-bucket/sammys-backups/

これで、スペースに圧縮データベースファイルが表示されます。

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

バックアップを自動化することで、WordPressデータへのアクセスと回復が可能になります。 バックアップを手動で作成することは可能ですが、これは時間のかかるプロセスであり、 cron ジョブスケジューラ。 使用の詳細については cron タスクをスケジュールするには、VPSでCronとAnacronを使用してルーチンタスクをスケジュールする方法に関するチュートリアルを確認してください。

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

  1. nano ~/wp-sync.sh

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

wp-sync.sh

#!/bin/bash

次に、バックアップするファイルとデータベースに関する情報を指定する変数を宣言します。 私たちの DATABASEUPLOADS_DIR 変数は、バックアップするデータベースとフォルダーに関する情報を指定します。 これらの変数を配列として宣言します。これにより、複数の値を指定できるようになります。

wp-sync.sh
...
DATABASE=("mysqldatabase_name") # 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/sammy/mysqldmp

The DATABASE 変数は、WordPressデータベースの名前を指定します。 mysqldump バックアップします。 UPLOADS_DIR バックアップしている1つまたは複数のディレクトリを指します。 BACKUP_DIR スクリプトにどこに指示するか mysqldump バックアップファイルを書き込む必要があります。

次に、 s3cmd Spacesバケット情報を含む情報。 この情報は、 s3 私たちからのバケット情報 s3cmd 構成ファイル。 私たちが指定するとき S3_CMD 変数、へのパスを含めます s3cmd のバイナリ cron. また、 DATE 変数。バックアップファイルのタイムスタンプを作成できます。

wp-sync.sh
...

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


S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/

ここでは、 DATE 年をキャプチャするための非常に細かい変数(%y)、 月 (%m)、 日 (%d)、 時間 (%H)、 分 (%M)、および2番目(%S)バックアップの。 バックアップスケジュールの頻度に応じて、バックアップを便利に追跡できるようにこれを変更できます。 私たちの S3_CMD 変数は s3cmd コマンドの実行を可能にする実行可能ファイル。

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

wp-sync.sh
...

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

最後に、実行するforループを作成します s3cmd sync 私たちのデータベースファイルのために。 再び使用します mysqldump 圧縮されたデータベースファイルを作成しますが、それに追加します --defaults-extra-file オプション、それは言う mysqldump 読む .my.cnf 標準のオプションファイルに加えて。 また、データベース配列を反復処理して、各データベースに同じ一連のアクションを実行します。

wp-sync.sh
...

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

The mysqldumps3cmd 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=("mysqldatabase_name") # 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/sammy/mysqldmp

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

S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/

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

for DB in "${DATABASE[@]}"
do
mysqldump --defaults-extra-file=/home/sammy/.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 スクリプト実行可能ファイル:

  1. chmod +x ~/wp-sync.sh

それをテストするために、次を実行できます。

  1. sudo ~/wp-sync.sh

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

によって開く crontab 次のように入力してファイルを作成します。

  1. 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]: 
...

選択できます 2 nanoの場合、または選択したエディターに対応する番号を入力します。

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

crontab
...

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

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

結論

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

での作業について詳しく知るには s3cmd およびSpacesについては、DigitalOceanSpacesを管理するためのs3cmd2xの構成に関するガイドとs3cmdを使用したDigitalOceanSpacesの管理に関するチュートリアルを確認してください。 自動化スクリプトとバックアップオプションのその他の例については、 DigitalOceanSpacesおよびGitリポジトリをDigitalOceanSpacesにバックアップする方法のチュートリアルを確認することもできます。 最後に、Spacesの使用方法の最適化の詳細については、DigitalOceanSpacesでのパフォーマンスのベストプラクティスを確認してください。