WordPress4.0日本語をGoogle App Engine for PHPにインストールする概要
2014/11/22
Google App EngineでPHPが動作するようになりました。
非常に安定して動作するWordPressのパッケージを見つけましたのでご紹介しておきます。
WordPressをインストールしてみたという記事が公開されていて、
そうした先人たちの情報を元にして、
WordPressのインストールを行ってみましたが、なかなか苦労しました。
何せ、書いてある通りのapp.yamlでは動かない。
自分でいろいろ書き換えてみるも思った通りにはいかない経験はされていませんか?
色んなサイトの記事を拝見して、ここまで書いてあれば簡単にいけそう!
そう思って始めた検証でしたが、思いのほか苦労しました。
Google App Engine for PHPが公開されたのが2014/05頃のようで、
おそらく少しずつ仕様が変わっていたりでうまくいかないんでしょうかね。
結果としてはいろいろ苦労や癖はあるのですが、
問題なくホストすることができましたので今後は実際の公開サイトで利用しようと思っています。
WordPressをGoogle App Engine for PHPにインストール
WordPressと言えば普通WordPress.orgからダウンロードして、
ダウンロードしたファイルをFTPアップロードするのが一般的ですが、
Google App Engine for PHP向けのWordPressとして必要なファイルがセットされたパッケージが、
GitHub上に公開されています。
一連のWordPress導入手順については以下でまとめています。
Google App Engineを利用したことがある、またバケットの操作になれている、
CloudSQLも分かっている人には1つの投稿で説明ができるとは思いますが、
こうしたHowToを読まれる方には1つの記事では伝えきれませんでした。
Quick Start WordPress for Google App Engine
既にGoogle App Engine for PHPにWordPressをインストールしたことがあって、
うまく動かないといったことに直面している場合には、
以下サイトからダウンロードしたWordPressをダウンロードして試すといいかもしれません。
おそらくそうした方はうんぬんの説明は必要ないのでしょうから。
GitHub上に公開されているGoogle App Engine for PHP向けのWordPressは、
以下からダウンロードが行えます。
Quick Start WordPress for Google App Engine by GoogleCloudPlatform
アクセスしたら[Download for Windows]をクリックすることで、
Google App Engine独自のapp.yaml、php.ini、cron.yamlなどが用意されています。
また、wp-config.phpもローカル環境とのサーバー切り替え処理が組み込まれています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
<?php /** * The base configurations of the WordPress. * * This file has the following configurations: MySQL settings, Table Prefix, * Secret Keys, WordPress Language, and ABSPATH. You can find more information * by visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing * wp-config.php} Codex page. You can get the MySQL settings from your web host. * * This file is used by the wp-config.php creation script during the * installation. You don't have to use the web site, you can just copy this file * to "wp-config.php" and fill in the values. * * @package WordPress */ // Required for batcache use define('WP_CACHE', true); // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpress_db'); /** MySQL database username */ define('DB_USER', 'root'); if (isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'],'Google App Engine') !== false) { /** Live environment Cloud SQL login and SITE_URL info */ define('DB_HOST', ':/cloudsql/your-project-id:wordpress'); define('DB_USER', 'root'); define('DB_PASSWORD', ''); } else { /** Local environment MySQL login info */ define('DB_HOST', '127.0.0.1'); define('DB_USER', 'root'); define('DB_PASSWORD', 'password'); } // Determine HTTP or HTTPS, then set WP_SITEURL and WP_HOME if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) { $protocol_to_use = 'https://'; } else { $protocol_to_use = 'http://'; } define( 'WP_SITEURL', $protocol_to_use . $_SERVER['HTTP_HOST']); define( 'WP_HOME', $protocol_to_use . $_SERVER['HTTP_HOST']); /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', ''); /**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here'); /**#@-*/ /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each a unique * prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wp_'; /** * WordPress Localized Language, defaults to English. * * Change this to localize WordPress. A corresponding MO file for the chosen * language must be installed to wp-content/languages. For example, install * de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German * language support. */ define('WPLANG', ''); /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. */ define('WP_DEBUG', false); /* That's all, stop editing! Happy blogging. */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/wordpress/'); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php'); // configures batcache $batcache = [ 'seconds'=>0, 'max_age'=>30*60, // 30 minutes 'debug'=>false ]; |
これによって各設定ファイルのアプリケーション名や
接続情報を変更するだけで簡単にWordPressの導入が可能になります。
実際の動作環境
WordPressをGoogle App Engine for PHP上で動かしたいと思っている人は、
新しいものを試したいという人は除いて、
おそらく今利用しているサーバーの負荷が処理できないといったような、
何かしらの問題を抱えていることと思います。
私自身もその一人です。
そんな場合、やりたいことはインストールしたいことではなくて、
どのくらいのスピードで使えるのか?といった部分ではないでしょうか。
月額の課金が発生しているのでいつまで公開できるかわかりませんが、
以下で実際の環境での初期状態WordPressを確認することができます。
こちらではApacheベンチの結果もご紹介しています。
劇的に早いという印象ではありませんし、
有料のレンタルサーバーなどと遜色なく利用ができるといった感じです。
むしろ1つ1つの速度の違いというよりも、
Google App Engineを利用する目的は急な負荷上昇などに対して、
インスタンスを増やすことで対応することができるというスケール拡張の容易性などがあります。
その為、Googleプラットフォーム上でホストするという安定性を重視するものだと私は思います。
ちなみにGoogle App Engine for PHPのphpinfo()情報はGoogleさんが公開してくれています。
phpinfo() @Google App Engine for PHP
Google App Engine for PHP利用上の注意点
Google App Engine for PHPでWordPressをホストする上での注意点を挙げておきます。
MySQLはCloudSQLを利用するしかない
外部サーバーも利用可能して接続を行うことも技術的には可能であると思います。
しかし、Google App Engineでは同じドメインでサイトを表示した際に、
表示するたびにIPアドレスが変化します。
Google App EngineのIPアドレスは以下の範囲で動的に割り当てられています。
Google ウェブマスター向け公式ブログ: App Engine の利用する IP 範囲変更のお知らせ
Google App Engine General Questions – Google App Engine — Google Developers (抜粋引用)
From this example, we see that both the
8.34.208.0/20
and8.35.192.0/21
IP ranges can be used for App Engine traffic.(Google翻訳)この例からは、両方がわかり
8.34.208.0/20
と8.35.192.0/21
IP範囲はApp Engineのトラフィックのために使用することができる。
実際にnslookupを実行してみると以下のように返ってきます。
“v=spf1 ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:108.59.80.0/20 ip4:108.170.192.0/20 ip4:108.170.208.0/21 ip4:108.170.216.0/22 ip4:108.170.220.0/23 ip4:108.170.222.0/24 ?all”
一般的にレンタルサーバーなどのサービスでMySQLを外部公開する際には、
許可IPアドレスの指定が必要になります。
MySQLに対してアクセスが可能なIPアドレスやドメイン名エイリアスを登録して、
その登録されているアクセス元からのみ許可することになります。
こうした範囲指定で許可をすることを認めているサービスはあまり見かけませんので、
実質的に外部のMySQLサーバーをデータ元として利用することが困難になります。
結果としてCloudSQLを利用するしかない事から、
無料枠のないCloudSQLを利用した課金が月額または従量制で必要になります。
CloudSQLは外部から操作可能
ちなみにCloudSQL自体には外部からMySQLのroot権限でアクセスして、
データの操作を行うことができます。
ですので、MySQL Workbenchから接続してデータ操作を行うことさえできます。
サイト上(バケット)に対するファイル操作
WordPressに限らず表示する画像コンテンツなどをアップロードして、
サイトを運用していくとファイルがどんどん増えていきます。
Google App EngineではFTPアクセスによるファイル操作が一切行えません。
アップロードしたファイルはすべてバケットと呼ばれるファイル領域に保存されます。
またCloudSQLに対してインポートするSQLファイルなども、
一旦はバケット上にアップロードしたうえで実行する流れになります。
※SQLの直接実行は「Google APIs Console」から実行可能
ファイル操作はバケット上で行うのが流儀です。
その為、バケットに対するファイル操作を行う為のプラグインの導入が必須になります。
GitHubからダウンロードしたWordPressには元からこのプラグインが含まれています。
サイトの引っ越し時にファイルの抜出が困難
サイトの引っ越しといったようなファイルをごっそりと移動するような場合には、
サーバー上のファイルの抜出が非常に困難になります。
とは言え、レンタルサーバからGoogle App Engineに移動するというのが、
既に他の選択肢がなく移動しているでしょうから、
そうそう移動することもないかもしれませんが。
引っ越しするというとConpute Engineに対して移動して、
自身でVMを管理してサイトを公開するようなケースでしょうか、
Amazonに移行するケースもあるかもしれませんね。
そうした将来にサイトを引っ越すとなった時にこのバケット内のファイルを、
どうするかという問題が付きまといます。
キャッシュによって更新されないことも
WordPressのキャッシュプラグインなどでも同じことが言えると思いますが、
Google App Engineでは特に何もすることなくキャッシュが有効になっています。
その為、キャッシュを利用している意識がなくてもキャッシュが有効になっており、
サイトをデプロイした結果が反映されないということにも出会うことと思います。
キャッシュは一括して削除することでしかできませんので、
反映されない場合にはキャッシュを解放することになります。
キャッシュの解放手順については以下でご紹介しています。
頻繁にキャッシュを開放することはそもそもキャッシュされていることによるメリットを、
一旦リセットしてしまうことになり、あまり頻繁に行いたいものではありません。
キャッシュによって使用帯域を節約できているものを、
敢えて再度データを取得させる結果にもなりますので、
従量制課金であるこうしたサービスでは実行することに抵抗がある機能です。
ページスピードとこうした効率化は表裏一体で、
キャッシュされているページが提供されているという意識でサイトを運営しておかないと、
変更が反映されないと慌ててしまうことになります。
さいごに
このように一定の流儀と癖はありますが、
個人的にはこうしたデータストレージ周りの不便さを覚悟することができるのであれば、
Google App Engine上でWordPressを利用することのメリットは多くあると思います。
今後は実際に運用するサイトを Google App Engine上で公開していきたいと思っています。
参考
今回、WordPressをGoogle App Engine for PHPにインストールするに当たって、
以下のサイトにてGoogle App Engineの基本的な流儀などを学ばせて頂きました。
書いてあるまんまで私にはうまく導入することができませんでしたが、
大変助かりました。ありがとうございます。
Blog @vierjp : 29.Google App Engine for PHPでWordPressを動かしてみた
皆さんいろいろと苦労されているようですね。
GoogleAppEngine(GAE)でWordPressを動かす手順 – いろいろ試行錯誤
takahara氏にはいつもお世話になっています。
Google App Engine (GAE)でPHPもMySqlを使えるようになったことでWrodPressが使えるよw …
Google™はGoogle Inc. の登録商標(第4478963号及び第4906016号)です。
GoogleロゴはGoogle Inc. の国際登録商標です。
国際登録番号:881006及び926052及び1086299及び1091990及び1145934
関連記事
-
-
wordpressの投稿で「続きを読む(read more)」を表示する方法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
WordPressの独自ショートコード埋め込みにJavaScript外部ファイルを指定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
08.カルーセル-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
WordPress4.0以降のサイトの言語変更による日本語化
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
Jetpack by WordPress.comはユーザーごとに連携が必要
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
Digg™への共有をJetpack by WordPress.comで行う動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
印刷をJetpack by WordPress.comで行う動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
12.一括検索-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
11.VaultPress™-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
wordpressがエラーとなった場合に最初に確認すべきこと
Google or AdMax Promotion(it) 禁断の機能がau公式 …