最近BableTechのサーバーをレンタルサーバーからVPSに乗り換えたのと同時にPrime Strategyさんの「KUSANAGI」というWordPressを高速で実行するための仮想マシンイメージを導入する運びとなりました。
【Xserver】VPS vs レンタルサーバーを徹底比較【ブログ運営ならどっち?】
この時はXserver VPSというVPSにインストールしましたが、今回お仕事の方でAWSでWordPressを構築することになりまして、AWSでも「KUSANAGI for AWS」というサービスを利用すればKUSANAGIを導入することができるみたいなのでやってみました。
今回はその方法について解説していきたいと思います。
KUSANAGIとは?
冒頭でざっと紹介しましたが、KUSANAGIというのはWordPressというWebサイトコンテンツ管理システムを高速で実行するために用意された仮想マシンイメージになります。
最近ではサービスを運用するためのWebサーバー等を設置する時に物理サーバー上にインストールされたOS(ホストOS)もしくはハイパーバイザーなどの仮想化システムの上にさらに仮想的な物理サーバーを立ててその上にOSをインストールして(ゲストOS)アプリケーションを展開して運用するのが一般的ですが、その仮想的な物理サーバーのイメージごと提供してくれているのがこの「KUSANAGI」です。
つまりホストOSがすでにインストールされているようなされていたりハイパーバイザーが既に組み込まれているようなサーバーさえ用意できれば、あとはこのKUSANAGIを組み込むだけでOSやApache,Nginxなどのミドルウェアが自動的に導入され、さらにはWordPressなどのアプリケーションまでいとも簡単に導入することができるようになるのです。
詳しくは以下の記事で丁寧に説明されていますので、ぜひご覧ください。
https://www.kagoya.jp/howto/rentalserver/webtrend/kusanagi/
KUSANAGIでは、導入の手軽さに加えて、WordPressに最適化された設定がすでに適用されていて、従来よりもかなり高速にWordPressを実行することができてSEO対策にもつながるようになっているのです。
EC2とは?
そしてそのハイパーバイザーなどが組み込まれていて仮想マシンイメージを組み込むことができるようになっている物理サーバーをどうやって手に入れればいいのかというと、ここで今回は「EC2」というサービスの出番になります。
EC2は知る人ぞ知るAmazonが提供するWebサービス「AWS」の中のサービスの一つで、仮想サーバーを借りることができます。
Xserverなどのレンタルサーバーとは異なり仮想マシンごと借りることができるのでOSから自由に選んでシステムを構築できますし、もちろん管理者権限もあるので好きなアプリケーションをインストールすることができます。
また、EC2のサーバー(インスタンス)を起動する時に数多と用意されている仮想マシンイメージの中から好きに選んでそれを組み込んだ状態で起動することができ、KUSANAGIもその選択肢の中に入っています。
つまりここまでの話をまとめると、AWSのEC2を用意してKUSANAGI仮想マシンイメージでインスタンスを起動すれば一瞬でOSやNginxなどのWebサーバー、WordPressなどのアプリケーションをインストールすることができるということになります。
EC2といったらIaaSなのでOSから考えないといけず、なかなかシステム構築が難しいといったイメージがありますが、KUSANAGIを使えばいとも簡単に構築ができますね。
EC2インスタンスを起動する
さてそれでは早速構築していきましょう。
まずはEC2インスタンスを起動するとこからになります。
仮想マシンイメージ(AMI)の選択
AWSの管理コンソール画面から「EC2」を探し出して、「インスタンスを起動」を選択するとすぐに以下のような画面が表示されます。
インスタンスの名前は自分で適当に決めて、その下の仮想マシンイメージを選択するところから「その他のAMIを閲覧する」を選びましょう。
AMIというのはEC2のための仮想マシンイメージのことで、これをEC2インスタンスに与えるだけですぐに指定のミドルウェア等がインストールされた状態の仮想マシンを作り出すことができます。 マーケットを見ると本当にあらゆる環境のものが用意されていて、もはや一から自分でプレーンなOSをインストールしてサービスを構築するのが馬鹿馬鹿しくなってきますね。
そしたら上の「AWS Marketplace AMI」というタブを開きつつ、上の検索欄で「kusanagi」と入力するとすぐにKUSANAGI仮想マシンイメージにたどり着くことができます。
あとは右の「選択」というところをクリックするだけですね。
インスタンスタイプの選択
続いてインスタンスタイプを選択します。つまりはサーバーの性能を選ぶといった感じですね。KUSANAGIは単なるAMIでしかないので基本的にどのインスタンスタイプを選択しても動作するわけですが、KUSANAGIの仕組み上、割り当てられているメインメモリが4GB以上ないと高速化の恩恵をあまり受けることができないようなので、t2.medium以上のインスタンスがおすすめです。
ただ、インスタンスタイプは後からいくらでも変えられるので、試験用の方は無料利用枠の対象のt2.microで良いと思います。
その他の設定
その他、この先にキーペア等のログイン設定やセキュリティグループ、サブネットなどのネットワーク設定、ストレージ設定等がありますが、今回特別触れないことにします。
強いて言えば
- キーペアは作成しましょう
- 自分のコンピュータからのSSH通信を許可しましょう
- インターネットゲートウェイの設定をしっかりしてEC2がインターネットに接続できる状態にしましょう
- ストレージは30GB程度のGP2ボリュームくらいがあれば十分です
EC2インスタンスの設定については以下の記事などで詳しく解説してくれているのでぜひご覧ください。
https://www.cloudsolution.tokai-com.co.jp/white-paper/2021/0927-257.html
仮想マシンに接続する
本格的にシステムを構築しようとしている場合VPC、サブネットやセキュリティグループなどの設定で結構時間を使うと思いますが、試験的にやってみたいくらいの場合自動生成してくれるセキュリティグループなどにある程度甘えることができるので、インスタンスの起動までわずか5分の時間しかかからないでしょう。
そしてあとはSSHで仮想マシンにアクセスして適当に設定を行うだけです。EC2 Instance Connectというブラウザ上で手軽にマシンに接続することができる機能とかもあったりしますが、基本的に作業はSSHで行うようにしましょう。
秘密鍵のパーミッションを変える
秘密鍵を新しく作ってインスタンスを起動した場合、その場でpemなどの形式をもった秘密鍵をダウンロードさせられたと思いますが、この秘密鍵は文字通り非常に重要なものになります。
そのため、まず最初にこの秘密鍵を保護してあげないといけません。 秘密鍵自体のパーミッションを変えることでそう簡単にはアクセスできないようにするというわけですね。(これをしないと秘密鍵として認めてもらえません)
$ chmod 600 {秘密鍵ファイルのパス}
というコマンドをMacだったらzsh等、WindowsだったらPowershellなどで実行してあげれば変更することができます。
SSHでログインする
AWSコンソール画面上でインスタンスを選択肢、「インスタンスに接続」を選択して表示されたパブリックIPアドレスを覚えておきつつ、以下のようなコマンドを打ちます。
$ ssh centos@{インスタンスのパブリックIPアドレス} -i {秘密鍵ファイルのパス}
基本的にEC2インスタンスの初期のログインはrootというユーザー名で行いますが、KUSANAGIではcentosというユーザーでログインをします(変更あるかもしれません)
んでパスフレーズは必要なく、あらかじめ用意した秘密鍵をオプションで指定するだけでログインができます。
__ ____ _______ ___ _ _____ __________
/ //_/ / / / ___// | / | / / | / ____/ _/
/ ,< / / / /\__ \/ /| | / |/ / /| |/ / __ / /
/ /| / /_/ /___/ / ___ |/ /| / ___ / /_/ // /
/_/ |_\____//____/_/ |_/_/ |_/_/ |_\____/___/
Version 8.7.4-1, Powered by Prime Strategy.
[centos@ip-x-x-x-x ~]$
そしてログインに成功したら上のような「KUSANAGI」という文字が表示されるかと思います。これで無事仮想マシンにログインができたことになります。
この時点でユーザーは「centos」ですが、
$ sudo su
を実行することで管理者である「root」ユーザーに切り替えることができます。ただ、ここから登場する「kusanagi」というユーザーについては基本的にsudoが許可されていないのでkusanagiユーザーからrootユーザーへの直接的な切り替えはできません。一度centosユーザーにする必要があります。
KUSANAGIの初期設定を行う
もうこの時点でほとんど環境が構築できたも同然ですが、ここから仮想マシンを完成させるためにいくつか初期設定を行わないといけません。といっても本当に簡単です。
$ yum upgrade
rootユーザーで上のようにしてOSのアップグレードを行った後、インスタンスを再起動しつつ
$ kusanagi init
というコマンドをrootユーザーで実行して、KUSANAGIの初期設定を行っていきます。
ここめっちゃ時間かかります。ただ時間がかかるだけで手間はかかりません。
そして順番に
- タイムゾーン:Asia/Tokyoで良いでしょう
- 言語:日本語で良いでしょう
- キーボードレイアウト:各々(普通は日本語)
- kusanagiのパスワード:忘れないように
- パスフレーズ:各々(なくても良いかも)
- Webサーバー:Nginxがおすすめ
- PHP:バージョン8がおすすめ
- データベース:MariaDBがおすすめ
- データベースrootユーザーのパスワード:忘れないように
そしたらもう初期設定は完了です。
WordPressを構築する
もうあなたのための仮想マシンが完成したので、ここにWordPressをインストールして、いよいよWebサイトを作ります。
KUSANAGIでは新しくWordPressを構築することを「プロビジョニング」と言います。
とりあえず、rootユーザに切り替えて
$ kusanagi provision {お好きな名前}
上のようなコマンドを実行してプロビジョニングしていきます。名前はプロジェクト名みたいなもので、今回は「test_wordpress」という名前にしました。
そしてまたしても設定していきます。
- 言語:jaで良いでしょう
- FQDN:Webサイトのドメイン(ホスト名、今回はグローバルIPアドレスをそのまま)
- Let’s Encrypt:(今回は触れないので2回エンター)
- データベース名:任意(今回はtest_wp_db)
- データベースユーザー名:任意(今回はtest_user)
- データベースユーザーパスワード:忘れないように
これでもうWordPressを構築することができました!
そしてパブリックIPアドレスに直接アクセスすることで上のようなWordPressの初期設定画面にアクセスすることができました。
WordPressの初期設定
もはやここからは今回触れなくても良い気がしますが、ここからはWordPressの初期設定をしていきます。
この画面では先ほど設定した通りのことを入力するだけです。 もしもデータベースをEC2内に構築するのではなくRDSなどの外部サービス上で構築したい場合は、このタイミングでデータベース名、ユーザー名、パスワード、ホスト名をそれ用に変えましょう。(あとでもwp-config.phpを書き換えることで変更できます)
そしたらあとはサイト自体の設定をするだけです。ここからKUSANAGIのことを特別考えなくても大丈夫です。普通のWordPressです。
強いて言えば、最初からKUSANAGI用のプラグインのようなものが導入されていて、WordPressの管理画面の左メニューからアクセスすることができます。
ここからキャッシュの設定等を行うことができたりしますので、ぜひご活用ください。
あと本格的に運用するためにやることとしては
- Elastic IPの取得(グローバルIPアドレスの固定)
- ドメインの取得、DNS設定
- wp-uploads内のメディアファイル等をS3などの大容量ストレージにアップロードするような設定を行う
- データベースをEC2内ではなくAWSのRDS上に構築する
などの手続きが必要でしょう。
ただ、最後二つに関してはKUSANAGI仮想マシン外までシステムを広げる形になるので、KUSANAGIの高速化の恩恵をあまり受けられなくなるかもしれませんね。。。 それを考えるとAWSを使った大規模なシステムを構築する上でKUSANAGIが役に立つかといったら… 微妙な気もしてきますが、とりあえず構築は簡単なので便利です。
BableTechBlogでは今後もWordPressやKUSANAGI、AWSに関する情報を発信していきますのでよろしくお願いします。