VOLTECHNO(ボルテクノ)

ガジェットとモノづくりのニッチな情報を伝えるメディア

2020年7月29日

超高速WordPress仮想マシン『KUSANAGI』を構成した手順とまとめ

超高速WordPress仮想マシン『KUSANAGI』を構成した手順とまとめ

超高速WordPress仮想マシン『KUSANAGI』とは

超高速WordPress仮想マシン『KUSANAGI』とは、プライム・ストラテジー株式会社が開発・構成した、WordPressを始めとした各種CMSの高速動作を実現する仮想マシンおよびそのイメージです。

KUSANAGIはOS・Webサーバ・DBサーバ・アプリケーションサーバと言ったWordPressに必要な要素を1つのイメージにまとめ、簡単に運用できるように構成された仮想マシンです。

構築が簡単なだけではなく、KUSANAGIはWordPressが超高速に動作するよう最適化されており、実行時間3ミリ秒台、秒間1000リクエストをページキャッシュ非使用で実現する世界最高速クラスのWordPress実行環境です。

前々から超高速で動作するKUSANAGIという仮想マシンの存在はリリース当時から知っていましたが、当時はMicrosoft AzureなどのパブリッククラウドでしかKUSANAGIの提供をしておらず、当時はサーバの負荷も特に問題ではありませんでした。

その後、サイト構成の複雑化やPV増加の影響を受けてAWS CloudFrontなどのサイト高速化対応を実施してきましたが、CDNではサーバ応答速度を改善することができず、根本的な解決のためにはサーバ自体の高速化が必要になりました。

KUSANAGIが使えるVPSサーバを選定

KUSANAGIを導入するにあたり、使用するVPSサービスは下記の2点を満たしている必要があります。

  • KUSANAGIの仮想イメージが提供されていること
  • VPSのスケールアップが可能なこと

KUSANAGIの推奨環境はメモリ4GB以上となっていますが、4GBのメモリを提供するVPSは月額4,000円~5,000円となるため現在のアクセス数からは現実的な選択肢ではありません。そのため、アクセス数が増えたらスケールアップを行いメモリを増やす方法を採用することにします。

この2点の条件を満たしているVPSサービスは「さくらインターネットのVPS」「ConoHa」「EX-CLOUD」「CPI」などがあります。今まで「さくらのレンタルサーバ」を使用していたため、今回はその流れで「さくらインターネットのVPS」を使用することにしました。


参考:KUSANAGIがご利用いただけるパブリッククラウド|Prime Strategy

KUSANAGI初期設定・プロビジョニング

KUSANAGIは導入するまでのドキュメントが充実しているため、特にトラブルを起こすことなくWordPressを構成することができました。

ただ、プロビジョニング時のプロファイル名に “.”(ドット)が入っているとシェルスクリプトの動作が怪しくなるようで、プロファイル名にドットを使いたい場合は”_”(アンダーバー)にした方がよさそうです。

参考:KUSANAGI for さくらのVPS|Prime Strategy
参考:ドキュメント|Prime Strategy
参考:KUSANAGI for さくらのVPSの設定方法|さくらインターネットのVPS設定マニュアル
参考:5分で作るさくらのVPSでKUSANAGI8環境|SlideShare

WordPress移転作業

WordPressの移転作業ですが、元々バックアッププラグインの「UpdraftPlus」を使用しているため、WordPress環境を新環境で復元させることで移転を完了させる方法を採用します。作業手順としては下記のようになります。

  1. オンラインストレージ上のバックアップデータをダウンロード
  2. KUSANAGIコンソール上でプロビジョニングを行い新しいWordPressを構成
  3. DNSを変更しvoltechno.comをKUSANAGIへ変更
  4. WordPressの初期設定とUpdraftPlusのプラグインの有効化
  5. UpdraftPlusのバックアップフォルダへバックアップデータのアップロード
  6. UpdraftPlusをからバックアップデータを復元
  7. SSLの301リダイレクト、リンク切れの確認を行い問題がなければ完了。

KUSANAGIを導入した結果

KUSANAGI導入前後で、サーバの応答速度は6倍ほど早くなりました。Google Pagespeedでもサーバ応答時間についてのアドバイスは消え改善されていることがわかります。

KUSANAGI導入前のPagespeedスコア。サーバ応答速度が特に悪く、サーバが応答するまでの待ち時間だけでWebページの3秒ルールを超えていた。
KUSANAGI導入後のPagespeedスコア。サーバ応答時間の問題は完全に解決し、スコアは10点以上改善している。モバイルのスコアは20点近く改善した。

ちなみに、移転前と移転後のサーバ環境の違いは下記のようになります。

  • 移転前
    • さくらのレンタルサーバ(スタンダード)[Apache, PHP7.1, MySQL]+ AWS CloudFront
  • 移転後
    • さくらのVPS [1G](KUSANAGI)[Nginx, HHVM, MariaDB]

WordPress移転作業前に行ったこと

ここからはKUSANAGIの公式ドキュメントに記載されていない作業の説明になります。WordPress移転の作業手順としては2と3の間に行った作業となります。

当サイトのURLを見て頂ければわかるように、VOLTECHNOではサブディレクトリによるWordPress運用を行っています(なんでサブディレクトリに入れたんですかね?)。KUSANAGIは標準状態だとDocumentRootフォルダ直下にセットアップされるため、これをサブディレクトリでも正常に動作するように適切な設定を加える必要があります。

functions.shのサブディレクトリ対応

KUSANAGIの各種設定はシェルスクリプトによって制御されるため、サブディレクトリによる運用を行う場合、シェルスクリプトにもサブディレクトリの場所を記載する必要があります。

この設定は行わなくてもWordPressは動作しますが、KUSANAGIの高速化機能の一部であるbcacheが使用できなくなります。そのため”/usr/lib/kusanagi/lib/functions.sh”の120目あたりの項目に適切なサブディレクトリの名前を指定します。

  • /usr/lib/kusanagi/lib/functions.sh 編集前

  • /usr/lib/kusanagi/lib/functions.sh 編集後

nginx.confを編集してサブディレクトリのWordPressパーマリンクに対応

サブディレクトリでもWordPressのパーマリンクが正常に動作するように、nginx.confにlocationコンテキストを追記する必要があります。この設定を行わないとWordPressのパーマリンクが機能せずに404エラーが返ってきます。

“/etc/nginx/conf.d/”フォルダ内にある、プロビジョニング時に指定したプロファイル名のconfファイルを編集します。

  • httpの場合
    • /etc/nginx/conf.d/プロファイル名_http.conf
  • httpsの場合(プロビジョニング時にLet’s Encryptを有効化)
    • /etc/nginx/conf.d/プロファイル名_ssl.conf

rootによるSSHログインを無効化

KUSANAGIの初期状態ではrootによるSSHログインが可能になっています、これはセキュリティの観点好ましくないためrootログインを無効にします。

参考:rootでのSSHログインを禁止 – SSHサーバーの設定|Linux入門

また、プロビジョニングなどのkusanagiコマンドではroot権限が必要になるので、kusanagiユーザをrootユーザに昇格できるようにしておきます。

参考:KUSANAGIの作業ユーザkusanagiにログインするには|みからぼ

UpdraftPlusプラグインの有効化と権限の変更

今回、WordPressの移転作業にはUpdraftPlusというバックアッププラグインを使用しています。

バックアッププラグインはインストール時にディレクトリを作成しますが、KUSANAGIはセキュリティ対策としてApacheやNginxから書き込みができないユーザー権限になっており、このようなディレクトリを生成する一部のプラグインは正常に動作しません。

そのためプラグインによっては生成されたディレクトリのパーミッションを変更する必要があります。

UpdraftPlusを正常動作させるため、updraftフォルダのパーミッションを一時的に777に変更する。パーミッションを変更する権限がない場合、コンソール上から所有者をkusanagiに変更する。

FTPパスワード入力の省略

プラグインのインストール時などではFTPの認証が必要になる。

KUSANAGIはセキュリティ強化のため、プラグインのインストールや更新の際にはFTPのパスワードが必要になります。

セキュリティ上はパスワードを求められる毎に認証を行った方がいいのですが、作業性を優先する場合ではwp-config.phpに自動的に認証を行うようパスワードを記載しておきます。

一通りの初期設定が終了したらFTP_PASSの部分をコメントアウトして戻しておきましょう。

削除したプラグイン・追加したプラグイン

【削除】EWWW Image Optimizer

KUSANAGIにはEWWWに相当する機能が標準搭載されているため不要と判断。

【追加】WP Mail SMTP

サーバの変更によってContact Form 7が動作しなくなったため導入。

KUSANAGI導入による不具合

KUSANAGIの導入により、サーバ応答速度の高速化は達成できましたが、KUSANAGIのキャッシュ機能やテーマの機能などの一部の機能が動作しなくなりました。

現状、大きな問題にはなっていませんが、後々対応する必要があるものを忘備録として記載しておきます。

KUSANAGI bcacheが有効にならない

WordPressの移転作業後に発生した不具合です。

“kusanagi bcache on”コマンドでは有効にはなっているようですが、WordPressのKUSANGIプラグイン上では有効になっていないようです。プラグインやテーマの競合と考えられますが、現在まで原因の判明には至っていません。

追記:解決しました

wp-config.phpの”define(‘WP_CACHE’, true);”がコメントアウトされていたためでした。移転作業中に書き換わったものと推定しています。

DigiPressテーマのビジュアル設定が動作しない

WordPress管理画面上でDigiPressのビジュアル設定を変更するとパーミッションエラーが発生する。「正常に更新しました。」とは表示され設定画面上は反映されるが、サイト上のcssには反映されない。

現在、DigiPress製のテーマ MAGJAMを使用していますが、WordPress管理画面上のビジュアル設定の項目が反映されない不具合が発生しています。

パーミッションエラーの警告が出ているファイルのパーミッションを変更してもこの不具合は解消されないため、配色などを変更する場合は直接CSSファイルを変更しなくてはいけません。

警告が出ているCSSファイル以外の設定は反映されるため、とりあえずは現状維持のまま様子を見てみたいと思います。

追記:解決しました
KUSANAGIでDigiPressの設定が反映されない時の対処方法|Room8

Return Top