KUSANAGIのバックエンドをAzureのMySQLにする

Azure

KUSANAGIはWordPressのアクセラレータとして人気が高いOSSです。AzureのMarketplaceからもデプロイが出来るようになっており、手軽に高速なWordPress環境を構築出来ます。

一方で、Marketplaceのイメージは、単一の仮想マシンにWordPress + nginx / apache + MariaDBを構成するため、ウェブサーバとDBの負荷に応じて独立してスケールさせることが出来ません。

そこで、MariaDBではなく、Azure Database for MySQL Flexible Serverを利用するようにしてみましょう。

KUSANAGIのデプロイ

特に難しいことは無いと思われます。Azureポータルから[Create a resource]をポイントします。

検索フィールドに”KUSANAGI”と入力すると、候補が表示されます。

今回は検証目的なので、OSS版のKUSANAGIを選択します。

本番サーバとして用いるのであれば、KUSANAGIの主な開発元であるPrime Strategyがサポートを提供するエディションを選択しましょう。執筆時点で、KUSANAGIの機能に応じた以下のエディションが提供されています。

  • KUSANAGI 9 for Microsoft Azure Business Edition
  • KUSANAGI 9 for Microsoft Azure Premium Edition
  • KUSANAGI Security Edition for Microsoft Azure

あとはいつものようにVMを作成します。

デプロイが完了したら、VMのIPアドレスからDNS名を設定します。

Azure Database for MySQL Flexible Serverのデプロイ

KUSANAGIを作成したリソースグループに、MySQLを追加します。Marketplaceから[Databases]→[Azure Database for MySQL Flexible Server]を選択します。

“Flexible Server”の[Quick Create]を選択します。WordpressをAzure AppServiceで動かすオプションについては、別のブログ記事で書いています。

MySQLのデプロイが完了したら、MySQLの”Networking”から[Allow public access from any…]を有効にします。本番サーバの場合は、VNET統合などを検討してください。

KUSANAGIの設定

KUSANAGIのVMにsshでログインし、RPMパッケージを更新します。

dnf -y update

次にKUSANAGIを初期化します。

kusanagi init --passwd PASSWORD --dbrootpass DB_PASSWORD --nophrase

さらにWordPressをプロビジョニングします。

kusanagi provision --wp --wplang ja --dbuser DB_USER --dbpass DB_PASS --dbname kusanagi-wp --fqdn your_host.japaneast.cloudapp.azure.com --email EMAIL --title 'first blog' --adminuser admin --adminpass ADMIN_PASS --adminemail ADMIN_EMAIL kusanagi1

各引数の意味については、以下のコマンドで確認できます。

kusanagi provision --help

fqdn引数には、KUSANAGIのVMに設定したDNS名を設定します。また位置引数として、”kusanagi1″を指定していますが、これはKUSANAGIのプロファイル名となります。

MariaDBからMySQLに変更する

WordPressのプロビジョニングが完了すると、”/home/kusanagi/profile_name/wp-config.php“が生成されます。パーミッションを変更し、エディタで開きます。

chmod 755 /home/kusanagi/kusanagi1/wp-config.php

プロビジョニング時に指定した、DBアカウントやパスワードが設定されていることを確認し、以下の2点を更新・追加します。

  1. DB_HOSTを”localhost”から、Azure Database for MySQL Flexible ServerのFQDNに変更
  2. define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL); を追加

Azure Database for MySQL Flexible Serverは、SSL/TLS接続が必須となるため、定数の追加が必要です。編集が完了したら、パーミッションを元に戻します。

chmod 440 /home/kusanagi/kusanagi1/wp-config.php

WordPressにアクセスする

KUSANAGIのVMのFQDNにウェブブラウザでアクセスすると、WordPressの初期設定ダイアログが表示されます。アカウント: kusanagi、パスワード: kusanagi provision実行時に指定したパスワードで認証されるので、最初のブログを作成してみましょう。後は、いつも通りのWordPressと同様に利用できるはずです。