前書き
DigitalOcean Spacesは、WordPressサイトデータのオブジェクトストレージソリューションを提供できます。 このデータは、メディアアセットやデータベースファイルなど、さまざまな場合が多いため、オブジェクトストレージの候補として適しています。 Spacesなどのソリューションは大量の非構造化データを保存できるため、サイトの静的アセットに対応できます。 静的アセットを個別に保存すると、サーバーのスペースとリソースを解放してサイトのパフォーマンスを最適化できます。 サイトに動的なアセット(高いリクエストレートのリソースや頻繁に変更する必要があるデータベースファイル)がある場合、データを最適に保存するためにブロックストレージソリューションとDigitalOcean Spaceのペアリングを検討できます。 オブジェクトとブロックストレージの詳細については、tutorial on Object Storage vs. Block Storage Servicesを確認してください。
このチュートリアルでは、スペースを使用してWordPressデータをバックアップします。 DigitalOceanSpaces APIはAWS S3 APIと相互運用可能であるため、S3互換プラグインを使用してバックアップを管理できるほか、S3cmd(S3およびS3-を操作するためのクライアントツール)を使用できます。互換性のあるオブジェクトストア。 バックアップを作成するには、WordPressプラグインの使用、S3cmdを使用した手動バックアップの作成、S3cmdとその目的で作成されたスクリプトを使用したバックアップの自動化など、いくつかの異なる方法を検討します。
前提条件
このチュートリアルでは、サーバー上に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キー。
これらの前提条件が整ったら、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サイトに関連するmanage other tasksにインストールしたりできます。
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管理ダッシュボードの左側にあるプラグインタブに移動できます。
Installed Pluginsを選択すると、インストールされているプラグインを一覧表示するページが表示されます。 使用可能なオプションのリストにUpdraftPlus - Backup/Restoreが表示されます。
バックアップの設定を構成するには、管理ダッシュボードの[Settings]タブに移動し、使用可能なオプションのリストからUpdraftPlus Backupsを選択します。 次のようなランディングスクリーンが表示されます。
このプラグインを使用して基本的なサイトバックアップを行う方法について説明します。 ページ上部のSettingsタブの下に、バックアップをスケジュールできるメニューがあります。
プラグインが機能することをテストしたい場合は、これをManualのままにしておくことができます。 プラグインが正しく機能することをテストするために、この設定を今のところ保持します。
このメニューの下には、さまざまなリモートストレージオプションが表示されます。 S3-Compatible (Generic)を選択します。
このオプションを選択すると、DigitalOcean Space情報を要求するメニューが表示されます。
SpaceのURLに基づいて、バケット名とエンドポイントを決定できます。 たとえば、スペースのURLがhttps://example-name.nyc3.digitaloceanspaces.com
の場合、example-name
がバケットになり、nyc3.digitaloceanspaces.com
がエンドポイントになります。 S3 locationはバケット名になり、S3 end-pointはエンドポイントになります。
この下に、バックアップに含めるファイルと除外するファイルのオプションがあります。
バックアップしたい内容を反映するようにこれらの設定を入力したら、Current Statusタブに戻ることができます。 画面上部の使用可能なボタンからBackup Nowを選択すると、次のメニューが表示されます。
ここで、データベースをバックアップするかどうかを選択できます。
このメニューの下部にあるBackup Nowオプションを選択すると、バックアップファイルがバケットに入力されます。 DigitalOceanコントロールパネルの[スペース]ページに移動して、スペースがあることを確認できます。 プラグインの機能をテストしたら、ニーズに合わせてバックアップスケジュール設定を変更できます。
S3cmdを使用したWordPressのバックアップ
オブジェクトストレージソリューションのデータを管理するためのコマンドラインツールとして、S3cmdはWordPressデータをSpacesにバックアップするためのさまざまなオプションを提供します。 バックアッププロセスを自動化する分離コマンドおよびスクリプトで使用できます。
サーバーにs3cmd
がまだインストールされていない場合は、the “Install S3cmd” section of this tutorialに従ってインストールし、the “Configure S3cmd” sectionに従ってスペース情報を使用して構成できます。
これで、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/
Spaceに圧縮されたデータベースファイルが表示されます。
Cronを使用したWordPressバックアップの自動化
バックアップを自動化すると、WordPressデータへのアクセスと回復が可能になります。 バックアップを手動で作成することは可能ですが、これは時間のかかるプロセスであり、cron
ジョブスケジューラを使用して便利に自動化できます。 cron
を使用してタスクをスケジュールする方法の詳細については、How To Schedule Routine Tasks With Cron and Anacron on a VPSに関するチュートリアルを確認してください。
バックアップスクリプト用のファイルを作成するには、次のコマンドを使用できます。
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:?}/*"
最後に、データベースファイルに対してs3cmd sync
を実行するためのfor
loopsを作成します。 再びmysqldump
を使用して圧縮データベースファイルを作成しますが、それに--defaults-extra-file
オプションを追加します。これは、標準オプションに加えて.my.cnf
を読み取るようにmysqldump
に指示します。ファイル。 また、データベース配列を反復処理して、各データベースで同じアクションセットを実行します。
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
とスペースの操作の詳細については、guide to configuring s3cmd 2x to manage DigitalOcean Spacesとmanaging DigitalOcean Spaces with s3cmdのチュートリアルを確認してください。 自動化スクリプトとバックアップオプションのその他の例については、How To Automate Backups with DigitalOcean SpacesとHow To Backup Your Git Repository To DigitalOcean Spacesに関するチュートリアルを確認することもできます。 最後に、スペースの使用方法の最適化の詳細については、Best Practices for Performance on DigitalOcean Spacesを確認してください。