この実装、面倒なら代行します
クライアントから連絡が来ました。
「明日、テレビ局に取り上げられて全国ネットで放送されることになりまして、アクセス急増が見込まれるので、サイトが落ちないようにしてもらえますか?」
クライアントのやや興奮気味の明るい表情が目に浮かびます。でも、サイト運用者としては「うわっ来たか!」という感覚ですね。
アクセスがじわじわ上がってくれる分には期間も対策もありますが、明日10倍となると話が違います。
最初からこのときを見越して、ロードバランサーとサーバー複数台構成ですでに冗長化が済んでます楽勝です、という場合じゃない限り、突貫でも早急な対応が求められます。
【サーバーのスケールアップ】
まずこれが第一。これができればひとまずの難は逃れられそうです。AWSなら簡単。インスタンスをグレードの高いものに変更すればいきなり倍以上のスペックのサーバーが獲得できます。トラフィックが落ち着いたらすぐ元のインスタンスに戻すことを忘れずに。コストも倍ですから。
【処理の軽量化】
次に考えるのが処理の軽量化。できるだけWordPress(PHP)を動かさないようにできれば、だいぶサイトを軽くできます。特にサーバーのスケールアップができないレンタルサーバーなんかの場合はやっておきたい対策です。
と、ここまでは割と誰でも思いつく対策ですね。
今回の本題はここからです。
マルチサイトWordPressは、ひとつのWordPressでドメインの異なる複数のサイトを管理する関係で、ディレクトリを作ってHTMLファイルを置いてしまうと、管理しているすべてのサイトのディレクトリでそのHTMLファイルが表示されてしまいます。
たとえば、aaa.com と bbb.com を管理しているとすると、companyディレクトリに index.html を置いた場合、
aaa.com/company/ も bbb.com/company/ も、同じこのindex.htmlの内容が表示されてしまいます。
これじゃあダメですね。
そこで、HTMLファイルは一箇所にまとめておいて、プログラムで分岐をつくって、各ページで読み込むファイルを指定することでこれを解決します。
ここではドキュメントルートに static というディレクトリを作って、そこにHTMLをまとめておく場合について書きます。
wp-config.php の一番先頭にこのように書きます。
// トップページ静的HTML if ($_SERVER['REQUEST_URI'] === '/') { if ($_SERVER['HTTP_HOST'] === 'aaa.com') { // aaa.comサイト readfile(__DIR__ . '/static/aaa-top.html'); //aaa.comトップの静的HTML exit; } elseif ($_SERVER['HTTP_HOST'] === 'bbb.com') { // bbb.comサイト readfile(__DIR__ . '/static/bbb-top.html'); //bbb.comトップの静的HTML exit; } } // companyページ静的HTML if ($_SERVER['REQUEST_URI'] === '/company') { if ($_SERVER['HTTP_HOST'] === 'aaa.com') { // aaa.comサイト readfile(__DIR__ . '/static/aaa-company.html'); //aaa.comのcompanyページの静的HTML exit; } elseif ($_SERVER['HTTP_HOST'] === 'bbb.com') { // bbb.comサイト readfile(__DIR__ . '/static/bbb-company.html'); //bbb.comのcompanyページの静的HTML exit; } } ・・・
こんな感じで必要な分だけ書きます。
ここに記述していないページについてはこれまでどおりWordPressが処理してページを表示してくれるので、特にアクセスの多いページについてだけ書けば良いです。コードやソースがまとまってるので、落ち着いたら削除して元に戻すのも簡単です。
そうこうして、突貫ですが、なんとか対応しました。
どうか、明日サイトが落ちませんように。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。