たった1つのCloud SQLインスタンスで複数のWordPressを動かす

  • このエントリーをはてなブックマークに追加

ご注意

この記事は 2014年3月25日 に書かれたものです。内容が古い可能性がありますのでご注意ください。

皆様こんにちは。

前回はCloudSQLやCloud Storageを用いてWordpressを動かしてみました。
しかし、Cloud SQLやCloud Storage は有料なので WordPressサイトを1つ立ち上げるのに、比較的安いD1階層のインスタンスを使ってさえも毎月$43.8(約4,300円)のコストがかかってしまいます。

3つのサイトを公開しようものなら、毎月12,900円かかってしまい割高です。。。

そこで、たった1つのCloud SQL インスタンスを使って、複数の WordPress を動かしてみたら…ということを考えて、今回は複数のWordpressを動かし、たった1つのCloud SQL インスタンスで運用できるか実験してみることにします。

図1.1つのCloud SQL インスタンスを3つの WordPress プロジェクトで共有する

図1の様に、プロジェクトを3つ作成し project[0] の方には、Billingを有効にし、Cloud SQL instance[0] のみ立ち上げて、そこにDatabase[0]、Database[1]、Database[2]を作成します。

project[0]、project[1]、project[2] には、Wordpress を3つデプロイします。
project[0] には Database[0] を、project[1] には Database[1] を、project[1] には Database[1] を、割り当てます。

※WordpressのGAEへのデプロイ方法は、GAEでWordpressを動かすを参考にしてください。

project[0]、project[1]、project[2]のプロジェクトIDは、mywordpressongae000、mywordpressongae001、mywordpressongae002、にしました。

1.Cloud SQL インスタンスとデータベースの作成

Google APIs Console から、mywordpressongae000 を選択して、Google Cloud SQL メニューを開きます。
右上の New instance ボタンをクリックし、Name (インスタンス名)を instance、Authorized applications に3つのプロジェクトIDを入力します。

こちら、Authorized applications に入力したプロジェクトIDのプロジェクトは、mywordpressongae000 プロジェクト内の Cloud SQL インスタンスにアクセスできるようになります。(ここが重要)

作成したインスタンス上で以下のSQLを実行します。(Cloud StorageにSQLファイルをアップしてimportすると早い)

1:データベースにアクセスするユーザを作成します

ユーザ名: wp_user
パスワード: wp_password
※各データベース毎のユーザを作成するのを推奨しますが、今回は話を単純にするために1ユーザ作成してすべてのデータベースアクセス権限を与えています

2:データベースを作成します

database[0] のデータベース名: wpdatabase000
database[1] のデータベース名: wpdatabase001
database[2] のデータベース名: wpdatabase002

[php]
(1)ユーザの作成
CREATE USER ‘wp_user’ IDENTIFIED BY ‘wp_password’;

(2)3つのデータベースの作成とユーザに権限割り当て
CREATE DATABASE IF NOT EXISTS wpdatabase000;
CREATE DATABASE IF NOT EXISTS wpdatabase001;
CREATE DATABASE IF NOT EXISTS wpdatabase002;

GRANT ALL PRIVILEGES ON wpdatabase000.* TO ‘wp_user’;
GRANT ALL PRIVILEGES ON wpdatabase001.* TO ‘wp_user’;
GRANT ALL PRIVILEGES ON wpdatabase002.* TO ‘wp_user’;
[/php]

2.Wordpressの設定ファイルを編集する

各々のデータベースにアクセスできるように wordpress の wp-config.php を編集します。
DBのユーザ設定で決定した任意のデータベース名とユーザ名とパスワード、Cloud SQL インスタンス名を書きます。
mywordpressongae000 の wp-config.php
[php]
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wpdatabase000’);

/** MySQL database username */
define(‘DB_USER’, ‘wp_user’);

/** MySQL database password */
define(‘DB_PASSWORD’, ‘wp_password’)

if(isset($_SERVER[‘SERVER_SOFTWARE’]) && strpos($_SERVER[‘SERVER_SOFTWARE’],’Google App Engine’) !== false) {
define(‘DB_HOST’, ‘:/cloudsql/mywordpressgae000:instance’);//←mywordpressongae000のインスタンス
}else{
define(‘DB_HOST’, ‘localhost’);
}
[/php]
mywordpressongae001 の wp-config.php
[php]
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wpdatabase001’);

/** MySQL database username */
define(‘DB_USER’, ‘wp_user’);

/** MySQL database password */
define(‘DB_PASSWORD’, ‘wp_password’)

if(isset($_SERVER[‘SERVER_SOFTWARE’]) && strpos($_SERVER[‘SERVER_SOFTWARE’],’Google App Engine’) !== false) {
define(‘DB_HOST’, ‘:/cloudsql/mywordpressgae000:instance’);//←mywordpressongae000のインスタンス
}else{
define(‘DB_HOST’, ‘localhost’);
}
[/php]
mywordpressongae002 の wp-config.php
[php]
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wpdatabase002’);

/** MySQL database username */
define(‘DB_USER’, ‘wp_user’);

/** MySQL database password */
define(‘DB_PASSWORD’, ‘wp_password’)

if(isset($_SERVER[‘SERVER_SOFTWARE’]) && strpos($_SERVER[‘SERVER_SOFTWARE’],’Google App Engine’) !== false) {
define(‘DB_HOST’, ‘:/cloudsql/mywordpressgae000:instance’);//←mywordpressongae000のインスタンス
}else{
define(‘DB_HOST’, ‘localhost’);
}
[/php]
各プロジェクトの wp-config.php を編集して、デプロイすればそれぞれのプロジェクトからWordpressが見られます。

今回ポイントになるのは、Authorized applicationsです。
初期は、mywordpressongae000(CloudSQLインスタンスが内部にあるプロジェクト)だけが登録されていますが、
Authorized applications欄に、アクセスさせたいプロジェクトIDを登録することで他のプロジェクトからCloud SQLインスタンスへのアクセスが可能になります。
詳しくはこちらをご覧ください。

前回も触れましたが、今月に入り正式にGAEでPHPが使えるようになりました。
Limited Previewの申し込みなしで誰もがGAEでPHPを利用できるようになります。
http://googlecloudplatform.blogspot.jp/2013/10/google-app-engine-php-runtime-now-available-to-everyone.html

  • このエントリーをはてなブックマークに追加

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら