WordPressサイトをオブジェクトストレージにバックアップする方法
序章
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の権限を変更する
このチュートリアル全体を通して、WordPressプロジェクトのwp-content/uploadsフォルダーを操作するため、このフォルダーが存在し、適切なアクセス許可を持っていることが重要です。 mkdirコマンドで作成し、-pフラグを使用して、フォルダーが存在しない場合は作成し、存在する場合はエラーをスローしないようにします。
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インターフェイスからアセットを操作できるようになります。
プラグインを使用したバックアップの作成
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サイトに関連する他のタスクを管理したりしたりできます。
UpdraftPlusバックアップのインストールと構成
他のメディアアセットと一緒にデータベースファイルをバックアップすることに懸念がある場合は、データベースバックアップオプションを提供するプラグインを使用することをお勧めします。 UpdraftPlus Backup は、S3互換の無料バージョンを提供し、データベースとメディアのバックアップ、およびバックアップのスケジューリングを可能にします。
UpdraftPlusをインストールするには、WordPressプラグインディレクトリに移動します。
cd /var/www/html/wp-content/plugins
ここから、wpコマンドを使用してupdraftplusをインストールできます。
wp plugin install updraftplus
プラグインをアクティブ化するには、次のコマンドを実行します。
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」セクションに従ってインストールし、に従ってスペース情報を使用して構成できます。 ]「S3cmdの構成」セクション。
これで、s3cmdがインストールされ、Spaces情報で構成されているはずです。 s3cmdの構成は、次のように入力して確認できます。
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つの部分で発生します。 まず、ホームディレクトリにデータベースファイルを保持するフォルダを作成できます。
mkdir ~/mysqldmp
次に、データベースのユーザーとパスワードの情報を保持するファイルを作成します。 これにより、バックアップファイルの作成プロセスでその情報がコマンドラインに渡されるのを防ぐことができます。 MySQLのユーザー固有のオプションは通常、~/.my.cnfに保存されるため、そのファイルをホームディレクトリに作成します。 タイプ:
nano ~/.my.cnf
ファイル内で、MySQLクライアントのユーザー名とパスワードを指定します。
〜/ .my.cnf
[client] user=mysql_user password=mysql_password
CTRL+Xに続けてYと入力して、このファイルを保存します。
読み取りおよび書き込み権限をユーザーに制限するには、次のように入力します。
chmod 600 .my.cnf
これで、mysqldumpコマンドを実行して、パスワード情報をコマンドラインに渡さずにデータベースファイルのコピーを作成できるようになります。 mysqldumpを実行すると、デフォルトオプションを読み取るプロセスの一部として、.my.cnfファイルが検索されます。 データベースからの出力を圧縮するには、次のようにgzipを使用することもできます。
mysqldump mysqldatabase_name | gzip > ~/mysqldmp/mysql_dump.sql.gz
最後に、s3cmdを使用して、圧縮ファイルをSpaceに送信できます。
s3cmd sync mysqldmp/mysql_dump.sql.gz s3://sammys-bucket/sammys-backups/
これで、スペースに圧縮データベースファイルが表示されます。
Cronを使用したWordPressバックアップの自動化
バックアップを自動化することで、WordPressデータへのアクセスと回復が可能になります。 バックアップを手動で作成することは可能ですが、これは時間のかかるプロセスであり、cronジョブスケジューラを使用して便利に自動化できます。 cronを使用してタスクをスケジュールする方法の詳細については、VPSでCronとAnacronを使用してルーチンタスクをスケジュールする方法のチュートリアルをご覧ください。
バックアップスクリプト用のファイルを作成するには、次のコマンドを使用できます。
nano ~/wp-sync.sh
空のファイル内に、このスクリプトがBashシェルによって実行されることを示すために、最初に次のように記述します。
wp-sync.sh
#!/bin/bash
次に、バックアップするファイルとデータベースに関する情報を指定する変数を宣言します。 DATABASE変数とUPLOADS_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
DATABASE変数は、mysqldumpがバックアップする1つまたは複数のWordPressデータベースの名前を指定します。 UPLOADS_DIRは、バックアップしている1つまたは複数のディレクトリを指します。 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://sammys-bucket/sammys-backups/$DATE/
ここでは、DATE変数を非常に細かくして、年(%y)、月(%m)、日(%d)、バックアップの時間(%H)、分(%M)、および秒(%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
mysqldumpおよびs3cmd syncコマンドは、前のセクションで行ったのと同じ作業を行います。 ただし、DATE変数のタイムスタンプをバケットに追加したため、ファイルは、作成された時期を簡単に追跡できるようにSpaceに作成されます。
次に、ディレクトリのループを作成します。 ここでも、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スクリプトを実行可能にすることができます。
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/sammy/wp-sync.sh
2分後、スペースにタイムスタンプ付きのファイルのデポジットが表示されます。 これで、crontabファイルを変更して、バックアップに使用する時間間隔を指定できます。
結論
WordPressデータをDigitalOceanのSpacesオブジェクトストレージサービスにバックアップするいくつかの方法について説明しました。
s3cmdとSpacesの操作の詳細については、 DigitalOcean Spacesを管理するためのs3cmd2xの構成に関するガイドと、s3cmdを使用したDigitalOceanSpacesの管理に関するチュートリアルをご覧ください。 自動化スクリプトとバックアップオプションのその他の例については、 DigitalOceanSpacesおよびGitリポジトリをDigitalOceanSpacesにバックアップする方法のチュートリアルを確認することもできます。 最後に、Spacesの使用方法の最適化の詳細については、DigitalOceanSpacesでのパフォーマンスのベストプラクティスを確認してください。