wordmove pull --all
を試したができなかった.
原因はssh周辺設定だった.
解決までに随分時間を費やしたのでメモ.
結論は次の通り.
- RLoginに秘密鍵を覚えさせる
- ゲストマシン(centOS)からエックスサーバにssh接続確認
今回の記事では結論のみを紹介する.
動作環境
- windows8.1, 64bit
- Vagrant 1.8.1
- VCCW V2
- RLogin 2.20.4
前提条件
PCの環境等前提条件は次の通り.
- ssh秘密鍵, 公開鍵 作成済
- VCCW (v2) インストール済
- エックスサーバへssh公開鍵設置済
ssh公開鍵・秘密鍵を作っていない人は次の記事を参照.
https://kengotakimoto.com/post-1718/
VCCWをインストールしていない人は次の記事を参照.
https://kengotakimoto.com/post-1552/
対象読者
本記事は次のような人を対象にしている
- windows + vccw + RLoginでwordmoveを行いたい人
- RLoginでゲストマシンからエックスサーバへ接続したい人
- ssh秘密鍵・公開鍵 を新規作成せずに使い回したい人
結論
長くなるので先に結論から.
RLoginからvagrantへログインするときに秘密鍵を覚えさせておく.
踏み台(Vagrant/CentOS)でssh鍵を新規作成する必要はない.
これによって次のことが実現できる.
- ゲストマシンからエックスサーバへssh接続
wordmove pull --all
,wordmove push --all
が可能
ここではこの2点とMovefileの書き方をサクッと解説する.
ゲストマシンからエックスサーバへssh接続
Macにおける vagrant ssh
は次の欄を埋めればRLoginで実現可能.
- Server Address: 任意.(普通は
192.168.33.10
) - User Name:
vagrant
- Password:
vagrant
ホストマシン->ゲストマシン->エックスサーバ
のような多段接続をするにはさらに次の作業が必要.
SSH Identity Key
にssh秘密鍵
を設定- エージェント転送 有効化
ssh秘密鍵の設定方法は次の通り.
SSH Identity Key
をクリック- ssh秘密鍵 を指定
以下ではこの2点について紹介する.
SSH Identity Key
に ssh秘密鍵
を設定
windows8.1の場合, ssh秘密鍵は次の場所にある.
C:/Users/ユーザ名/.ssh/id_rsa
エージェント転送 有効化
設定は次の画像の通り.
RLoginではこの処理によって ssh-agent が実現できる.
エージェント転送・・・ ユーザー認証を行うエージェント転送を有効にしssh-addを使用して認証キーの追加・削除を行うことができます(SSH2のみ)
sshフォワーディングの確認
実際にssh フォワーディングができてることを,ゲストマシンからエックスサーバへssh接続することで確認する.
まず,秘密鍵設定 及び エージェント転送設定 していない場合のssh接続結果.
[vagrant@ホスト名 ~]$ ssh -p 10022 ユーザ名@サーバ名.xsrv.jp
Permission denied (publickey,gssapi-with-mic).
publickeyがどうたら、という具合にアクセス権限周りで怒られる.
次に先述した設定をした上でssh接続を試した結果.
[vagrant@ホスト名 ~]$ ssh -p 10022 ゲスト名@サーバ名.xsrv.jp
Last login: Wed Nov 23 16:59:53 2016 from xxxxxxxxxxxxxxxxxxxxxxxx.access-internet.ne.jp
[サーバ名@sv1212 ~]$
今度は上手くいった.
Movefile作成手順とざっくりとした解説
ここまで設定したら,あとはwordmoveを実行すれば完了.
ここでは簡単にMovefileの書き方を紹介する.
基本的には, 設定箇所のコメントアウト #
を取り除いて編集する方針.
手順は次の通り.
- Movefile作成:
wordmove init
local:
部分編集staging:
部分編集
local:
部分編集
wordmoveは Movefile
が存在するディレクトリで実行する.
次のコマンドで Movefile が生成される.
wordmove init
を打ち込まなくても既にMovefileがある場合もある.
$ cd /vagrant
$ wordmove init
Movefileはいくつかのブロックに分かれているので,一つ一つ確認してゆく.
local: ローカル環境情報設定箇所
local:
vhost: "https://kengotakimoto.com/" #既に入力されている
wordpress_path: "/home/fx-takimoto/kengotakimoto.com/public_html" #ここはデフォルトのままでok.
database:
name: "wordpress" #ここもデフォルトでok
user: "wordpress" #ここもデフォルトでok
password: "wordpress" #ここもデフォルトでok
host: "localhost" #ここもデフォルトでok
このブロックは ローカル環境の情報 を設定する箇所.
vhost はurlバーに入力したいアドレス.
vagrant up時に設定ファイルで指定したホスト名になっている.
wordpress_path 配下に wordmove pull --all
した時にデータが格納される.
database はMySQLのログイン情報.
よく mysql -u xxxx -h zzzzzzzz -p
って打ち込むアレ.
staging: 本番環境(エックスサーバ) 情報設定箇所
staging:
vhost: "https://kengotakimoto.com/"
wordpress_path: "/home/サーバID/サイトURL/public_html" # use an absolute path here
database:
name: "DB名"
user: "↑のDBのユーザ名"
password: "パスワード"
host: "MySQL"
charset: "utf8" #文字コード
このブロックは 本番環境(今回はエックスサーバ)の情報 を設定する箇所.
vhostは絶対パスで指定. エックスサーバにログインしてpwd
でpathを取得しよう.
気を付けないといけないのは,エックスサーバで複数のDBを作成している場合.
WordPressはDBにMySQLを採用している.
エックスサーバは複数のWPを入れることができるので,その数に応じてDBも増える.
私は過去に複数のDBを作成していたのでココの指定で若干ハマった.
vhostで指定したWPデータが格納されているDB, ユーザ名等を適切に指定しよう.
exclude: 除外ファイル指定箇所
exclude:
- ".git/"
- ".gitignore"
- ".sass-cache/"
- "bin/"
- "tmp/*"
- "Gemfile*"
- "Movefile"
- "wp-config.php"
- "wp-content/*.sql"
- ".htaccess" #初回の`wordmove pull --all`時はここの設定不要
このブロックは 除外ファイル指定箇所 .
初回の wordmove
時は .htaccess の指定は不要.
一度 wordmove pull --all
した時に不具合があったので,localで.heaccess編集後にexcludeに指定.
詳しくは後述します.
ssh: ssh接続設定箇所
ssh:
host: "サーバホスト名"
user: "ユーザ名"
port: 10022 # エックスサーバはこのポート番号
rsync_options: "--verbose" # 転送オプション
このブロックは ssh接続設定箇所 .
今回はホストマシンの秘密鍵を使いまわしてsshフォワーディングを行う方針だった.
コメントアウトされている箇所はそのままにして,設定が必要な箇所だけ紹介.
port: エックスサーバのポートは指定されている.
公開鍵を登録したときも紹介したので次の記事を参考にして欲しい.

rsync_options: 転送設定. サーバとの通信中に,どのファイルをスキップした~等の情報を表示する.
詳しくは次のサイトが詳しく書いてあった.
rsync
Remote file copy (Synchronize file trees)
-v, –verbose
This option increases the amount of information you are given during the transfer.
By default, rsync works silently.
A single -v will give you information about what files are being transferred
and a brief summary at the end.
Two -v flags will give you information on what files are being skipped and
slightly more information at the end.
More than two -v flags should only be used if you are debugging rsync.
wordmove pull --all
を実行
ここまでできたらエックスサーバ上のデータをローカルに引っ張ってみる.
次のコマンドを実行.
$ cd /vagrant
$ wordmove pull --all
ブラウザに Movefile
で指定したホスト名を入力し表示確認を行う.
ここで次のようなエラーに遭遇.
Internal Server Error
次のファイルを編集することで解決.
$ vi ~/vccw/www/wordpress/.htaccess
次の文言から始まる全ての行を コメントアウト or 削除 する.
- suPHP
- AddHandler
- FCGIWrapper
改めてブラウザで表示確認.
ここまでのまとめ
RLogin があれば多段接続できるよ
RLogingの設定のみでsshフォワーディングが実現できた.
ネットで情報収集をすると次のものがよく見られるが,その必要はない.
- Cygwinをinstall.
- ゲストマシン内でssh鍵を新規作成
- ゲストマシン内にssh秘密鍵,公開鍵 設置
ssh鍵の新規作成や, ツールの導入は不要だよ.
wordmove 実行時はMovefileの中身をよく見ようね
Movefileはインデント指定が厳しいので注意.
「細かいことはいいからRLoginでwordmoveがしたい!」 という人は本記事の内容だけで十分だろう.
でもね, 引っ張ってくるデータベースやテーブルのプレフィックスをしっかり確認しないとローカルで期待通りの表示をしてくれないんですよ.
私はDBの確認不足 & ssh-agent でハマりました.
ssh周辺知識が必須
今回は簡単に解決したように見えるが,実は1週間ほど時間を費やした.
完全に理解しなくても, ssh秘密鍵・公開鍵が何なのかは知らないとデバッグができない.
Vagrantは自動でssh鍵を内部で生成しているから,HashiCorp本家のマニュアルを併せて読むのがおすすめ.
次の引用はBoxを自作する際に必ず目を通す項目.
“vagrant” User
By default, Vagrant expects a “vagrant” user to SSH into the machine as.
This user should be setup with the insecure keypair that Vagrant uses as a default to attempt to SSH.
Also, even though Vagrant uses key-based authentication by default, it is a general convention to set the password for the “vagrant” user to “vagrant”.
This lets people login as that user manually if they need to.
今回は以上.