NTTのIndigo VPSにKUSANAGI RoD(Docker)をインストールして高速WordPress環境を激安で構築する方法

Docker

Indigo VPSは圧倒的に激安

Indigo VPSのメモリ容量別の月額費用です。

プラン [1GB] [2GB]  [4GB]  [8GB] 
価格(月額) 349円
0.55円/時間
699円
1.1円/時間
1399円
2.2円/時間
2798円
4.4円/時間
メモリ 1GB 2GB 4GB 8GB
CPU 1コア 2コア 4コア 6コア
SSD 20GB 40GB 80GB 160GB
初期費用 無し 無し 無し 無し
最低利用期間 無し 無し 無し 無し

メモリ1GBなら月額たったの349円で運用できます。

日本に存在するVPSの中で圧倒的に激安です。

「ConoHa VPS」 や「さくらVPS」と比較した表ものせておきます。3社が最もスペックが近いメモリ4GBのプランでで比較してみます。

  Indigo ConoHa さくら
価格(月額) 1399円
2.2円/時間
3762円
5.28円/時間
3520円
メモリ 4GB 4GB 4GB
CPU 4コア 4コア 4コア
SSD 80GB 50GB 200GB
初期費用 無し 無し 無し
最低利用期間 無し 無し 無し

Indigo VPSの月額費用は、ConoHa VPS の37%、さくらのVPS の39%です。

WebARENA Indigo VPS 激安です!

Indigo VPSでWordPressサイトを高速運用したい

WordPressサイトをVPSで運用したい場合、KUSANAGI(くさなぎ)がオススメです。

KUSANAGIは高速チューニングがパキパキにされたWordPress実行環境です。

KUSANAGIを使ってWordPressサイトを作成すれば、細かいチューニング・設定を行う必要がないにもかかわらず、プロ並みの高速レスポンスを実現します。

高速レスポンスとは、Webサイトにアクセスした時のスピードが速いという意味です。

アクセスしているのに、なかなかページが表示されないということがなくなります。

Webページの表示速度はかなり重要で、遅いとユーザーが離脱して、他のサイトに行ってしまいます。

自分の行動を振り返ってみても表示の遅いサイトはやめて違うサイトに行くことってよくありますよね。

というわけで、WordPressサイトを立ち上げるならKUSANAGIをオススメしたいのですが、一つだけ問題があります。

KUSANAGIが使えないVPSではどうする?

どのVPSでもKUSANAGIが使えるというわけではありません。

KUSANAGIがインストールされたイメージが使えるConoHa VPS さくらのVPS であればすぐにKUSANAGIを使用することができます。

しかし、 Indigo VPSなどのVPSではKUSANAGIが初期インストールされたOSを使用することができません。

KUSANAGIを開発しているプライムストラテジー社とVPS側での契約がいるのだと思いますが、残念ながら、 Indigo VPSはプライムストラテジー社と提携していません。

というわけで、Indigo VPSでは超簡単にはKUSANAGIを使うことはできません。

超簡単にKUSANAGIを利用したい人にはConoHa VPS さくらのVPS をオススメします。

 Indigo VPS でKUSANAGIを使用できる方法が一つだけあります。

Docker(ドッカー)を使用することです。

KUSANAGIのDockerイメージ(仮想実行環境みたいな物)が配布されています。

ですので、Dockerを使って、 Indigo VPS上にKUSANAGIを立ち上げて、使用するということができます。

ここでは Indigo VPS上でDockerを使ってKUSANAGIを立ち上げる方法を紹介します。

ssh でIndigoインスタンスにログインする

自分のPCのターミナルからログインします。

.sshという隠しフォルダをホーム(ターミナルを立ち上げた直後にいるフォルダ)フォルダ内に作成します。(フォルダ名の最初に.をつけると隠しフォルダになる。隠しフォルダとはlsでは見れないフォルダのこと。)

その中に

  • configというファイル
  • indigoというフォルダ内にindigo VPSへ接続するための秘密鍵ファイルprivate_key.txt

を作成します(known_hostsはSSH接続すると勝手に作成されます)。

.ssh
├── config ⇦ SSH接続用の設定ファイル
├── indigo
│   └── private_key.txt ⇦ ダウンロードされたindigoの秘密鍵
└── known_hosts

configファイルには以下のように書きます。

Host indigo
HostName [Indigo VPS インスタンスのIPアドレス]
Port 22
User centos
IdentityFile ~/.ssh/indigo/private_key.txt

ここまで設定できれば、コマンドラインで、

ssh indigo

とするとindigo VPSのインスタンスに接続することができます。

configファイル内でHost indigoとしているのでssh indigoとしてログインできます。Host [好きな名前]とするとssh [好きな名前]でログインできます。

接続するとターミナルに[centos@i-10100000019172 ~]$のように表示されます。

これでロングインできました。

ルートのパスワードを設定します。

$ sudo passwd root
ユーザー root のパスワードを変更。
新しいパスワード:
$ su
*設定したパスワードでroot(スーパーユーザーとしてログイン)としてログインする

root(スーパーユーザー)として操作していきます。

VPSのOSをアップデートする

まず、環境をアップデートします。インスタンスを立ち上げた時点では、OSのアップデートがされていません。最新の状態にアップデートします。

yum update

OSのアップデートなので、多少時間がかかります。

スワップ領域を設定して、メモリ不足に対応する!

VPSで最も問題になってくるのが、メモリ不足です。

メモリ容量を1GBから2GB、4GBと増量すると、VPSのレンタル料も高くなってしまいます。

できるなら1GBでしのぎたいわけですが、1GBではメモリ容量が足りない状況が起こり得ます。そんな時にスワップ領域を設定しておけば、、、、しのげます

スワップ領域というのはメモリで処理できない量をハードディスクやSSDなどのストレージで処理してしまいましょうということです。

『メモリもストレージもまぁ、記憶するところなので、同じように使えますよね。』

ということです。

昔はハードディスクしかなかったので、ハードディスクはかなり遅かったのですが、最近ではストレージにSSDが使われることが多くなったので、かなりスピードは改善しています。

それでもCPU直結のメモリ(RAM)の方が速いことに変わりませんが。

 Indigo VPSストレージがSSDなので、この点でも申し分ないです。結構速いですよ。

というわけで1Gバイトのスワップ領域を確保しておきます。

swapfileという空のファイルを1GB分作成します。

メインメモリで処理しきれなかった分はここで処理することになります。

dd if=/dev/zero of=/swapfile bs=1M count=1024

万一ユーザーがスワップ領域に書き込んじゃうとまずいので、swapfileはユーザーが書き込めないように権限を設定します。

chmod 600 /swapfile

mkswapでswapfileファイルをスワップ領域に設定します。

mkswap /swapfile

swaponでスワップ領域として使い始めます。

swapon /swapfile

再起動した時に自動的にswaponされるようにfstabに設定(マウント)しておきます。

これで再起動した時にすぐにスワップ領域が利用できている状態になります。

sed -i '$ a /swapfile swap swap defaults 0 0' /etc/fstab

実際にfreeコマンドでメモリの状況を確認してみます。

[centos@i-10100000029172 ~]$ free -h
total used free shared buff/cache available
Mem: 991M 371M 100M 46M 519M 422M
Swap: 1.0G 34M 989M

freeコマンドでメモリの使用状況をみたときに、こんな感じでSwapなる項目が追加されていればOKです。

Dockerをインストールして設定する

docker.comからdockerをインストールするためのスクリプトをダウンロードして実行します。

curl -fsSL https://get.docker.com/ | sh

curl のオプション

-f: 失敗した時に出力を出さない。

-s: 進捗の表示をしない。別名 --silent

-sS: 進捗は表示しないが、エラーは表示する。

-L: リダイレクトされている場合、リダイレクト先にもリクエストする。

systemctlでdockerを起動します。

systemctl start docker

再起動した時に自動的にdockerが起動するようにenableに設定しておきます。

systemctl enable docker

dockerと一緒に使うdocker-composeをインストールします。

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

uname -s : カーネルの名前を表示する。例えば、"Linux"など。

uname -m : コンピュータのマシンタイプを表示する。例えば、"x86_64"など

docker-composeに実行権限を加える(+x)。

chmod +x /usr/local/bin/docker-compose

あらかじめdockerで使用するネットワークを作成しておきます。

docker network create --driver bridge common_link

NGINXのdockerコンテナを起動する

/home/wpというディレクトリを作成しここにKUSANAGIをインストール&起動していく

mkdir /home/wp
cd /home/wp

/home/wp/nginx-proxyにNGINXサーバーの設定ファイルを置く

mkdir nginx-proxy
cd nginx-proxy

wgetvimyumでインストールしておく

yum install wget
yum install vim

wgetでnginxプロキシサーバー用のdocker-compose設定ファイル(docker-compose.yml)をダウンロードする

wget https://support.kagoya.jp/cloud/docker/nginx-proxy/docker-compose.yml
vim nginx.conf

nginx.confを作成しNGINXサーバー用の設定を書き込みます。

client_max_body_size 64m;

docker-composeを使用して、nginxのコンテナを起動します。

/usr/local/bin/docker-compose -f /home/wp/nginx-proxy/docker-compose.yml up -d

KUSANAGIのdockerコンテナを起動する

cd /home/wp
mkdir applingo
cd applingo
wget https://support.kagoya.jp/cloud/docker/kusanagi/docker-compose.yml
vim docker-compose.yml

/home/wp/applingoというディレクトリ(任意の名前)を作成してその中にkagoya VPSが作成してメンテナンスしてくれているdocker-compose.ymlをダウンロードしてきます。

vimdocker-compose.ymlを編集します。

VIRTUAL_HOST: applingo.tokyo ⇦ドメイン名
VIRTUAL_PROTO: https
LETSENCRYPT_HOST: applingo.tokyo ⇦ドメイン名
LETSENCRYPT_EMAIL: applingo@gmail.com ⇦自分のEメールアドレス
LETSENCRYPT_TEST: “false”
PROFILE: applingo ⇦ WordPressの各種ファイルが入るディレクトリ名になる
FQDN: applingo.tokyo ⇦ドメイン名

というように中身を変更します。

MySQLデータベース(MariaDB)の設定を行います。

MYSQL_ROOT_PASSWORD: BDiio21
MYSQL_USER: applingo
MYSQL_PASSWORD: EDGE312d
MYSQL_DATABASE: applingodb

vim uploads.ini
file_uploads = On
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600

KUSANAGIのDockerコンテナを起動します。

/usr/local/bin/docker-compose -f /home/wp/blog1/docker-compose.yml up -d

このdocker-compose.ymlファイルの設定ではmysqlがコンテナに存在しているため永続化ができません。

永続化とはコンテナを削除しても残り続けるというぐらいの意味ですが、

つまり、docker-compose downを行うたびにデータベースが初期状態から始まるため、phpのバージョンを上げたいとかいった場合に大変困ります。

その辺については別の記事にまとめました。

ドメインにアクセスしてみる

これで利用できるはずです。

ブラウザからドメインにアクセスしてみましょう。

あとは通常のWordPressの設定と同様です。

dockerコンテナがどれくらいメモリを消費しているか確認しよう

各コンテナのリソース消費量を調べてみます。

docker container stats

mariadbが106MBと結構メモリを喰っています。

NGINX(エンジンエックス)が12MB

KUSANAGIが136MB

メモリを消費しています。

新しいサイトをもう一つ追加するとKUSANAGI分が136MB分さらに必要になるので、メモリ消費量を考えながら借りるVPSプランを検討する必要があります。

また、負荷がかかるとメモリ消費量はさらに増えるので注意が必要です。

WebArena Indigo の1GBプランはとりあえず、KUSANAGIでWordPressが運用できて、かつ激安でかなりオススメです。

スワップ領域を確保しておくことの重要性はここにあります。

スワップ領域があればとりあえず動作します。

 

DNSレコードを設定する

ドメインを取得しているサービスで設定を行います。

DNSレコードというのは簡単にいうと、

ドメイン(例えばapplingo.tokyo)のURLが指定されると、そのドメインを登録されているIPアドレスに変更するための設定ということですね。

自分のPCのブラウザでapplingo.tokyoというURLを入力した時、どうやって、VPSサーバーにあるVPSインスタンスからコンテンツを取得できるのかという話です。

DNSサーバーがドメインとIPアドレスのペアを配信しているので、その情報をブラウザーは取得することによってコンテンツを配信しているサーバーのIPアドレスを知ることができるわけです。

その後、そのIPアドレスを持ったサーバーと通信を開始します。

DNSレコードの設定はこの設定を行うことです。

私の場合は、お名前.comでドメインを取得しているので、そこでの設定を簡単に紹介しておきます。

DNSレコード設定を利用するから設定するをクリックします。

TYPEはAレコード

TTLは3600

VALUEの欄にIPアドレスを入力します。

最初は難しく感じますが、慣れるとなんてことはありませんね。

コメント