初めてのシェルスクリプト!
便利なものを作ってみたいな、ということで普段使いができる、時間がかかってしまって面倒なことを自動化する試みであります。
さて、今回は、たとえば、
- 複数の WordPress のサイトやプロジェクトを管理していて定期的に、あるいは WordPressの本体がアップデートされた時にコアやプラグインをアップデートし、チームやクライアントにメールで報告するタスク
- 機能追加やバグ取りなどを実施する前に本番の環境を手元に持ってきて、その際にバックアップも作るしそのログも残すタスク
を自動的にやってくれるコマンドを作ってみました。
- ローカルのDBのバックアップをする
- リモートのファイルとデータベースを持ってきて反映
- 同時にバックアップも作る
- ついでに作業内容のログを残し、
- クライアントサイトの場合には、報告のメールの文章を用意したい
という内容でございます。
もっとこういう風に書いたほうがいいよ!などのフィードバックぜひぜひお願いします。@shinichiN | Twitter です。
前提となる環境
ローカルのサーバ環境がある
VCCW, wp-instant-setup, MAMP, XAMPP などなんでもOKです。
ツールが揃っている
今回使うツールは以下のものです。
実施する内容
今回自動化したい内容は、大きく分けて以下のものになります。
バックアップとアップデートの作業
- 現状のローカル環境のデータベースのバックアップを作成
- リモートからすべてのファイル、データベースを持ってきて適用する
- リモートの最新状態のデータベースのバックアップを作成
- WordPress のコアを最新のバージョンにアップデートする
- すべてのプラグインを最新のバージョンにアップデートする
人間っぽい作業を簡単にする部分
- 上記のすべて作業内容で出力される内容をログファイルにまとめる
- 上記のすべての作業内容を、コピペしてクライアントに見やすくまとめたメール本文としてテキストファイルにまとめる
- データベースの新旧バックアップファイルとログファイル、メールの本文をドロップボックスに保存する
使い方(試し方)
Github にあるスクリプトをいい感じの場所に設置して実行権限を渡し、パスを通すか、以下のワンライナーを実行してください。
curl https://raw.githubusercontent.com/ShinichiNishikawa/WP-Backup-for-client-projects/master/wp-backup.sh | sh
条件
- wp-cli がある環境
- Wordmove がある環境
- Dropbox がある環境
この他に、引数を指定するのが面倒であったため、データベースのダンプファイルの名前に実行している、このスクリプトを実行しているディレクトリの名前を使ったりもしているので、いつも同じ名前のフォルダ `www` とか `public_html` などがローカル環境にある人は使いにくいかもしれません。その場合は、フォルダの名前をローカル環境のホスト名などにするなど工夫してください。
自慢ポイント
メールの本文も作ってくれるのが便利。ここからメールを送ってしまっても良いのかと思いましたが、エラーの確認や必要な修正をしてあげてから本番にアップしないといけないので、その部分は自動化できませんでした。
ログファイルの中にパスワードが含まれることになるので、それを削除しているところも色々調べて作りました。正規表現がすごく苦手なので大変でした。
今後の改善予定
wp-cli の置換コマンド `wp search-replace` に `–export=<filename>` という結果をダンプファイルとして出力させるオプションが追加されるので、もしかしたらローカルではなくリモートのホスト名でのダンプライフもここで作れるかもしれません。
作業時にDBにも手が入ることが多いのでやらないかもですが。
それから、実行されたのが WordPress のあるディレクトリじゃないとか、ネットワークに接続できなかったとき、Movefile が存在しないときなど色々なエラーを想定して、もっときちんと処理が止まったりエラーが出た旨のメールが届いたりなどしたいと思います。
もうひとつ、WordPress がインストールされているディレクトリのリストを作り、すべてのサイトにひとつのコマンドで実行ができれば、さらに効率が上がっていいな、と思います。
できあがるファイルの様子
できあがるメールの例
いつもお世話になっております。
WordPress サイトの更新をおこないました。
変更の概要は以下のとおりです。– 作業日: 2015年12月22日
– ローカル環境でWordPress のバージョンを 4.3.1 から 4.4 にアップグレードしました。
– ローカル環境でWordPress のプラグインを、以下のようにアップデートしました。name version
advanced-custom-fields 4.4.4
auto-post-thumbnail 3.3.3
breadcrumb-navxt 5.3.1
contact-form-7 4.3.1
content-bootstrap 1.0.2
custom-post-type-permalinks 1.3.0
duplicate-post 2.6
image-widget 4.2.1
mailcatcher 1.0
more-body-classes 1.0
nginx-champuru 3.1.1
show-current-template 0.2.2
simple-map 2.8.8
nskw-title-description-handler
wordpress-importer 0.6.1
wp-pagenavi 2.89.1
wp-multibyte-patch 2.5
wp-simple-related-posts 1.5.1
wp-total-hacks 2.0.1– ローカル環境で、アップデートに由来するエラーの有無を確認・修正
– 本番環境に変更を適用
– 本番環境での表示、ログインなどを確認今後とも引き続きどうぞ宜しくお願い致します。
コメント