wordmoveができない! RLoginからvagrantを踏み台にしてエックスサーバへssh接続する方法

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公開鍵・秘密鍵を作っていない人は次の記事を参照.

windowsでssh公開鍵 秘密鍵 を作成する方法
こんにちは。たきもとです。 先日に引き続き、Gitの話題です。 GitLab使用環境構築が終わるまではGit関連の記事が続きます。 ...

VCCWをインストールしていない人は次の記事を参照.

windows8.1にvagrant,VCCWでWordPressローカル開発環境を構築する方法
こんにちは。たきもとです。 先日は301リダイレクトの設定について紹介しました。 WordPress 301リダイレクトによるパーマ...

対象読者

本記事は次のような人を対象にしている

  • 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 Keyssh秘密鍵 を設定
  • エージェント転送 有効化

ssh秘密鍵の設定方法は次の通り.

  1. SSH Identity Key をクリック
  2. ssh秘密鍵 を指定

以下ではこの2点について紹介する.

SSH Identity Keyssh秘密鍵 を設定

windows8.1の場合, ssh秘密鍵は次の場所にある.
C:/Users/ユーザ名/.ssh/id_rsa

01_rlogin_sshidentitykey

エージェント転送 有効化

設定は次の画像の通り.

02_rlogin_protcol

RLoginではこの処理によって ssh-agent が実現できる.

エージェント転送・・・ ユーザー認証を行うエージェント転送を有効にしssh-addを使用して認証キーの追加・削除を行うことができます(SSH2のみ)

3.3 プロトコルのオプション設定 | RLogin (2.21.0)

sshフォワーディングの確認

実際にssh フォワーディングができてることを,ゲストマシンからエックスサーバへssh接続することで確認する.

まず,秘密鍵設定 及び エージェント転送設定 していない場合のssh接続結果.

publickeyがどうたら、という具合にアクセス権限周りで怒られる.

次に先述した設定をした上でssh接続を試した結果.

今度は上手くいった.

Movefile作成手順とざっくりとした解説

ここまで設定したら,あとはwordmoveを実行すれば完了.
ここでは簡単にMovefileの書き方を紹介する.

基本的には, 設定箇所のコメントアウト # を取り除いて編集する方針.

手順は次の通り.

  1. Movefile作成: wordmove init
  2. local: 部分編集
  3. staging: 部分編集

local: 部分編集

wordmoveは Movefile が存在するディレクトリで実行する.
次のコマンドで Movefile が生成される.
wordmove init を打ち込まなくても既にMovefileがある場合もある.

$ cd /vagrant
$ wordmove init

Movefileはいくつかのブロックに分かれているので,一つ一つ確認してゆく.

local: ローカル環境情報設定箇所

このブロックは ローカル環境の情報 を設定する箇所.
vhost はurlバーに入力したいアドレス.
vagrant up時に設定ファイルで指定したホスト名になっている.

wordpress_path 配下に wordmove pull --all した時にデータが格納される.

database はMySQLのログイン情報.
よく mysql -u xxxx -h zzzzzzzz -p って打ち込むアレ.

staging: 本番環境(エックスサーバ) 情報設定箇所

このブロックは 本番環境(今回はエックスサーバ)の情報 を設定する箇所.
vhostは絶対パスで指定. エックスサーバにログインしてpwdでpathを取得しよう.

気を付けないといけないのは,エックスサーバで複数のDBを作成している場合.

WordPressはDBにMySQLを採用している.
エックスサーバは複数のWPを入れることができるので,その数に応じてDBも増える.
私は過去に複数のDBを作成していたのでココの指定で若干ハマった.
vhostで指定したWPデータが格納されているDB, ユーザ名等を適切に指定しよう.

exclude: 除外ファイル指定箇所

このブロックは 除外ファイル指定箇所 .
初回の wordmove 時は .htaccess の指定は不要.
一度 wordmove pull --all した時に不具合があったので,localで.heaccess編集後にexcludeに指定.
詳しくは後述します.

ssh: ssh接続設定箇所

このブロックは ssh接続設定箇所 .
今回はホストマシンの秘密鍵を使いまわしてsshフォワーディングを行う方針だった.
コメントアウトされている箇所はそのままにして,設定が必要な箇所だけ紹介.

port: エックスサーバのポートは指定されている.
公開鍵を登録したときも紹介したので次の記事を参考にして欲しい.

[Windows]Rloginからエックスサーバーにssh接続する方法
今回はRloginからエックスサーバへssh接続する方法を紹介します。 概要は次の通り。 私がRloginでエックス...

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.

rsync | SS64.com

wordmove pull --all を実行

ここまでできたらエックスサーバ上のデータをローカルに引っ張ってみる.
次のコマンドを実行.

$ cd /vagrant
$ wordmove pull --all

ブラウザに Movefile で指定したホスト名を入力し表示確認を行う.

ここで次のようなエラーに遭遇.
Internal Server Error

次のファイルを編集することで解決.
$ vi ~/vccw/www/wordpress/.htaccess

次の文言から始まる全ての行を コメントアウト or 削除 する.

  • suPHP
  • AddHandler
  • FCGIWrapper

改めてブラウザで表示確認.

05_wordmove_result

ここまでのまとめ

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.

CREATING A BASE BOX_Vagrant by HashiCorp

今回は以上.

スポンサーリンク
336 x 280 – レクタングル(大)
336 x 280 – レクタングル(大)
  • このエントリーをはてなブックマークに追加

この記事が気に入ったら
いいね!しよう

トップへ戻る