目次 [非表示]
はじめに
前回【第4回】GCPの無料枠でdev.toなみの爆速Wordpress環境を構築する(ドメイン設定編)ではドメイン周りの設定を終わらせたので、今回【第5回】GCPの無料枠でdev.toなみの爆速Wordpress環境を構築する(KUSANAGI Runs on Docker編)では前々回に構築したVMインスタンスに「KUSANAGI Runs on Docker」をインストールしていく。初心者にはちょっと難しい内容になるが、手順通りに進めていけば無事に構築できるはず。焦らずに進めていこう。
今回の作業は上記のサイトを参考にしている。上記のサイトの方法ではいくつかの不具合が残ったまま構築することになるが、今回ここで紹介する手順で構築すれば諸問題は解決することができる。
Google Cloud PlatformでのSSH接続
Google Cloud PlatformにSSH接続する方法はいくつかあるが、今回はブラウザから手っ取り早くログインできる方法で進めていく。
VMインスタンスの画面から「接続」→「SSH」→「ブラウザウィンドウで開く」を選ぶ。
SSH 接続を開始するか尋ねられるので「接続」をクリックする。
するとターミナル画面が表示されるので、ここでコマンドを実行して構築していくことになる。
「KUSANAGI Runs on Docker」の環境を構築
さて、これからいくつものコマンドを実行していく。CUIに慣れていなくても一つ一つコマンドを実行していけば問題なく構築できるのでご安心を。
スワップ領域の設定
この環境で何度かWordpressを構築してきたが、サイトの移行などで大きいファイルを扱ったるする際にメモリの少なさが原因でサーバが非常に重たくなる。始めにスワップ領域を設定しておくことで、サーバの負荷を軽減することができるので設定しておこう。
作業の前にスワップ領域がないことを下記のコマンドで確認してみよう。
free -m1
Swapが下記のように「0」と表示されていれば未設定。
total used free shared buff/cache available Mem: 588 267 83 42 237 149 Swap: 0 0 01
2
3
Swapファイル領域を確保(処理に1ー2分かかる)
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 1
パーミッションを変更
sudo chmod 600 /swapfile1
Swapの作成
sudo mkswap /swapfile1
Swapを有効にする
sudo swapon /swapfile1
Swapの確認
先ほど「0」になっていたのが「1023」となっている。
free -m total used free shared buff/cache available Mem: 588 256 69 42 262 159 Swap: 1023 0 10231
2
3
4
このままでは再起動した際にSwapファイルは無効になるので下記のコマンドで永続化する必要がある。長いコマンドなのでちゃんと行末までコピペするように。
sudo sed -i '$ a /swapfile swap swap defaults 0 0' /etc/fstab 1
念のために再起動。問題なくSwapが永続されているかを確認してみよう。
sudo reboot1
上記のような画面が表示されるので「再接続」をクリック。再起動には1〜2分かかる。
もう一度下記のコマンドを実行しスワップ領域が確保されていれば大丈夫。
free -m total used free shared buff/cache available Mem: 581 91 327 2 162 376 Swap: 1023 0 10231
2
3
4
Dockerをインストール
次にDockerに必要なパッケージをインストールする。
curl -fsSL https://get.docker.com/ | sh1
問題なく起動しているか確認するために下記のコマンドを実行してみよう。
sudo docker run hello-world1
問題なくインストールされていれば
Hello from Docker! This message shows that your installation appears to be working correctly.1
2
と表示されているはずだ。
再起動しても自動的にDockerが起動するように下記のコマンドを実行。
sudo systemctl enable docker 1
問題なく動作するか確認するためにVMインスタンスを下記のコマンドで再起動させてみる。
sudo reboot1
上記のような画面が表示されるので「再接続」をクリック。再起動には1〜2分かかる。
もう一度下記のコマンドを実行し動作していれば大丈夫。
sudo docker run hello-world1
Docker-composeをインストール
次にDocker-composeをインストール。まず下記のコマンドでファイルをダウンロードする。
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose 1
Docker-composeファイルの権限を変更する。
sudo chmod +x /usr/local/bin/docker-compose 1
問題なくインストールできているかバージョン確認してみよう。
docker-compose --version1
問題なければこのように表示されるはずだ。
docker-compose version 1.21.0, build 5920eb01
これで下準備ができた。ではDockerを使って実際に環境を構築していく。
「KUSANAGI Runs on Docker」の構築
まず「KUSANAGI Runs on Docker」の環境を構築するにあたって、Let’s Encrypt(SSL)を登録するためのE-MAILアドレスと、いくつかのdocker-compose.ymlが必要となってくる。
下記のコマンドでファイルをダウンロードし、環境構築に必要な階層とdocker-compose.ymlのファイルを準備する。
sudo curl https://www.karelie.net/wp-content/uploads/wordpress.tar.gz --output "/home/wordpress.tar.gz" 1
ダウンロードしたファイルを解凍する。
sudo tar -zxvf /home/wordpress.tar.gz -C /home/1
すると下記の構造でhomeの階層に必要なファイルが揃う。
+ home
+ wordpress
+ nginx-proxy
- docker-compose.yml
- nginx.conf
+ mariadb
- docker-compose.yml
+ kusanagi-php7
- Dockerfile
+ files
+ kusanagi-1
- docker-compose.yml
+ kusanagi-2
- docker-compose.yml
- uploads.ini 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
コマンドでそれぞれのdocker-compose.ymlを編集していくので、先に権限も変更しておく。
sudo chmod 707 /home/wordpress/*/docker-compose.yml1
Dockerネットワークを作成
Dockerのネットワーク環境を下記のコマンドで構築する。
sudo docker network create --driver bridge common_link1
プロキシサーバーコンテナを起動(nginx-proxy)
下記のコマンドでプロキシサーバーコンテナを起動させる。
スポンサーリンク
sudo docker-compose -f /home/wordpress/nginx-proxy/docker-compose.yml up -d 1
データベースサーバーコンテナの設定と起動(mariadb)
設定ファイル(docker-compose.yml)の変更
docker-composeで起動させる前に設定ファイル(docker-compose.yml)を4箇所、変更する必要がある。
データベースルートパスワード
データベースユーザー名
データベースパスワード
データベース名
下記のコマンドで「****」部分を設定したい文字列に変更して実行する。「****」部分を読者の設定したい文字列に必ず置き換えること。それぞれのコマンドをメモ帳などに一度コピーして****部分を置き換えれば作業しやすくなる。
また、「データベースユーザー名」「データベースパスワード」「データベース名」は、Wordpressのインストール時に必要になってくるので忘れないように。
データベースルートパスワードの設定変更
sudo sed -i -e "s/{データベースルートパスワード}/****/g" /home/wordpress/mariadb/docker-compose.yml 1
データベースユーザー名の設定変更
sudo sed -i -e "s/{データベースユーザー名}/****/g" /home/wordpress/mariadb/docker-compose.yml 1
データベースパスワードの設定変更
sudo sed -i -e "s/{データベースパスワード}/****/g" /home/wordpress/mariadb/docker-compose.yml 1
データベース名の設定変更
sudo sed -i -e "s/{データベース名}/****/g" /home/wordpress/mariadb/docker-compose.yml 1
設定変更のサンプルコマンド
例えばデータベース名の設定を「wordpress」とする場合、下記のコマンドになる。
sudo sed -i -e "s/{データベース名}/wordpress/g" /home/wordpress/mariadb/docker-compose.yml 1
もしターミナルからのテキスト処理に慣れているのなら下記のコマンドで直接ファイルを変更しても問題ない。
vi /home/wordpress/mariadb/docker-compose.yml1
コンテナの起動
上記の設定ファイルの準備ができたら下記のコマンドを実行してデータベースサーバーコンテナを起動させる。
sudo docker-compose -f /home/wordpress/mariadb/docker-compose.yml up -d 1
kusanagi-php7のビルド
次に公式の「kusanagi-php7」のイメージではPHPのJPEGに対応していないので、今回は独自にビルドする。JPEG処理に対応させないとサムネイルの作成や画像のトリミングなどの編集ができない。
ビルド用のファイルは先ほどダウンロードしたファイルに含めているので下記のコマンドを実行すれば良い。
sudo docker build -t kusanagi-php7 /home/wordpress/kusanagi-php7/1
ビルドには10分ほどかかるのでしばらく待つ。
KUSANAGI WordPressサイト1(kusanagi-1)の設定と起動
設定ファイルの変更
こちらもdocker-composeで起動させる前に設定ファイルを2箇所、変更する必要がある。
ドメイン
E-MAILアドレス
下記のコマンドで「****」部分を設定したい文字列に変更して実行する。「****」部分を必ず置き換えること。
ドメインの設定変更
sudo sed -i -e "s/{ドメイン}/****/g" /home/wordpress/kusanagi-1/docker-compose.yml 1
E-MAILアドレスの設定変更
sudo sed -i -e "s/{E-MAILアドレス}/****/g" /home/wordpress/kusanagi-1/docker-compose.yml 1
例えばドメインの設定を「www.free-wordpress.cf」とする場合、下記のコマンドになる。
sudo sed -i -e "s/{ドメイン}/www.free-wordpress.cf/g" /home/wordpress/kusanagi-1/docker-compose.yml 1
ちなみに今回はCloudflareでサイト全体をキャシュさせるのでKusanagiのキャッシュ機能は無効にしている。キャッシュ機能を有効にしたい場合はdocker-compose.ymlファイル内の
BCACHE: “off”
FCACHE: “off”
部分を “on” に変更すること。
下記のコマンドでも変更可能。
BCACHEを有効にする場合
sudo sed -i -e 's/BCACHE: "off"/BCACHE: "on"/g' /home/wordpress/kusanagi-1/docker-compose.yml 1
FCACHEを有効にする場合
sudo sed -i -e 's/FCACHE: "off"/FCACHE: "on"/g' /home/wordpress/kusanagi-1/docker-compose.yml 1
コンテナを起動
上記の設定ファイルの準備ができたら下記のコマンドを実行してKUSANAコンテナを起動させる。
sudo docker-compose -f /home/wordpress/kusanagi-1/docker-compose.yml up -d 1
コマンドが実行し終わってもLet’s Encrypt(SSL)の処理に15分弱かかるので気長に待とう。(処理が完全に終わるまでは設定したドメインにアクセスしてもエラーになってサイトは表示されない。)
無事に処理が終わるとめでたくこのようにwordpressの設定画面が表示される。
もし下記のようにリダイレクトが発生しサイトにアクセスできない場合は「Cloudflare」の「Crypto」にある「SSL」の設定を「Full」にすること。
複数サイトの立ち上げ
今回は「[WordPress] KUSANAGI Runs on DockerでLet’s EncryptのSSL付きマルチサイトを立ち上げる」を参考にし、一つのサーバーで複数のKUSANAGIを起動するマルチサイト運用にも対応させているので、その方法も紹介しておく。
KUSANAGI WordPressサイト2(kusanagi-2)の設定と起動
まず、ドメインはあらかじめ「kusanagi.karelie.net」というのを準備しておいた。
次にすでにある「kusanagi-2」の階層内にある「docker-compose.yml」ファイルを「kusanagi-1」の時と同様に「ドメイン」「E-MAILアドレス」を変更する。
下記のコマンドで「****」部分を設定したい文字列に変更して実行する。「****」部分を必ず置き換えること。またコマンドの階層部分が「kusanagi-1」ではなく「kusanagi-2」となっていることも確認すること。
ドメインの設定変更
sudo sed -i -e "s/{ドメイン}/****/g" /home/wordpress/kusanagi-2/docker-compose.yml 1
E-MAILアドレスの設定変更
sudo sed -i -e "s/{E-MAILアドレス}/****/g" /home/wordpress/kusanagi-2/docker-compose.yml 1
コンテナを起動
sudo docker-compose -f /home/wordpress/kusanagi-2/docker-compose.yml up -d 1
これで二つ目のサイトが立ち上がる。こちらも起動するまで10〜15分ほどかかる。
「kusanagi-2」のフォルダを複製しdocker-compose.ymlファイル内の「kusanagi-*」部分を適正に変更すれば、一つのインスタンス内に三つでも四つでもWordpressを立ち上げることができる。おそらく小規模でアクセスの少ないサイトであれば10サイトほど同時に立ち上げても大丈夫なんじゃないかなと思う。
まとめ
これでWordpressの環境が構築されたので、次回【第6回】GCPの無料枠でdev.toなみの爆速Wordpress環境を構築する(Wordpress設定編)では、Wordpressの初期設定を済ませ、「KUSANAGI Runs on Docker」に潜在している幾つかの諸問題を解決してく。