ログイン
ログイン

KAGOYA CLOUD チュートリアル

第6回
KUSANAGI Runs on Docker
を使ってみた

Docker を使って KUSANAGI Runs on Docker をインストールし、常時SSLの WordPress サイトをマルチドメインで利用する方法をご案内します。

KUSANAGI Runs on Docker
https://kusanagi.tokyo/cloud/kusanagi-runs-on-docker/

構築する環境

ここでは以下のディレクトリ構成で、Docker compose を使って環境を構築します。

/home └wordpress ├nginx-proxy ← プロキシサーバー(マルチサイト& Let’s Encrypt対応) │├docker-compose.yml │├nginx.conf │└docker-compose.d ├kusanagi01 ← KUSANAGI Runs on Docker(WordPressサイト1つ目) │├docker-compose.yml │├uploads.ini │└data └kusanagi02 ← KUSANAGI Runs on Docker(WordPressサイト2つ目) ├docker-compose.yml ├uploads.ini └data

  • CentOS 7 のインスタンスを作成

    1. CentOS 7 でインスタンスを作成します。

      ◇コントロールパネル > KVM > インスタンス
      https://vps.kagoya.com/#/kvm/server

    2. インスタンス一覧が表示されます。▼

      インスタンス作成

      「インスタンス作成」をクリックします。▲

    3. インスタンス作成画面が開きます。▼

      スペック

      任意のスペックを選択します。▲

    4. パッケージは、CentOS 7 64bit を選択します。▼

      パッケージ

      ログイン認証キーを選択します。▲
      ※ 未作成の場合はログイン認証キーを追加してください(ログイン用認証キー作成)。

    5. セキュリティグループは先に追加したプロキシサーバー用のセキュリティグループを選択します。▼

      セキュリティグループ
    6. その他必須項目を入力し、「インスタンス作成」をクリックします。

      ここでは例として以下のIPアドレスのインスタンスを作成したこととします。
      例)IPアドレス:203.0.113.10

  • 独自ドメインを設定

    1. 独自ドメインのAレコードに作成したインスタンスのIPアドレスを設定します。

      例としてここでは以下のようにAレコードを設定します。
      kusanagi01.example.com A 203.0.113.10
      kusanagi02.example.com A 203.0.113.10

      ※当社ネームサーバーを利用する場合はコントロールパネルから設定できます(Aレコードの設定)。▼

      独自ドメインを設定
  • OSの更新とwgetをインストール

    1. はじめに CentOS のパッケージを最新の状態にします。

      # yum –y update
    2. wget をインストールします。

      # yum -y install wget
  • スワップ領域の設定

    1. swapファイル領域を1GB確保(ブロックサイズ1MBで1024個)します。

      # dd if=/dev/zero of=/swapfile bs=1M count=1024
    2. パーミッションを変更します。

      # chmod 600 /swapfile
    3. swap を作成します。

      # mkswap /swapfile
    4. swap を有効化します。

      # swapon /swapfile
    5. swap を確認します。

      # free -m
      
                    total        used        free      shared  buff/cache   available
      Mem:            992          56          68          12         867         775
      Swap:          1023           0         1023
    6. OSの再起動時も作成したスワップ(swap)領域が、自動的にマウントされるよう設定をします。

      # sed -i '$ a /swapfile swap swap defaults 0 0' /etc/fstab 
  • Docker のインストール

    1. Docker をインストールします。

      # curl -fsSL https://get.docker.com/ | sh
    2. Docker を起動します。

      # systemctl start docker
    3. バージョンを確認し、インストールできていることを確認します。

      # docker --version
    4. Docker の自動起動設定をします。

      # systemctl enable docker
  • Docker Compose のインストール

    1. Docker Compose をインストールします。

      # curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o
      /usr/local/bin/docker-compose

      ※Docker Composeの最新バージョンはこちらをご確認ください。

    2. 実行権限を追加します。

      # chmod +x /usr/local/bin/docker-compose
    3. バージョンを確認し、インストールできていることを確認します。

      # docker-compose --version
  • Docker ネットワークの作成

    1. プロキシサーバーと各コンテナ間のネットワークを作成します。

      # docker network create --driver bridge common_link
  • WordPress環境構築用のディレクトリを作成

    1. ディレクトリを作成します。

      # mkdir /home/wordpress
      # cd /home/wordpress
  • プロキシサーバー(nginx-proxy)の構築

    ドメインごとにアクセス先コンテナの分岐処理を行うnginx-proxy というコンテナと、無料SSL証明書Let's Encryptの発行手続きを自動で行うletsencrypt-nginx-proxy-companionというコンテナを一緒に構築します。

    1. サービス用のディレクトリを作成します。

      # mkdir nginx-proxy
      # cd nginx-proxy
    2. docker-compose.ymlを用意します。

      # wget https://support.kagoya.jp/cloud/docker/nginx-proxy/docker-compose.yml
    3. nginx のアップロードファイルサイズの設定ファイルを用意します。

      # vi nginx.conf
    4. 以下を記述します。

      client_max_body_size 64m;
    5. docker-compose.yml でコンテナを起動します。

      # docker-compose -f /home/wordpress/nginx-proxy/docker-compose.yml up -d
  • KUSANAGI Runs on Docker(WordPressサイト1つ目)の構築

    1. サービス用のディレクトリを作成します。

      # cd /home/wordpress
      # mkdir kusanagi01
      # cd kusanagi01
    2. docker-compose.ymlを用意します。

      # wget https://support.kagoya.jp/cloud/docker/kusanagi/docker-compose.yml
    3. docker-compose.ymlを編集します。

      # vi docker-compose.yml
    4. kusanagi-nginx の設定の以下の箇所を修正します。

        environment:
          VIRTUAL_HOST: {ドメイン}
          VIRTUAL_PORT: 443
          VIRTUAL_PROTO: https
          LETSENCRYPT_HOST: {ドメイン}
          LETSENCRYPT_EMAIL: {管理者のメールアドレス}
          LETSENCRYPT_TEST: "false"
          PROFILE: {ドメイン}
          FQDN: {ドメイン}
          WPLANG: ja
          BCACHE: "on"
          FCACHE: "on"

      {ドメイン}にはご利用されるホスト名、
      {管理者のメールアドレス}には実際に受信できるメールアドレスをご入力ください。
      ※ KUSANAGIキャッシュを利用しない場合は BCACHE と FCACHE を"off"にします。

    5. 例としてここでは以下のように設定します。

        environment:
          VIRTUAL_HOST: kusanagi01.example.com
          VIRTUAL_PORT: 443
          VIRTUAL_PROTO: https
          LETSENCRYPT_HOST: kusanagi01.example.com
          LETSENCRYPT_EMAIL: admin@example.com
          LETSENCRYPT_TEST: "false"
          PROFILE: kusanagi01.example.com
          FQDN: kusanagi01.example.com
          WPLANG: ja
          BCACHE: "on"
          FCACHE: "on"
    6. kusanagi-mariadb の設定の以下の箇所を修正します。

        environment:
          MYSQL_ROOT_PASSWORD: {ルート用データベースパスワード}
          MYSQL_USER: {データベースユーザー名}
          MYSQL_PASSWORD: {データベースパスワード}
          MYSQL_DATABASE: {データベース名}

      {ルート用データベースパスワード}
      {データベースユーザー名}
      {データベースパスワード}
      {データベース名}
      はご自由にご入力ください。

    7. 例としてここでは以下のように設定します。

        environment:
          MYSQL_ROOT_PASSWORD: t8gp9wue
          MYSQL_USER: dbuser
          MYSQL_PASSWORD: c7sx5vk3
          MYSQL_DATABASE: wpdb
    8. PHP のアップロードファイルサイズの設定ファイルを用意します。

      # vi uploads.ini
    9. 以下を記述します。

      file_uploads = On
      memory_limit = 256M
      upload_max_filesize = 64M
      post_max_size = 64M
      max_execution_time = 600
    10. docker-compose.yml でコンテナを起動します。

      # docker-compose -f /home/wordpress/kusanagi01/docker-compose.yml up -d
  • 1つ目のWordPressにアクセスしてみる

    1. コンテナが起動してから Let'sEncrypt が設定完了するまで10分ほど待ってから以下のURLにアクセスします。
      https://{ドメイン}/wp-admin/setup-config.php
      ※ {ドメイン}の部分は設定したホスト名に置き換えてください。これまでの設定例の場合は以下のURLにアクセスします。
      https://kusanagi01.example.com/wp-admin/setup-config.php

    2. WordPress の初期設定画面が表示されるので、画面の案内にしたがってデータベース接続情報を入力します。

    3. ここまでの設定例の場合は以下の情報を入力します。

      データベース名 wpdb
      ユーザー名 dbuser
      パスワード c7sx5vk3
      データベースのホスト名 mysql
      テーブル接頭辞 wp_
  • wp-config.php とパーミッションの設定

    1. FTPなしでテーマ、プラグインのダウンロードができるように設定します。

      # vi /home/wordpress/kusanagi01/data/{ドメイン}/DocumentRoot/wp-config.php

      ※ {ドメイン}の部分は設定したホスト名に置き換えてください。

    2. 最後の行に以下を追記します。

      define('FS_METHOD','direct');
    3. テーマ階層のパーミッションを設定します。

      # chmod 707 /home/wordpress/kusanagi01/data/{ドメイン}/DocumentRoot/wp-content/themes/
    4. 各種ファイルのパーミッションも設定します。

      # cd /home/wordpress/kusanagi01/data/{ドメイン}/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
    5. 以上で1つ目のWordPress サイトが完成しました。
      2つ目のWordPress サイトも基本的には同じ手順で追加できます。

  • KUSANAGI Runs on Docker(WordPressサイト2つ目)の構築

    1. サービス用のディレクトリを作成します。

      # cd /home/wordpress
      # mkdir kusanagi02
      # cd kusanagi02
    2. docker-compose.ymlを用意します。

      # wget https://support.kagoya.jp/cloud/docker/kusanagi/docker-compose.yml
    3. docker-compose.ymlを編集します。

      # vi docker-compose.yml
    4. kusanagi-nginx の設定の以下の箇所を修正します。

        environment:
        VIRTUAL_HOST: {ドメイン}
        VIRTUAL_PORT: 443
        VIRTUAL_PROTO: https
        LETSENCRYPT_HOST: {ドメイン}
        LETSENCRYPT_EMAIL: {管理者のメールアドレス}
        LETSENCRYPT_TEST: "false"
        PROFILE: {ドメイン}
        FQDN:{ドメイン}
        WPLANG: ja
        BCACHE: "on"
        FCACHE: "on"

      {ドメイン}にはご利用されるホスト名、
      {管理者のメールアドレス}には実際に受信できるメールアドレスをご入力ください。
      ※ KUSANAGIキャッシュを利用しない場合は BCACHE と FCACHE を"off"にします。

    5. ここでは例として以下のように設定します。

        environment:
        VIRTUAL_HOST: kusanagi02.example.com
        VIRTUAL_PORT: 443
        VIRTUAL_PROTO: https
        LETSENCRYPT_HOST: kusanagi02.example.com
        LETSENCRYPT_EMAIL: admin@example.com
        LETSENCRYPT_TEST: "false"
        PROFILE: kusanagi02.example.com
        FQDN:kusanagi02.example.com
        WPLANG: ja
        BCACHE: "on"
        FCACHE: "on"
    6. kusanagi-mariadb の設定の以下の箇所を修正します。

        environment:
        MYSQL_ROOT_PASSWORD: {ルート用データベースパスワード}
        MYSQL_USER: {データベースユーザー名}
        MYSQL_PASSWORD: {データベースパスワード}
        MYSQL_DATABASE: {データベース名}

      {ルート用データベースパスワード}
      {データベースユーザー名}
      {データベースパスワード}
      {データベース名}
      はご自由にご入力ください。

    7. ここでは例として以下のように設定します。

        environment:
        MYSQL_ROOT_PASSWORD: w6njzvmc
        MYSQL_USER: dbuser
        MYSQL_PASSWORD: q2fa9bxu
        MYSQL_DATABASE: wpdb
    8. PHP のアップロードファイルサイズの設定ファイルも用意します。

      # vi uploads.ini
    9. 以下を記述します。

      file_uploads = On
      memory_limit = 256M
      upload_max_filesize = 64M
      post_max_size = 64M
      max_execution_time = 600
    10. docker-compose.yml でコンテナを起動します。

      # docker-compose -f /home/wordpress/kusanagi02/docker-compose.yml up -d
  • kusanagi02 の WordPress をインストール

    1. コンテナが起動してから Let'sEncrypt が設定完了するまで10分ほど待ってから以下のURLにアクセスします。
      https://{ドメイン}/wp-admin/setup-config.php
      ※ {ドメイン}の部分は設定したホスト名に置き換えてください。

    2. これまでの設定例の場合は以下のURLにアクセスします。
      https://kusanagi02.example.com/wp-admin/setup-config.php

    3. WordPress の初期設定画面が表示されるので、画面の案内にしたがってデータベース接続情報を入力します。

    4. ここまでの設定例の場合は以下の情報を入力します。

      データベース名 wpdb
      ユーザー名 dbuser
      パスワード q2fa9bxu
      データベースのホスト名 mysql
      テーブル接頭辞 wp_
    5. 後は1つ目のWordPress サイトと同様に wp-config.php の設定やパーミッションの設定をお済ませください。

    6. WordPress サイトを3つ以上追加していく場合は、同様に /home/wordpress/kusanagi03 を作成し、docker-compose.yml を編集してコンテナを起動すればOKです。

KAGOYA CLOUD
チュートリアル トップへ