網元AMIの WordPress で RDS を使用するための手順を解説します。
Amazon RDS での MySQL サーバの作成
詳細は以下URLを参考にしてください。
MySQL DB インスタンスを作成して MySQL DB インスタンス上のデータベースに接続する
ここでは、各ステップで出てくる重要な入力項目について説明します。
ステップ Specify DB Details
マルチ AZ 配置
単一アベイラビリティーゾーンで DB インスタンスを作成する場合は、[No] を選択します。
[Yes]にして、マルチAZ配置にすると複数のアベイラビリティゾーンに MySQL が配置され、一台はコールドスタンバイ状態となります。
マスター側に障害が発生した場合、自動でスレーブ側の MySQL サーバに切り替えられるため耐障害性は高いですが、価格も2倍になりますので注意してください。
Allocated Storage
DBで使用するディスク容量になります。
DB Instance Identifier
DB インスタンス名です。これは自分のアカウント内で一意にしておく必要があります。
Master Username, Master Password, Confirm Password
MySQL に接続するときに使用するユーザ名、パスワードを指定します。
ステップ Configure Advanced Settings
VPC
どの VPC に設置するかを選択します。通常は Default VPC で良いでしょう。
DB Security Groups
RDS が所属するセキュリティグループを選択します。
詳細は以下URLを参考にしてください。
DB セキュリティグループを操作する
このセキュリティグループでは、網元AMIが所属するセキュリティグループからの 3306 ポートへのアクセスを許可しておく必要があります。
Database Name
データベース名を入力しておくと自動で RDS にデータベースが作成されます。
未入力の場合は、RDS 起動後に MySQL クライアントで接続して create database
文を実行してデータベースを作成する必要があります。
EC2 から RDS への接続確認
RDS が起動したら、網元AMIインスタンスに ssh 接続して接続できるか確認しましょう。
$ mysql -h {endpoint} -P 3306 -u {mymasteruser} -p
endpoint は、AWS マネージメントコンソールの RDS の情報から確認できます。
mymasteruser, password は RDS を作成するときに指定した Master Username, Master Password です。
データ移行と wp-config.php の書き換え
網元AMI上の MySQL にあるデータを RDS に移行する場合は、以下の手順で行います。
wp-cli によるデータのエクスポート
wp-cli を使用して、DBデータをエクスポートします。
$ wp --path=/path/to/wordpress db export
/path/to/wordpress
は WordPress がインストールされているディレクトリです。
網元AMIでは、通常 /var/www/vhosts/{instance_id}
になっています。
mysql コマンドによる RDS へのインポート
wp-cli でエクスポートしたファイルを mysql コマンドで RDS にインポートします。
$ mysql -h {endpoint} -P 3306 -u {mymasteruser} -p {databasename} < dump.sql
wp-config.php の書き換え
wp-config.php の以下の箇所を書き換えてください。
// ** MySQL settings - You can get this info from your web host ** //
$db_data = false;
if ( file_exists('/opt/aws/cloud_formation.json') ) {
$db_data = json_decode(file_get_contents('/opt/aws/cloud_formation.json'), true);
if ( isset($db_data['rds']) ) {
$db_data = $db_data['rds'];
$db_data['host'] = $db_data['endpoint'] . ':' . $db_data['port'];
}
}
if ( !$db_data ) {
$db_data = array(
'database' => 'RDS_DATABASE_NAME_HERE',
'username' => 'RDS_USER_NAME_HERE',
'password' => 'RDS_PASSWORD_HERE',
'host' => 'RDS_ENDPOINT_HERE',
);
}
- RDS_DATABASE_NAME_HERE : Configure Advanced Settings で設定した Database Name
- RDS_USER_NAME_HERE : Specify DB Details で設定した Master Username
- RDS_PASSWORD_HERE : Specify DB Details で設定した Master Password
- RDS_ENDPOINT_HERE : RDS の endpoint
これで wp-config.php の設定変更が完了しましたので、実際に WordPress から接続できるか確認しましょう。
網元AMIでの MySQL プロセスの停止
MySQL を RDS に移動させたので、網元AMI上で MySQL プロセスを動作させておく必要がなくなりました。
以下の手順で MySQL サーバの停止と自動起動をオフにすることが可能ですので、必要に応じて作業してください。
構成ファイルを書き換える
網元AMIでは、ミドルウェアの設定に chef-solo を利用しており、その設定は /opt/local/amimoto.json
に記述されています。
MySQL を起動しないように設定するには、このファイルを以下のように書き換えてください。
{
"nginx" : { "config" : { "user" : "nginx", "group" : "nginx" } },
"php" : { "config" : { "user" : "nginx", "group" : "nginx" } },
"mysql" : { "enabled" : false },
"phpfpm" : { "enabled" : true },
"run_list" : [ "recipe[amimoto]" ]
}
HHVM 版網元の場合には、以下のように書き換えます。
{
"nginx" : { "config" : { "user" : "nginx", "group" : "nginx" } },
"php" : { "config" : { "user" : "nginx", "group" : "nginx" } },
"mysql" : { "enabled" : false },
"hhvm" : { "enabled" : true },
"run_list" : [ "recipe[amimoto]" ]
}
その後、以下のコマンドを実行します。
$ sudo /opt/local/proviosion
$ service mysql stop
これで網元AMI 上で MySQL プロセスが動作しなくなりました。