*

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

関連記事

AppEngineでTwilioを試してみた(応用編)

AppEngineでTwilioを試してみた(基本編) AppEngineでTwilioを試し

記事を読む

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

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

記事を読む

GAEのスケーリング 後編 <最適化の実践>

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

記事を読む

GCEにPuttyから簡単接続する

年末ではありますが、先日ちょっとGCE(Google Compute Engine)を触る機会がまた

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

Search API詳細解説 Part1「Search API 概要説明」

Google App Engine(以降GAE)に全文検索サービスであるSearch APIが正式リ

記事を読む

AppEngine Security Scan Tool

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

記事を読む

GCP愛を語る

RGCP(GCP好き以外お断り) 技術的な話ばかりの中のAdventCalendarですが、本

記事を読む

PAGE TOP ↑