読者です 読者をやめる 読者になる 読者になる

AWS+WordPress.SkeletonでスケーラブルなWordPressサイトをつくる【完全版】

f:id:gurimmer:20161214102354j:plain

こんにちは、エンジニアの@gorou_178です。このエントリは、「WordPress Advent Calendar 2016」の14日目の記事兼、イノベーター・ジャパン Advent Calendar 2016の14日目の記事です。

今年7月に、WordCamp Kansai 2016に登壇して、以下の発表をしてきました。

speakerdeck.com

スケーラブルにする場合、自動的にデプロイできるべきなのですが、スライドの最後に掲げている3つの課題がありました。

  1. WordPressコアのDBマイグレーション
  2. WordPressプラグインのDBマイグレーション
  3. 言語ファイルのダウンロード

これらをWP-CLIで解決できたのでまとめようと思います。

課題1: WordPressコアのDBマイグレーション

wp core update-db を実行するだけ。 手順としては以下です。

  1. wp core update でコアのアップデート
  2. wp core update-db でDBのマイグレーション

とても簡単でした。

課題2: WordPressプラグインのDBマイグレーション

ここは、グレーゾーンなのですが、ちゃんと作成されたプラグインであれば wp plugin update プラグイン名 で更新とともにマイグレーションしてくれます。 よく言われている「公式ディレクトリにあり、2年以内に更新されているもの」であれば問題ないと思います。*1

wp plugin update プラグイン名 だと最新版にアップデートされるため、事前にどのバージョンにアップデートされるのか知りたい場合は、 --dry-run オプションを付けると、現在のバージョンと更新バージョンの確認ができるのでとても便利ですよ。

f:id:gurimmer:20161213184626p:plain

課題3: 言語ファイルのダウンロード

wp core language でインストール・有効化・更新が行えます。

wp core language install ja --activate で日本語言語ファイルをインストールして有効化までしてくれます。wp core language activate ja で有効化します。

wp core language update でインストールされているコアの言語ファイル・テーマ・プラグイン全ての言語ファイルの更新を行ってくれます。個別指定はできなさそうなので全て一括更新になります。プラグインの更新同様に、 --dry-run オプションがあるので、事前に確認すると良いと思います。

f:id:gurimmer:20161213185330p:plain

自動デプロイ

上のスライドにも書いてますが、コア・プラグインをcomposerで管理できるWordPress.Skeletonを利用します。

github.com

composerのscriptsでインストール後にWordPressコアのDBマイグレーションと言語ファイルのダウンロード・有効化を実行します。

    "scripts": {
        "post-package-install": "Installer::postPackageInstall",
        "post-package-update": "Installer::postPackageUpdate",
        "post-install-cmd": [
            "wp core update-db --path=wp",
            "wp core language install ja --activate --path=wp "
        ]
    },

あとは、デプロイツールでデプロイ後に composer install を実行すれば環境が整います。スバラシイ!!

まとめ

WP-CLIでロケールとマイグレーションの管理方法をまとめてみました。 WordPress.Skeletonを利用している場合、デプロイを行うと言語ファイルがリセットされたり、DBマイグレーションをどう行うかが課題になっていたので、WP-CLIが対応していて助かりました。 気軽にWordPressをデプロイ・冗長構成化できるように今後も環境を整えていこうと思います。

*1:プラグインによってはマイグレーション方法が異なるため、各プラグインのマニュアルを参照ください。