docker

WordPress

サーバー

サイト制作

Mac & Docker MachineでKUSANAGI on Dockerを試す

WordPressでサイトを作ることになって(このブログもWordPressですが・・・)、高速化するのにKUSANAGIという仮想マシンが話題になってたなと思い出して、試しにMacBook上のDocker machineにKUSANAGIのDocker用イメージ「KUSANAGI Runs on Docker(KUSANAGI RoD)」をインストールしてみました。

ちなみに、KUSANAGIは、推奨メモリが4GBなんだとかで、調べているうちに「メモリが少ないと極端に遅い」というレビューも見ましたが、今回はあえてKUSANAGI用docker machineには、Conohaの最安値プラン(1コアCPU / 512MB)での運用を目指して、同じスペックにしてあります。

MacBookの環境を極力汚さないようにDocker Machineを使いましたが、Mac上でもできます。その場合は、Docker machine上でまで読み飛ばして、Docker MachineをMacに置き換えて進めてください。Mac

Mac上で

[bash]
//Conoha 512MBプランを想定して「memory=512」「cpu-count=1」を設定
docker-machine create --driver virtualbox --virtualbox-memory=512 --virtualbox-cpu-count=1 kusanagi-machine

//docker machineが立ち上がっているか確認
docker-machine ls

//docker machineの詳細。あとで使うので、IPアドレスを控えておく
docker-machine env kusanagi-machine

//docker machineにSSHログイン
docker-machine ssh kusanagi-machine
[/bash]

Docker machine上で

[bash]
//Mac上でやるなら不要
sudo su

//docker-composeをインストール
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

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

docker-compose version

// 作業用ディレクトリ。不要な場合は飛ばす
mkdir kusanagi
cd kusanagi

//KUSANAGI用docker composeを用意
//from https://kusanagi.tokyo/cloud/kusanagi-runs-on-docker/
vi docker-compose up -d

version: '2'

services:
  kusanagi-data:
    container_name: kusanagi-data
    image: busybox
    restart: always
    stdin_open: true
    tty: true
    volumes:
      - /var/lib/mysql
      - /etc/nginx/conf.d
      - /etc/httpd/conf.d
      - /etc/kusanagi.d
      - /home/kusanagi
    command: /bin/sh

  kusanagi-nginx:
    container_name: kusanagi-nginx
    image: primestrategy/kusanagi-nginx:1.10.0-1
    environment:
      PROFILE: kusanagi
      FQDN: kusanagi.example.jp
      WPLANG: ja
      BCACHE: "off"
      FCACHE: "off"
    volumes_from:
      - kusanagi-data
    links:
      - kusanagi-php7:php
      - kusanagi-mariadb:mysql
    ports:
      - "80:80" //Mac上でやる場合は、80番ポートが使えないので、8080:8080などを使う
      - "443:443"

  kusanagi-mariadb:
    container_name: kusanagi-mariadb
    image: mariadb:10.0.24
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
      MYSQL_USER:     user //DBのユーザー名
      MYSQL_PASSWORD: password//DBのパスワード
      MYSQL_DATABASE: wordpress//DB名
    volumes_from:
      - kusanagi-data

  kusanagi-php7:
    container_name: kusanagi-php7
    image: primestrategy/kusanagi-php7:7.0.6-1
    links:
      - kusanagi-mariadb:mysql
    volumes_from:
      - kusanagi-data

//KUSANAGI用のdockerを起動
docker-compose up -d
[/bash]

プラグインなどの更新をする設定

KUSANAGIではデフォルトでftpポートを閉じているそうです。というか、そもそも今回のDocker環境ではftpサーバー環境がないので、アップデートやプラグインのインストールができません。

そこで、kusanagi-dataコンテナに入って、「wp-config.php」を編集してFTPじゃないアップデートを許可します。

[bash]
docker exec -it kusanagi-data /bin/sh

vi /home/kusanagi/kusanagi/wp-config.php

//ここの行を追加
define('FS_METHOD', 'direct');
[/bash]

これで、アップデートやプラグインの追加ができるようになりました。ただ、セキュリティ的にはあまりよくないので、インストール系が終わったら切るほうがよさそうです。

WordPressにアクセス

ブラウザで、Docker-machineのIPアドレスを叩くと、WordPressの初期設定画面が出てきます。

データベースのIDやパスワードは、上のdocker-compose.ymlに記述したものになるので、そちらを入力します。

KUSANAGI for WordPressを使ってみて

使ってみると、MacBook 12インチ(2016 Core m7)上でもサクサク動きました。また、データがほとんど入っていない&&アクセスがないからという気もしますが、これなら、ひょっとしたらConoha 512MBでも意外と快適かもしれませんね。
(少なくともこのブログよりかは早い ---> こっちは無料サーバーだから当たり前)