VCCW(ver3.18.0)でWordPress構築~dotenv編~

前回までの記事でWordmoveというツールを使ってデプロイできるようになりました。
movefile.ymlという設定ファイルを作成しましたが、デプロイ先の情報がたくさん記述されているのでgit管理したりする場合は不安になりますね。

そこで今回はmovefile.yml内のデリケートな情報をdotenvを使って組み込んでいきます。

dotenvとは

dotenvとはruby製のOSSで、.envというファイルから環境変数を読み込んでソース内に展開することができるツールです。
今回のケースのようにデリケートな情報がベタで組み込まれた状態でgit管理するのはセキュリティ上あまりよろしくないので、.envというgitignoreされたファイルに情報を集約して個々人が管理するという運用になります。

それでは早速movefile.ymlを置き換えていきます。

前提

  • vagrant upを実行済み
  • Wordmoveで正常にリモートと通信ができる状態(wordmove doctorもパスしている)

dotenvをインストール

この連載記事の手順通りに構築している場合はすでにdotenvが仮想環境にインストールされているかと思われます。
(こちらの記事のsite.yml > ruby_gems の項目を参照)

もしsite.ymlに記述し忘れてvagrant upしてしまった方は自力でインストールします。

$ vagrant ssh
$ ruvy -b
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux-gnu]
$ gem install dotenv

dotenv (2.7.1)がインストールされました。
これでdotenvのインストールはOKです。

Wordmoveのアップデート

この後は.envファイルを生成して環境変数を読み込んでいくのですが、自分の場合はWordmoveのバージョンが古かったようでdotenvに対応していなかったようでエラーが起きました。
ので念の為アップデートしておきます。

$ vagrant ssh
$ wordmove -v
2.4.0
$ gem install wordmove
$ wordmove -v
4.0.0

心配になるくらいバージョンアップしてしまいましたが、いったんこれでOKです。

.envファイルを生成

ここまできたら後はmovefile.ymlに記述されたデリケートな情報を.envに移行するだけです。
まずはプロジェクトルートで.envファイルを生成します。

$ touch .env

当然ながら最初は中身は空っぽです。
movefile.ymlで管理していた以下の情報を全て環境変数から読み込む形にします。

  • vhost
  • wordpress_path
  • database関連の情報全て
  • ssh関連の情報全て

環境変数内で定義する変数名は自由ですが、定数扱いなので大文字にします。
自分の場合はこんな感じにしました。

LOCAL_VHOST=http://piyo.test
LOCAL_WORD_PRESS_PATH=/var/www/html
PROD_VHOST=https://piyo.com
PROD_WORD_PRESS_PATH=/home/piyo/www
PROD_DB_NAME=piyo
PROD_DB_USER=piyo
PROD_DB_PASS=piyo
PROD_DB_HOST=piyo.jp
PROD_SSH_HOST=piyo.jp
PROD_SSH_USER=piyo
WP_ADMIN_USER=piyo
WP_ADMIN_PASS=piyo

ここに記載するわけでにはいかないのでpiyoばかりになってしまいましたが、正常にリモートと同期できた状態のmovefile.yml内の情報を記載していってください。

Wordmoveを実行してみる

いちおう仮想環境をリロードしておきます。
VCCWはプロジェクトルートと仮想環境のディレクトリが同期されているので、これで.envファイルが仮想環境内の/vagrant/ディレクトリに配置されているかと思います。

$ vagrant reload

ではWordmoveを試しに実行してデバッグしてみます。

$ vagrant ssh
$ cd /vagrant/
$ wordmove pull --all --debug

–debugオプションをつけると実際にファイル・データが更新されることはないので安心です。
これで特にエラーが起きなければOKです。

ちなみにdotenvに置き換えた後のwordmove doctorですが、vhost部分でなぜか正規表現に引っ掛かるようです…
(問題なくデプロイできますが)

vagrant@vccw-common-engineer:/vagrant$ wordmove doctor
        .------------------------.
        |       PSYCHIATRIC      |
        |         HELP  5¢       |
        |________________________|
        ||     .-"""--.         ||
        ||    /        \.-.     ||
        ||   |     ._,     \    ||
        ||   \_/`-'   '-.,_/    ||
        ||   (_   (' _)') \     ||
        ||   /|           |\    ||
        ||  | \     __   / |    ||
        ||   \_).,_____,/}/     ||
      __||____;_--'___'/ (      ||
     |\ ||   (__,\\    \_/------||
     ||\||______________________||
     ||||                        |
     ||||       THE DOCTOR       |
     \|||         IS [IN]   _____|
      \||                  (______)
       `|___________________//||\\
                           //=||=\\
                           `  ``  `

▬▬ Using Movefile: ./Movefile.yml ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

▬▬ Validating movefile section: global ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    ✅  success | Formal validation passed

▬▬ Validating movefile section: local ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    ❌  error | [/vhost] '': not matched to pattern /^https?:\/\//.

▬▬ Validating movefile section: production ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    ❌  error | [/vhost] '': not matched to pattern /^https?:\/\//.

▬▬ Using Movefile: ./Movefile.yml ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

▬▬ Checking local database commands and connection ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    ✅  success | `mysql` command is in $PATH
    ✅  success | `mysqldump` command is in $PATH
    ✅  success | Successfully connected to the MySQL server
    ✅  success | Successfully connected to the database

▬▬ Checking local wp-cli installation ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    ✅  success | wp-cli is correctly installed
    ✅  success | wp-cli is up to date

▬▬ Checking rsync ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    ✅  success | rsync is installed at version 3.1.1

▬▬ Checking SSH client ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    ✅  success | SSH command found

おわり

これでmovefile.ymlも安心してgit管理できます。
もちろん.envはgitignoreに記載して管理外にしておきます。

ここらへんまで来ると快適にWordPressの運用ができる状態になっているかなと思います。
あとは実際に自分が運用している中でハマった点や気づいたことも徐々にアップしていければと思います。

ではでは