チラシの裏の書き置き

技術的な話をするブログのタイトルじゃない気がする

Windowsでvagrant sshする

Vagrantの機能にvagrant sshするとその場で立ち上げたVMに入れるというのがあるのですが、Windowsだと標準で使えません。
TeraTermとか使って接続すればいいだけなのですが、ユーザー名とパスワード入れるのも面倒。

それならssh.exeにパス通せばいいじゃない!

sshを同梱しているようなソフトは無いと思いがちですが、Gitに搭載されているので、Gitのbinフォルダにパスを通すだけで使えるようになります。
Gitのインストール時に「Run Git and included Unix tools from the Windows Command Prompt」を選んでいる場合は通っていますが、
選んでいない場合は各自でパスを通す事になります。
自マシン(Win7 64bit)だとこの2箇所にパスが通っていました。

C:\Program Files (x86)\git\cmd;
C:\MinGW\msys\1.0\bin;

それぞれにssh.exeがあります。

後はコマンドプロンプトなりPowerShellssh -vってやって応答が返ってくれば設定完了です。

C:\> ssh -v
OpenSSH_5.4p1, OpenSSL 1.0.0 29 Mar 2010
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]

OpenSSH_5.4p1が入っているようです。
ここまで確認できれば、後はvagrant sshでお楽しみ下さい。

C:\vagrant> vagrant ssh
Last login: Fri Mar 14 05:05:51 2014 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$

弱点として、コマンドプロンプトPowerShellも、文字エンコードがShift-JISのようで場合によっては文字化けしてしまいます・・・。
vagrant sshする時はデーモンの再起動とか設定変更なのであまり関係無い気はしますが、ここだけ注意です。

Vagrantのsynced_folderが超絶便利なんだけど、落とし穴があった件

最近、社内ではVagrantを使っています。最近のIT企業っぽくてかっこいい。

こんな環境です。

今まではSublimeTextからSFTPプラグインを使ってVagrantの仮想環境に転送していたけど、ある日VagrantFileを見てみると「config.vm.synced_folder」なる項目を発見。
どうやら、ローカルのフォルダと仮想環境のフォルダを同期してくれるらしいので使ってみるとこれまた便利。
わざわざSFTPで転送せずとも、そのままの状態で表示されるじゃん・・・!

ApacheのWebroot下のいくつかのフォルダを、/vagrant/source以下にマウントしたフォルダにシンボリックリンクさせるという手法を取って運用していました。
こんな感じで。

C:\~\project <--synced_folder--> /vagrant/source/~ <-- ln="" -s="" --=""> /var/www/~

ただし、この運用にはいくつかの落とし穴がありました。

静的ファイルが更新されない

CSSとかJavascriptとか、一部に編集を加えてもApacheから読み出した時に変っていなく、マウント先を直接viとかで見ていると変っている不思議な現象。
中身を全部消すと反映されるのですが・・・。

調べて見ると、VirtualBoxNFSに起因するバグだった模様。
Vagrantの共有フォルダをApache(Nginx)のDocumentRootに指定するとレスポンスがおかしくなる奇妙な現象の解決方法 #vagrant - OTメモ帳
EnableSendfile Offがコメントアウトされていたので、解除してApacheを再起動すると無事に反映されるようになっていました。
めでたし。

Apacheが起動しない

仮想マシンの起動時にApacheも一緒に立ち上がっているはずなのですが、何故か立ち上がってないという現象にも遭遇。
vagrant sshで接続して、$ sudo /etc/init.d/httpd startすると普通に起動するので、起動時にのみコケている模様。
エラーログを見ても原因がつかめなかったため、同時期に設定したシンボリックリンクの設定をやめ、Webroot以下のフォルダに直接synced_folderを設定する事でApacheが立ち上がるようになりましたが・・・原因は謎。

C:\~\project\~ <--synced_folder--> /var/www/~

とりあえず、無事に使えているのでよしとします。