個人的にWordPressを使った環境構築をする機会があったのでメモ。 環境構築はするけど、WordPressは殆ど触った事がない人間です。
開発環境構築
なぜVCCWか?
こちらのページが結構参考になりました。
VCCWとWockerの比較。wordpress開発の新しい選び方。 | codechord
WordPressの開発では、VCCWとWockerというメジャーなものが2つあって、前者はVagrantベース。後者はDockerベース(Vagrantの中でDockerを起動している)のよう。
VCCWはガッツリいろいろなものが揃っているのに対して、Wockerはシンプルで起動も軽量という特徴があります。
僕は両方使ってみた上での比較はしませんでしたが、WordMoveが最初から入ってるのでよさそう。という理由でVCCWを使って環境構築をする事にしました。
VCCWで環境構築
こちらを参考にやった。細かい説明は↑に書いてあるのでコマンドだけメモしておく。 Vagrant環境は既に構築している前提。
vagrant plugin install vagrant-hostsupdater vagrant box add miya0001/vccw git clone https://github.com/vccw-team/vccw.git wordpress-sample cd wordpress-sample vagrant up
※vagrant-hostsupdaterの機能で/etc/hostsに設定を入れるので、ルートのパスワードが途中で要求されます
これでしばらく待った後、以下のURLで見れるようになる。
めちゃ簡単だった。
カスタマイズ
これも先ほど上げた参考サイトに書いてあった。
cp provision/default.yml site.yml
コピーして出来たsite.ymlを編集していく。
- メモリの割当量
- ホスト名(ローカルで見るURL)
- 日本語化とタイトル
- ユーザとIDの変更(admin/adminで入れないようにしとく)
この辺を修正しました。
一通り終わったら、
vagrant reload --provision
これで設定が反映される。
WordMoveでhetemlにDeploy
WordMoveとはひとことで言うとめっちゃ便利です。
以下の2つのブログを読むとだいたいわかると思います。
rsyncかFTPか
WordMoveのDeployはrsyncとFTPの2種類出来るようになっています。
上であげた参考サイトにFTPを使った場合だと、
ただ、やりとりするファイルが多いと接続が切れたりする事があるようです。
こう書かれてあったので、出来ればrsyncでやれたら幸せだなぁと思っていました。しかし、残念ながら、hetemlではrsyncが動かないようでした。(僕が確認した今現在)
hetemlでrsyncが動くようにする
vagrantの中でrsyncをコンパイルしてバイナリを作って、それをheteml上で動かします。
vagrant ssh cd /tmp git clone git://git.samba.org/rsync.git cd rsync git checkout v3.0.9 # masterだと最新のautoconfを要求されたので一つ前のバージョンにした ./configure make
これでrsync
というバイナリが作成されます。
heteml上では、自分のホームディレクトリにbin
フォルダを作り、そこにパスを通して先ほど作成したrsyncを置きます。公開鍵をheteml上においたり、~/.ssh/config
に設定したりしておくのは各自やっておくと便利です。
# hetemlの自分のホームディレクトリ mkdir bin # ↑で作成したbinフォルダにrsyncを置く # 手順省略 # .bashrcに以下を追記 export PATH=$PATH:$HOME/bin # 読み込み直し&確認 source .bashrc rsync --version # これでバージョンが出れば成功
以上でheteml上でrsyncが動くようになりました
WordMoveの設定
Movefileを編集します。僕の場合は以下のようになりました。
local: vhost: "http://vccw.dev" wordpress_path: "/var/www/wordpress" database: name: "wordpress" user: "wordpress" password: "wordpress" host: "localhost" heteml: vhost: "http://hoge.heteml.jp/vccw-sample" wordpress_path: "/home/sites/heteml/path-to-your-folder/web/vccw-sample" database: name: "_heteml_user" user: "_heteml_user" password: "password" host: "hoge.heteml.jp" charset: "utf8" exclude: - ".git/" - ".gitignore" - ".sass-cache/" - "bin/" - "tmp/*" - "Gemfile*" - "Movefile" - "wp-config.php" - "wp-content/*.sql" ssh: host: "hoge.heteml.jp" user: "hoge" port: 1234 rsync_options: "--verbose"
※パスワードやユーザ名や、port番号などは適当なものに変更しています。また、sshは鍵を通しておく事で、パスワードを記述するがなくなるのでオススメです。
Movefileの設定について詳しく知りたい方は、僕が挙げた参考サイトに解説がのっていたり、VCCWをgit cloneした時にデフォルトで作成されているファイルに説明があるのでそれを参照してください。
hetemlはDBへのアクセスがsshを踏み台にしてDBアクセスしないとダメですが、これもよしなにWordMoveがやってくれているっぽいので感動しました。
Deploy
vagrantの中に入ってDeployします。
vagrant ssh cd /vagrant wordmove push -wtplv -e heteml
オプション周りはhelpを見てある程度ご察しください。基本的には、git管理されるであろう部分をそのままDeployのオプションに加えているイメージです。
Options: -w, [--wordpress], [--no-wordpress] -u, [--uploads], [--no-uploads] -t, [--themes], [--no-themes] -p, [--plugins], [--no-plugins] -l, [--languages], [--no-languages] -d, [--db], [--no-db] -v, [--verbose], [--no-verbose] -s, [--simulate], [--no-simulate] -e, [--environment=ENVIRONMENT] -c, [--config=CONFIG] [--no-adapt], [--no-no-adapt] [--all], [--no-all]
-e
は、WordMove
で設定した名前みたいなものです。stagingとか、productionとか複数設定できるので、非常にべんりー
ちなみに、
wordmove pull --all -e heteml
こうすると、サーバ上のDBやらいろいろ全て取ってきて、いい感じに手元に反映してくれます。これで開発環境すらない環境でもさくっと開発環境が作れるかも!?但し、DBの容量が大きかったり、uploadsフォルダの中に結構ファイルが入ってると上手く動かないかもしれませんねぇ。
注意点としては、↑のコマンドのpullをpushに変えるとローカルの内容を全てサーバ上に反映してしまいます。DB周りはバックアップを取ってくれるらしいのですが、uploadsフォルダなどはどうなんでしょうね。この辺は、誤ってこういう事が置きないようにシェルスクリプトで指定したコマンドのみ実行するなどの対策をしておきたいところです。
一先ず、これでDeployも完了〜
git管理に追加する
VCCWでは、.gitignore
でWordPressのソースや、Movefileなど、無視するようになっています。git管理しとかないと、チームで共有出来ないので、以下のファイルについては無視しないようにしました。
Movefile www site.yml
また、WordPressのソース自体にも、.gitignore
があって、.htaccess
を無視するようにしていたので外しました。以下の場所にあります。
www/wordpress/.gitignore
.htaccess
はApacheだけに作用するものなのでデフォルトで無視するようにしているんですかね?今回はhetemlでApacheなので無視しないようにしました。
以上で一通り終わり!
と思ったけど、VCCWがバージョンアップした時にこのやり方だと、ちょっと面倒くさいかも?という感じ。。
最後に
いかがでしたでしょうか?今までWordPress微妙にしか絡んでこなかったですが、WordMoveが便利過ぎてすごい!という感じになりました。今後もあまり絡む機会はないと思うけど、Deployの自動化などは出来そうであればやってみたいなぁと思います。