WordPressサーバ構築Playbook “vagrant-ansible-wordpress-wordmove” をgithubに公開しました

2015年8月16日

本サイトを立ち上げるにあたって作成したAnsible Playbook “vagrant-ansible-wordpress-wordmove" をgithubに公開しました。動作確認OSはCentOS6.4です。

WordPressはCMSのため、運用するにあたってdevelopment, staging, productionの扱いをどうするかが結構悩ましかったのですが、Wordmoveを導入することで一気に解決しました。このPlaybookを使って、VagrantとAnsibleで開発環境を構築し、本番環境をAnsibleで構築し、そのあと開発と本番をWordmoveで同期するという運用で行こうと思っています。

(今は開発効率と生産性を優先したいのでステージ環境は無し。クリティカルな障害が怖くなってきたらその時にステージをリリース手順に含めるつもりです)

tools-15539_640

このPlaybookで配備されるソフトウェアとAnsible自体について、簡単なメモを書いておきます。

Ansible

Ansibleはサーバのプロビジョニングツールです。プロビジョニングツールとは、サーバを構築したいときにサクッと済ますための道具のことです。Chefも前にちょっと触ってみたことがあるのですが、色々覚えることがあってとっつきにくいのでAnsibleを使っています。実は、Chefであれば既に「VCCW」http://vccw.cc/が公開されているのでこれを使うと早かったんですが。。。Ansibleは思いついたことを直感的に書けて、かつ冪等性(べきとうせい)を担保する仕組みがあるところが気に入っています。

PHP5.6

CentOS6のyumで通常インストールされるPHP5.3は処理速度が遅いし、キャッシュ機構であるOPCacheが標準搭載されていません。APCを入れることは可能ですが、それよりもPHP5.6を使ってしまったほうが良いと思います。PHP5.6をインストールするため、リポジトリepelとremiを許可しています。PHP7をターゲットにすることも考えたのですが、まだもう少し時間が経って安定してからにします。噂によるとPHP5の倍くらいにパフォーマンスアップするとか。

Nginx + php-fpm

NginxはWebサーバです。 php-fpmとは、FastCGI Process Managerの略でアプリケーションサーバです。この組み合わせはけっこう定番でしょうか。だいぶ前にPHPサーバ作ったときにもこのペアを使ったような記憶があります。特に何も考えず選びました。

WordPress

言わずと知れたブログ管理システムです。PlaybookでインストールするWordPressのバージョン番号はvarsファイルに直書きしているので、新しいバージョンをインストールするときには書き換える必要があります。それから、一度WordPressがインストールされたら、もう一度Playbookを実行してもインストールせずにスキップします。これは、べきとうせいを保つためです。

Wordmove

非常に便利なツールで、2つのWordPressの同期を簡単にとることができます。WordPressを継続的に運用していくとき、開発・ステージ・本番環境をどうやって用意するかというのはひとつの課題です。このPlaybookを作り始めた当初は、wp-cliでプラグインを全部インストールして開発環境と本番環境を同期しようとか思っていたのですが、ウィジェットを追加したりプラグインの設定をし始めると、DBの中身まで同期する必要が出てきて途方に暮れていました。そんなときにグーグル先生からそっと差し出されたのがWordmoveです。

Wordmoveを開発環境に入れておけば、本番環境からpullして修正してpushするということができます。素晴らしい。プラグインだけ、テーマだけという同期の仕方もできます。間違ってpullするところをpushしたりすると大惨事になりますが、DBを同期する際にはバックアップを取ってくれます。Wordmove自体は開発環境にのみインストールしておきます。

Ruby

WordmoveがRubyで書かれているので、Rubyをインストールします。私はRubyに疎くて、rbenvやrvmやソースからコンパイルなどいくつかインストール方法があるみたいですが、エラーを吐いて失敗したりして手を焼いていました。そこで発見したのが、「rvm1-ansible」です。ansibleのロールのひとつとして指定すればrvmでRubyをインストールしてくれます。

logmon

ログの監視ツールで、ログに指定の文字列が吐かれたら指定のコマンドを実行してくれるツールです。"ERROR"などの文字列が吐かれた時にmailコマンドでメールアラートを飛ばすようにしています。ただし、開発環境にlogmonを入れてアラートを飛ばすようにするとメールがガンガン飛んできて鬱陶しいので、本番環境にのみインストールするようにしています。ansibleで開発用と本番用を切り分けるのが良いのかどうかイマイチよくわかっていないのですが。。。

git

logmonをCloneするのにインストールしただけです。まぁ、gitはインストールしておいて損は無いかなと。

ざっくりですが、以上でPlaybookの説明終わりです。もしよかったら使ってみてください。

2015/8/14 追記:githubってGoogleにインデックスされないんですかね?全然検索に引っかからないみたいなので、bitbucketにも上げてみました。