*

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

[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

関連記事

GAEでWordPressを動かす

これは2014年時点での記事になります。 2015年版の記事がありますのでそちらをご参照下さい。

記事を読む

GCEにPuttyから簡単接続する

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

記事を読む

Google App EngineからのSpreadSheetの権限変更について

Google App Engine(以下GAE)からGoogleDocsのSpreadSheetを操

記事を読む

Search APIの「Faceted Search」を使ってみた

Search API詳細解説シリーズは完結しましたが、2015年2月19日のAppEngine SD

記事を読む

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

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

記事を読む

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

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

記事を読む

PageSpeedの動作を検証

皆さん、こんにちは。 突然ですが、皆さんはPageSpeedというサービスをご存知でしょうか?

記事を読む

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

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

記事を読む

Search API詳細解説 Part5「Search API 詳細 反映速度編」

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

記事を読む

Cloud Loggingの利用方法

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

記事を読む

PAGE TOP ↑