VPSサーバー上のWordPressをAWS S3にバックアップ
やりたいこと
さくらのVPSサーバー上にあるWordPressのバックアップを取りたい
1日に1回バックアップを取りたい
バックアップデータの保持先はAWS S3上にする
私の技術レベル
- さくらのVPS/さくらのクラウドのようなIaaS環境でのWebサーバー構築は何度か行っていて、Linux操作には慣れている
- AWSは精通していないが業務でなんとなく使っている
- S3は「安くファイルをおける場所。読み書きのためにAWSキーとAWS CLIコマンドが必要」というくらいの理解だった。
設計
- MySQL DB dumpデータとWordPressディレクトリをgzip圧縮し、awsコマンドでS3にPUT
- AWS S3アクセスキーはVPSサーバー上に保持
- VPSサーバー上でcronで毎日AM02:00にバッチ実行
- S3上には過去10日分だけ保持
TODO
- 1.AWS S3バケットの作成
- 2.適切な権限のアクセスキー発行
- 3.ライフサイクルポリシーの設定
- 4.「MySQL DB dumpデータとWordPressディレクトリをgzip圧縮し、awsコマンドでS3にPUT」を行うshファイルを作成
- 5.shファイルを手動実行し、バックアップ成功することを確認
- 6.shファイルを毎日実行するようcron設定
1.AWS S3バケットの作成
バージョニングだけチェックを入れて、他はデフォルトのまま、バケット作成。過去10日分のバックアップを同じファイル名で済ますためのバージョニング
2.IAM設定をし、適切な権限のアクセスキー発行
作成したS3バケットに対してのみ操作可能というポリシーを作成→その権限だけを持つユーザー作成、と進める。
まずAWS IAM画面設定にて、「作成したS3バケットに対してのみ操作可能」というポリシーを作る。[ポリシーの作成]から作っていく。
サービス=S3
アクション=*(全て)
リソース=object -> ARNの追加でさっき作成したS3バケットのARNを指定
(はじめ、リソース=bucketと指定してしまい後で詰まった。画像のようにobjectリソースを指定しないといけないよう。)
次にIAMユーザーを作成する。そのユーザーはAWS Webダッシュボードにログインさせたいユーザーではなく、CLI用ユーザーなので アクセスの種類:プログラムによるアクセス
を選択。
ユーザーに、先ほど作成したポリシーのみをアタッチしユーザー作成。
適切な権限のアクセスキーが発行完了。
3.ライフサイクルポリシーの設定
バックアップデータ置き場専用のバケットのため、バケット内のすべてのオブジェクトに適用
S3にPUTされた最新バージョンのファイルは削除して欲しくないので「現行バージョン」にはチェックを入れない。
最新バージョン以前のバージョンのファイルは10日分保持させればよい、つまりバックアップファイルは10日分保持されてればよいので「以前のバージョン」をチェックし、10日と設定。
4.shファイルを作成。「MySQL DB dumpデータとWordPressディレクトリをgzip圧縮し、awsコマンドでS3にPUT」を行う
python3,pip,aws-cliのインストールについては省略
awsコマンドのインストール完了後、 aws configure
して、作成したIAMユーザーのアクセスキー+シークレットキーを設定する。
ブラウザでAWS S3コンソール上でバケットに適当なファイルをアップロードし、
aws s3 ls s3://yourbacketname
でバケット内のファイル表示できることを確認する。
5.shファイルを手動実行し、バックアップ成功することを確認
#!/bin/sh#
# WordPressのディレクトリをコピー。管理画面からアップロードされた画像などをバックアップ
\cp -rf /var/www/mywordpress.com ~/backup
# DBdumpデータをバックアップ
mysqldump -u MYSQL_USER -pMYSQL_PASS -h MYSQL_HOST MYSQL_DB > ~/backup/mywordpressdb_dump.sql
# ディレクトリやsqlファイルを圧縮
tar czf ~/backup/mywordpress.com.tar.gz ~/backup/mywordpress.com
tar czf ~/backup/mywordpressdb_dump.tar.gz ~/backup/mywordpressdb_dump.sql
# S3にPUT
aws s3 cp ~/backup/mywordpress.com.tar.gz s3://yourbacketname/mywordpress.com.tar.gz
aws s3 cp ~/backup/mywordpressdb_dump.tar.gz
s3://yourbacketname/mywordpressdb_dump.tar.gz
試行錯誤しながら、↑のようになった。tarでアラームでるが
sh ~/backup/backup.sh
6.shファイルを毎日実行するようcron設定
crontab -e
0 2 * * * /home/yourname/backup/backup.sh
多分動くので10日後確認します
Author And Source
この問題について(VPSサーバー上のWordPressをAWS S3にバックアップ), 我々は、より多くの情報をここで見つけました https://qiita.com/miyatahirotaka/items/d8c4645f908dbc2cecf3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .