先日、JS+Node.jsによるWebクローラー/ネットエージェント開発テクニックという本を購入したのですが、そこに仮想マシン上での開発環境の構築方法が書かれてあり、すごい便利そうだと思ったのでメモ(自分が利用しているOSがWindowsのため、Windowsでの構築方法となります)。
仮想マシン構築の準備には、VirtualBox(Downloads – Oracle VM VirtualBox)とVagrant(Download Vagrant – Vagrant)のインストールが必要。詳しく書くと冗長なので(というより面倒なので)、下記を参考。
参考:VirtualBoxをWindowsにインストール | VirtualBox Mania
参考:Vagrant をWindowsにインストールする手順 | WEB ARCH LABO
インストールを終えた後は、仮想マシンを作成したいディレクトリを作成します(どこでもいいです)。そのディレクトリ上で、コマンドプロンプトを開いて、『vagrant init』というコマンドを実行します(余談ですが、エクスプローラからコマンドプロンプトを開くには、「Alt」+「D」でカーソルをアドレスバーに移動し、『cmd』と入力してエンターキーを押すだけで、カレントディレクトリを引き継がれたまま、コマンドプロンプトを開きます。参考:(追記あり)Windowsエクスプローラからコマンドプロンプトを一瞬にして開く方法 | ライフハッカー[日本版])。
すると、ディレクトリ内に、Vagrantfileというファイルが作成されます。このファイルをメモ帳などのテキストエディタで開いて、config.vm.boxを下記のように記述します。これは、Boxファイルという、仮想マシンファイルを自動でダウンロードするように指示する指定です。
# config.vm.box = "base" config.vm.box = "puphpet/centos65-x64"
書籍のほうでは、『chef/centos-6.5』となっていますが、この指定では利用できなくなったようです(参考:Node.jsによるWebクローラー開発テクニック – クジラ机ブログ)。
Discover Vagrant Boxes | Atlas by HashiCorpに記載のある値なら、うまくいくようです。
ついでなので、書籍を参考に作った自分の環境でのVargantfileを下記にリンクしておきます。
Vagrantfile
先ほどのconfig.vm.box以外だと、config.vm.networkのコメント(最初の#)を外し、config.vm.synced_folderで二箇所のフォルダを共有するようにしています。
config.vm.synced_folder "./data", "/vagrant_data" config.vm.synced_folder "./home-src", "/home/vagrant/src"
上記の指定だと、Vagrantファイルのあるディレクトリ内のdataというディレクトリを、仮想ディレクトリのルートにあるvagrant_dataと共有するようにしています(home-srcディレクトリについても同じ)。ここで気をつけてほしいのが、仮想マシンにあるディレクトリを共有指定にしないようにしてください。試しにやってみたところ、中身が空になってしまいました(といっても、config.vm.synced_folderの指定を外せば元に戻ります)。
その後、『vagrant up』と実行すると仮想マシンが起動します。初回は、Boxファイルがダウンロードされるため少し時間がかかります。
仮想マシンにログインするには、SSHの情報が必要です。『vagrant ssh』というコマンドを実行すれば、SSH接続に必要な情報が表示されます。自分の環境では下記のようになりました。
C:(仮想マシンを作成したフォルダパス)>vagrant ssh `ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use your favorite SSH client with the following authentication information shown below: Host: 127.0.0.1 Port: 2222 Username: vagrant Private key: C:(仮想マシンを作成したフォルダパス)/.vagrant/machines/default/virtualbox/private_key
Host:以降がSSH接続に必要な情報です(それより上は、SSH接続できないので、Cygwinなどを使うようにという記述だと思われるので、気にしなくてよさそうです)。
というわけで、つづいて、SSHクライアントをダウンロードします。書籍ではPuttyやTeraTermやPoderosaなどがあると紹介した後に、Poderosaを利用してあるのですが、調べてみると不安定とあったので、業務でも使ったことがあるTeraTermを使うことにしました(Tera Term – 窓の杜ライブラリ)。
インストールした際に、拡張子ttlを関連付けさせておくといいと思います。その後、自動ログイン用のTTLファイルを下記サイトを参考に作成します。
参考:TeraTermマクロサンプル-SSH自動ログイン(接続情報固定版) | Tera Term(テラターム)の便利な使い方
自分は下記のようにしました。
;; 接続先ホスト/ユーザ名/パスワード設定 HOSTADDR = '127.0.0.1' USERNAME = 'vagrant' PASSWORD = 'vagrant' ;============================================== ;; ①コマンド組立て COMMAND = HOSTADDR strconcat COMMAND ':2222 /ssh /2 /auth=password /user=' strconcat COMMAND USERNAME strconcat COMMAND ' /passwd=' strconcat COMMAND PASSWORD ;; ②接続 connect COMMAND ;; ③マクロ終了 end
ついでに、vagrant-up.batという名前で、バッチファイルも作成します。
vagrant up start "" "teraterm.ttl"
これで、このバッチファイルを実行するだけで、仮想マシンが起動し、自動的にTeraTermも立ち上がってログインするようになりました(本当は、TeraTermを終了すると仮想マシンを停止するようにしたかったのだけど、うまくいきませんでした)。
探してみると、Vagrant TeraTermというプラグインを見つけたのですが、自分の環境ではうまく動きませんでした(ダウンロードはできたように見受けられるのだけど……)。
参考:Vagrant Teraterm pluginを作ってみた – Qiita
参考:vagrant teraterm が便利すぎてしょうがない件 – 戦場のプログラマー
ログイン後は、下記のコマンドを実行しましょう。こうすることで、時刻を日本標準時刻に合わせることができます(参考:サーバー(CentOS 6.4)の時刻を日本標準時刻に合わせる – ponkiti’s blog)。
$ sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime
というわけで、開発環境も作成できたので、もう少し触っていきたいと思います。
コメント