*

たった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

関連記事

Search API詳細解説 Part3「Search APIの使い方 検索編」

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

記事を読む

GAEでよくあるエラーの発生原因と対策1

GAE上で動くWebアプリケーションに特有の例外について、弊社での運用の事例からいくつか特徴的なもの

記事を読む

Google App Engine Modules in Javaを試す WebToolsPlatform編

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

記事を読む

Datastoreモデル変更の影響調査

GoogleAppEngine(以下GAEと呼称)に限らず、開発を行なっていると『テーブルの構造を変

記事を読む

PaaS最前線!たったの15分でできるGAE/GO入門!

はじめに 2015年7月ついにGoogle App EngineのGO言語正式サポートが決定しまし

記事を読む

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する

GAEでMemcacheを利用した経験はありますでしょうか? MemcacheとはGAEで利用

記事を読む

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

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

記事を読む

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

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

記事を読む

Cloud Loggingの利用方法

はじめに 本記事はGoogle Cloud Platformの公式ページで公開されている「Goog

記事を読む

GAE/JからBigQueryへのStream Insert

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

記事を読む

PAGE TOP ↑