*

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

公開日: : 最終更新日:2015/11/05 投稿者: GAE , ,

皆様こんにちは。

前回は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

(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';

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

各々のデータベースにアクセスできるように wordpress の wp-config.php を編集します。
DBのユーザ設定で決定した任意のデータベース名とユーザ名とパスワード、Cloud SQL インスタンス名を書きます。
mywordpressongae000 の wp-config.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');
}

mywordpressongae001 の wp-config.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');
}

mywordpressongae002 の wp-config.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');
}

各プロジェクトの 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 App Engine Modules in Javaを試す WebToolsPlatform編

みなさんこんにちは。 2013年の7月に、Google App Engine1.8.2がリリー

記事を読む

1つのエンティティにプロパティをいくつまで作れるか(パート2)

1つのエンティティにプロパティをいくつまで作れるか 1つのエンティティにプロパティをいくつまで

記事を読む

GAEのスケーリング 前編 <仕組みについて>

今回は、こちらの公式ドキュメントをもとに、GAEのスケーリングの仕組みと最適化のやり方について紹介し

記事を読む

GAE/JからBigQueryへのStream Insert

今回はGAE/JからBigQueryへのStream Insertを試してみます。 BigQuer

記事を読む

東京リージョン内でのGAE・GCS・GCE間の通信はこのくらいだった

11月8日に Google Cloud Platform にて待ちに待った日本リージョンがリ

記事を読む

AppEngine Security Scan Tool

AppEngine Security Scan Toolが利用出来るようになりました。ついては、GA

記事を読む

GAE負荷テスト その2「無料で何PVまで表示できるのか試してみた」

その1のアップからだいぶ日が経ってしまい、いつの間にか年すら変わっていましたね。。。 " GA

記事を読む

GAE負荷テスト その1「Hello World!」

2011年11月にGAEのプレビューが終わり、早数ヶ月経ちました。 これからGAEでの開発に乗り出

記事を読む

Search API詳細解説 Part4「Search API 詳細 検索性能編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

Datastoreの仕組み 〜Consistencyについて〜

はじめに スケーラビリティと可用性が高いと言われているGoogle Cloud Datastore

記事を読む

PAGE TOP ↑