KUSANAGI とは WordPress 用に チューニングされた実行環境です。
通常 KUSANAGI を利用するには、ConoHa や さくら といった専用のVPSを利用する必要があります。
しかし、実はKUSANAGI を開発している プライム・ストラテジーが配布している KUSANAGI Runs on Docker を使うことで他のVPSや自宅のPCでもインストールすることが可能です。Virtualbox を利用した Vagrant (ベイグラント)版もあります。
KUSANAGI を使うには値段が高そうなイメージがありますよね。でも実は誰でも使えるんですよ。
今回は、NTTPC の格安VPS Indigo (インディゴ)を使って KUSANAGI Runs on Docker をインストールしてみます。Indigo の登録方法などは下記の記事で紹介していますので先にご覧ください。
あまり初心者向けの内容ではないですが、基本的にコピペでOKです。
Indigo VPS インスタンスを起動
- インスタンスとは?
-
仮想マシンのこと。Indigo では 1契約で10個までインスタンスを作成可能。SSHとは?サーバーなどを遠隔操作する方法で、暗号化されているので安全に通信できる。コマンド操作が必要。
- SSHとは?
-
サーバーなどを遠隔操作する方法で、暗号化されているので安全に通信できる。コマンド操作が必要。
Indigo に登録して、インスタンスを作成したら起動して、SSHクライアントを使いSSH接続しましょう。なお インスタンスのOSは Ubuntu 、CentOS どちらでもOKです。
Windows なら Tera Termやrlogin、MacならiTerm2 を使うとよいです。この記事では Termius を使っています。
SSH通信には秘密鍵が必要となるので、Indigo のコントロールパネルで作成したSSH秘密鍵をSSHクライアントで指定する必要があります。
- IPアドレス:コントロールパネルで確認
- ポート番号:22
- ユーザー名:ubuntu / centos
- パスワード:なし
- 秘密鍵:private_key.txt (作成したもの)
IPアドレスはここに記載
初期設定
まずはこのような画面が表示されます。
以下のコマンドで root ユーザーのパスワードを設定します。
$ sudo passwd root
root のパスワードを作成
パスワードをもう一度入力
$ su
$ sudo passwd root
root のパスワードを作成
次にソフトのアップデートを行います。ここだけUbuntuとCentOSのコマンドが異なります。
Ubuntu の場合
# apt update
# apt list --upgradable
# apt -y upgrade
CentOSの場合
# yum -y update
KUSANAGI の下準備
ここからはカゴヤの KUSANAGI Runs on Docker を使ってみた を参考にしています。利用しやすいよう変更を加えている点もありますのでご留意ください。
- ドメイン、サブドメインのAレコードを Indigo のインスタンスのIPアドレスに向ける
複数のKUSANAGIサイトを作るには独自ドメインが必須です。まだの場合は.work や.xyz が取得費、維持費が安くてお得です。
お名前.com、ムームードメインなどドメインを登録しているサイトのコントロールパネルでAレコードを編集しましょう。ここではCloudFlareを使っていますがやっていることは同じです。サブドメインも利用可能です。
コマンドをひたすら入力
ここからはひたすらコピペしましょう。
## スワップファイル
dd if=/dev/zero of=/swapfile bs=1M count=1024
## パーミッション変更
chmod 600 /swapfile
## swap 作成
mkswap /swapfile
## swapを有効に
swapon /swapfile
## swapを自動マウント
sed -i '$ a /swapfile swap swap defaults 0 0' /etc/fstab
Docker をインストール
## Docker インストール
curl -fsSL https://get.docker.com/ | sh
## Docker 起動
systemctl start docker
## Docker 自動起動
systemctl enable 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
## パーミッション変更
chmod +x /usr/local/bin/docker-compose
## Docker ネットワーク作成
docker network create --driver bridge common_link
WordPress ディレクトリ
## WordPressディレクトリを作成 (ディレクトリ名は任意)
mkdir /home/wp
cd /home/wp
## nginxプロキシをインストール
mkdir nginx-proxy
wget https://support.kagoya.jp/cloud/docker/nginx-proxy/docker-compose.yml
## nginx 設定ファイルを作成
vi nginx.conf
vi を開いたら以下の内容をコピペして、:wq を入力で保存します。
client_max_body_size 64m;
Docker Composeを起動
/usr/local/bin/docker-compose -f /home/wp/nginx-proxy/docker-compose.yml up -d
KUSANAGU サイトを作成
cd /home/wp
## 任意の名前のインストールディレクトリを作成
mkdir kusa01
cd kusa01
## docker-composeの設定ファイルをダウンロード
wget https://support.kagoya.jp/cloud/docker/kusanagi/docker-compose.yml
## 設定ファイルを編集
vi docker-compose.yml
{}で囲われた部分を自分の環境に合わせて変更しましょう。以下は例です。https://kusa.tabikumo.com でサイトを作った場合です。
vi の使い方がわからない場合はこちらを見てみましょう。
VIRTUAL_HOST: kusa.tabikumo.com
VIRTUAL_PROTO: https
LETSENCRYPT_HOST: kusa.tabikumo.com
LETSENCRYPT_EMAIL: [email protected]
LETSENCRYPT_TEST: "false"
PROFILE: kusa
FQDN: kusa.tabikumo.com
PROFILEはそのままディレクトリ名になります。
下の方で データベースの設定をします。任意のユーザー名、データベース名を設定します。
MYSQL_ROOT_PASSWORD: v6RwyZDi
MYSQL_USER: kusa_user
MYSQL_PASSWORD: Uc6rSHd2
MYSQL_DATABASE: kusadb
vi uploads.ini
file_uploads = On
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
Docker コンテナを起動
/usr/local/bin/docker-compose -f /home/wp/kusa01/docker-compose.yml up -d
あとは自動的に、サイト構築、Let’s Encrypt でSSL証明書を作成しますので10分程度待ってから https://kusa.tabikumo.com などサイトへアクセスしましょう。
この画面が出たらいつものようにWordPressをインストールできます。
先程設定したデータベース名、ユーザー名、パスワードを入力して、データベースのホスト名を「mysql」にします。
あとはサイト名や管理ユーザーを作成して完了です。
この画面が出てくると分かっていてもうれしいですね。
インストール後の調整
プラグイン・テーマを直接インストールできるようにする
vi /home/wp/kusa01/data/kusa/DocumentRoot/wp-config.php
最後の行に追加
define('FS_METHOD','direct');
各ディレクトリ、ファイルのパーミッションを変更
セキュリティ対策としてディレクトリとファイルの権限を変更します。ディレクトリのパスは自分の環境に合わせて変えてください。
まとめてコピペですべて実行されます。
chmod 707 /home/wp/kusa01/data/kusa/DocumentRoot/wp-content/themes/ &&
cd /home/wp/kusa01/data/kusa/DocumentRoot/ &&
chmod -R 707 wp-admin/ &&
chmod -R 707 wp-includes/ &&
chmod 707 license.txt &&
chmod 707 readme.html &&
chmod 707 wp-activate.php &&
chmod 707 wp-comments-post.php &&
chmod 707 wp-config-sample.php &&
chmod 707 wp-cron.php &&
chmod 707 wp-load.php &&
chmod 707 wp-login.php &&
chmod 707 wp-settings.php &&
chmod 707 wp-signup.php &&
chmod 707 wp-trackback.php
KUSANAGI RoDサイトの速度
- 1GB プラン
- KUSANAGI Runs on Docker
PageSpeed Insights では当たり前のようにスコアが100です。
GTmetrixでは測定サーバーが海外なのですが、このようになりました。
Docker上で起動していることを感じさせない十分な速度だと思います。
おまけ:ミラーサイトの作り方
現ブログを Indigo へ移行する場合のやり方です。
移行時に基本的に必要となるのは以下の4つのデータです。
- MySQL データベース
- 記事内の画像 (uploadsフォルダ)
- プラグイン (pluginsフォルダ)
- テーマ (themesフォルダ)
オリジナルのWordPress サイトのデータをコピーしておきます。
MySQLコマンドが使える場合は以下を実行、出力した .sqlファイルをSFTPでダウンロードします。
mysqldump -u root -p データベース名 >export.sql
細かなやり方は、少し下の記事リンクをご覧ください。
SFTPクライアント(Filezilla,、Cyberduckなど)でダウンロードしておき、新サイト(Indigo)の同じディレクトリにコピーしておきましょう。データベースファイル(.sql)ファイルの置き場はDocumentRoot と同じディレクトリでOKです。
Docker コンテナに移動
## 起動しているDocker コンテナ表示
docker ps
9e8ec9fda980 mariadb:10.1.21 "docker-entrypoint.s…" 40 minutes ago Up 33 minutes 3306/tcp
こんな表示がずらっと5つ並ぶので、3つめの mariadb のコンテナのIDをコピーしておきます。
## Docker コンテナ内で操作 (コンテナIDはコピーしたもの)
docker exec -i -t 9e8ec9fda980 /bin/bash
## KUSANAGI ディレクトリへ移動
cd /home/kusanagi/kusa
## mysqlデータベースをインポート (DBパスワードを入力)
mysql -u root -p DB名 < データベース.sql
Search Regex でURL置換
WordPressの管理画面に戻り、プラグイン Seach Regex を使って URLを置換してサイトのコピーが完了です。おつかれさまでした。
その他
ドメイン名が異なる場合は、データベースの wp_optionsを書き換える必要があります。
まとめ
格安VPS でも十分使えることが分かりました。Docker を利用しているので管理上複雑になるため初心者にはおすすめできませんが、KUSANAGIが提供されていないVPSでもりようできるのでサブサイトやバックアップサイトのような使い方にはよいのではないでしょうか。
こんなの面倒だし、少し高くても安心して使えるVPSがいい!という場合はこのサイトでも利用している ConoHa VPS がおすすめです。かんたんKUSANAGIがあるのでコマンドをほぼ使わず自動でKUSANAGIサイトが作れます。