【Conoha】WordMoveでローカル環境と本番環境を同期してみたぞいっ【VVV】
こんにちは、Reoです。
今回は、WordMoveを使ってローカル環境から本番環境(ConohaのVPS)にデプロイしてみました記事です。
してみましたと言っていますが、実はまだしていません(!)
今からやりながらついでに記事も書いちゃおうという画策です。
今回の前提
vagrant環境(VVV)で作ったWordPressサイトを、WordMoveを用いて、ConohaのVPS(KUSANAGI)に同期することが今回の目標です。
大枠は以前書いた記事「VVV+WordMoveでWordPressのローカル環境を構築するぞッ!【Xserver】」の通りなのですが、今回は本番環境がXserverではなく、Conohaになります。
なので今回の前提は
- 「VVV+WordMoveでWordPressのローカル環境を構築するぞッ!【Xserver】」の1~3までができている状態。
- 本番環境はConohaのVPS (Kusanagi環境)
- Conoha側では、KUSANAGIのプロビジョニングが終わっていて、既にWordPressがインストールされている状態
です。
ConohaもVPSを使うのもKUSANAGIを使うのも初めてなのですが、頑張ってやっていこうと思います。
普段はXserverを使っているので、レンタルサーバーとVPSってこんなに違うんやと驚いているところですよ・・・。
ConohaでのKUSANAGIの使い方は公式を見るのが一番わかりやすかったです。
SSH接続できるようにしよう
ここまで来るのに5時間はかかった。つらい。もう記事どころじゃなかった。
SSH接続できるようにしようと思ったところ、ConohaのVPSの初期設定はどこからでも接続できるゆるふわ設定になってました。公開鍵等々の作業を全部したところで、公開鍵なしだと接続できないはずだとやってみたら接続できてしまい、そこの設定からやっていました。
vagrantの方のsshが鍵でできなくなり、パスワードを求められ、パスワードがわからず頭を抱え・・・。とてもつらかった・・・。
それはともかく本題ですが、
ConoHaでVPSを借りて、SSH接続などの初期設定 - tkm_71のブログ
の
以下の記事と合わせてやればなんとかなるはずです。
ConohaにVPSを設置して、SSHログイン、ポート番号変更、rootログイン禁止までを30分で!
最初後者の記事見てやってたんですけど、あれですね、コピーするの秘密鍵と公開鍵で間違えてたんですねえorz ナルホド上手くいかないわけだ・・・。
一度設定を全部戻して前者の記事で1からやったら上手くいったので、下手しなければそこまでハマらないはず・・・。
Movefileを用意する
やっと本題の本題に入れました。
vagrant sshで接続した状態で、
gem install wordmove
rubyのバージョンが低くて無理だよって言われた場合は、
CentOS 7.3にRuby 2.4.1をインストールする
を参考にアップデートしてください。自分は2.5.1にupdateしました。
yumがなかったらapt-get install yumでインストールしてからRubyのインストールをしてください。
インストールできたら
cd /srv/www/同期したいフォルダ/htdocs
に移動し、
wordmove init
をします。
movefile.ymlが生成されればおk。
movefile.ymlを編集していきます。
vi movefile.yml
以前の記事同様、VVVで製作中のhttp://damp.testを同期するというファイルは以下のようのようになります。
global:
sql_adapter: default
local:
vhost: http://damp.test # ローカルのアドレス ①
wordpress_path: /srv/www/damp/htdocs # use an absolute path here
database:
name: damp
user: wp
password: "wp" # could be blank, so always use quotes around
host: localhost
production:
vhost: http://uruly.xyz/damp # 実際に運用中のサイトURL ②
wordpress_path: /home/kusanagi/プロファイル名/DocumentRoot # WordPressのpath ③
database:
name: データベース名 # ④
user: データベースのユーザ名 # ⑤
password: データベースのパスワード #⑥
host: VPSのIPアドレス #⑦
ssh:
host: VPSのIPアドレス # ⑧
user: ユーザ(root以外を作成したやつ) # ⑨
# password: password # password is optional, will use public keys if available.
port: 10022 # Port is optional
rsync_options: '--verbose --rsync-path="sudo /usr/bin/rsync"'
①vvで作成した際のhosts:部分 ②実際に運用中のサイト(同期したいサイトのURL) ③②の配置されている場所。kusanagiのプロビジョン設定をした際に指定したプロファイル名下のドキュメントルート ④kusanagiプロビジョン時に設定したデータベース名 ⑤kusanagiプロビジョン時に設定したデータベースのユーザ名 ⑥データベースのパスワード ⑦VPSのIPアドレス ⑧VPSのIPアドレス ⑨前段階でSSH接続できるようにしたユーザ名
大事なのがrsync_optionsのところです。
この状態で
wordmove push -e production -t
としてみると
sudo: no tty present and no askpass program specified
とかいうエラーが出ます。 むしろこれが出ていれば今はおkで。
--rsync-pathの設定がないときは
rsync: [sender] write error: Broken pipe (32) rsync error: error in rsync protocol data stream (code 12) at io.c(837)
と言ったエラーとともにPermission deniedが大量に出ます。
そもそもパスフレーズを打つ画面にもならない場合は鍵の設定までが上手くいってないのだと思います。ssh ユーザ名@IPアドレス -p ポート番号 でそもそも接続できるのか等のチェックをしてください。
ここもかなりハマった。以下の記事で助かりました。ありがとうございます。 さくらVPS の契約を追加して rsync でまるっと移行してみた - HAM MEDIA MEMO rsync でまるっと移行してみたと思ったらまるっと移行できていなかったので対応を加えた(特定のコマンドだけtty無しのsudoを許可する方法) - HAM MEDIA MEMO
パーミッションエラーを回避
ttyがなくてsudoが実行できないよ的なエラーが出ている段階まできたら、あと一歩です。
Conoha側でログインします。
cd /etc/
vi sudoers
でsudoresというものを編集します。 56行目あたりにあるDefalutsの下に1文足します。
Defaults requiretty
Defaults!/usr/bin/rsync !requiretty
さらに下の方にある、%wheeの下にも1文足します。
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) ALL, (root) NOPASSWD: /usr/bin/rsync
これで保存しておk。
最後にvagrant側に戻って改めて
wordmove push -e production --t
をすればいけるはずです!!!!!!!!
DBだけエラーが出る場合は続きの記事を書きましたので是非に〜
丸一日かかった。。。。
最初に実際にやりながら記事を書くと言いましたが、この記事を書き始めたのが昨日の朝9時くらいで、今13時にようやく本番環境との同期をすることができました。
いやーーーーね。夜はしっかり寝ましたけど。昨日一日中戦ってたんですよ。
実のところ、vagrant環境が2度ほど死にました。
最初は秘密鍵か公開鍵がどっかにいってしまいログインできなくなり、vagrant sshしてパスワードを求められるもパスワードって何?!知らない!!!やばい!!!ってなりまして。vagrantのパスワード自体は「vagrant」である可能性が高いので、すぐにログイン自体はできたんですけどね。
それで、公開鍵をどうの秘密鍵をどうのして、vagrant destroyしたら色々全部の設定があぼーんしたわけです。いや、このくらいは実際大したことなかった。
2度目の破壊がやばくてですね。vagrantに接続したらアップグレードしてよと書いてあって、それを迂闊に'do-release-upgrade'したら、全部の環境が死んでvagrant upも何もできなくなってしまいました。
いやーもうちょっと下調べして望むべきでした。本当に迂闊だった。
結局それはvertualBox自体の再インストールからやり直して、また最初からyumのインストールしてrubyのアップデートしてwordmoveをインストールして・・・。
鍵も消えたので公開鍵と秘密鍵の生成も最初からして・・・。
あまりに酷い行程だったので、記事自体を書くのも公開も何度やめようと思ったことか。
ただ、結局この記事の内容を上から順に4周ぐらいしたんです。鍵のところはもっとしたかもしれない。
何度も最初からやらなきゃいけなくなったので、この記事内容を上からやっていくことで、一度成功したところで行き詰まることも、あれってどうするんだっけ、どこみたんだっけってことがほとんどありませんでした。
なので書いててよかったです。備忘録にしても酷い記事な気もするけど。せっかく最後までいけたので公開もしていきます。
ただ、ちょっとDBのhostだけわからない。。。。wordmoveでも最後にエラーが出てるんですが、実際に見にいってみるとどこが失敗してるかわからない程度にはちゃんと同期ができているんですよね。
わかり次第追記させていただきます。
修正、追記しておきました。普通にdb同期できてませんでした。別記事で書きました。WordMoveでDBのみ同期できない時の対処法メモ。
ConohaのVPSとは上手くいくようになりましたが、自分のXserverの方が死んだままなので時間あるときに直さねばです。まだまだ戦いは終わらない・・・。
ではでは、何か参考になることがあれば嬉しいです。
参考リンク
- KUSANAGIのプロビジョニング – KUSANAGI
- CentOS 7.3にRuby 2.4.1をインストールする
- ConoHaでVPSを借りて、SSH接続などの初期設定 - tkm_71のブログ
- さくらVPS の契約を追加して rsync でまるっと移行してみた - HAM MEDIA MEMO
- rsync でまるっと移行してみたと思ったらまるっと移行できていなかったので対応を加えた(特定のコマンドだけtty無しのsudoを許可する方法) - HAM MEDIA MEMO
- rootだけtty無しのsudoを許可
- vagrant global-status --pruneでゾンビ仮想マシンを削除する · DQNEO起業日記
- Wordmoveの基本操作
コメントはありません。
現在コメントフォームは工事中です。