はかますたいる!きょろの技的雑記

井上恭輔(@kyoro353)の私的かつ技的な日記です。米国サンフランシスコで暮らすエンジニアです。

MacOSでVirtualBoxを使って開発環境を作ったのでメモ

MacOSのマシンに開発環境を構築することになった。
macportsでチマチマと開発環境を作るより、VMでLinux使って作ったほうがいいよ!」と言われたので、そのプランでやってみることにした。
ちなみに、ThinkPadはデフォルトのブートはWindowsなんだけど、やはり開発環境はVMでローカルに構築している。

VMにはVirtualBoxを使う

昔はVMWareだったのだけど、最近はよくVirtualBoxを使う。
ダウンロード時に入力を求められないとか、フルスクリーン時のコントロールエリアの表示がシンプルで好きとか、いろいろあるけど、どちらかと言えば気分的な問題なので特に意味はない。


Download VirtualBox


ここからdmgが落とせるのでそのまま落としてインストール

ゲストOSはUbuntu 10.10 Server

ゲストOSにはUbuntu 10.10のサーバ版を使った。
自分はメインのサーバにはFreeBSDを昔からずっと使っているのだけど、仕事もずっとLinuxだし、なにより簡単で便利なので、ごちゃごちゃ言うよりもうUbuntu一択でいんじゃね、って最近は思うようになってる。
どうせGUIは使わないのでサーバ版をいれた。実はサーバ版は初めて使ったのだけど、シンプルでいいね。


Get Ubuntu Server Edition Download

VM&インストール

次にvmを作る。名前はubuntuとかにして、メモリは1GB割り当て。HDDは15GB。
MacBook Airだったので若干節約気味だけど、開発用なので特にキツイって感じもしない。
ubuntuのisoイメージをマウントしてそのままインストール。何も悩まず次々選択していけばインストール完了。まじ楽。

sshd入れる

ubuntuにsshdを入れる。

$ sudo aptitude install ssh

次にsshd_configをいじる。

 $sudo vi /etc/ssh/sshd_config

#ルートログインを閉じる
PermitRootLogin no

#ローカルからしか繋がないので公開鍵じゃなくてパスワードにした。コメントアウトしてあるので外す。
PasswordAuthentication yes

#再起動
$ sudo /etc/init.d/ssh restart

VirtualBox側のポートフォワード設定

VMはNATでネットワークに接続する。
しかし、ローカルからVMの開発用サーバに接続したいので、ホスト側にポートフォワードを設定して対処する。


VMをVirtualBoxごと終了し、ターミナルを開いて次のコマンドを投入。
パスは標準で通ってる。

/* ssh の設定 */
VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/HostPort" 5022

/* http の設定 */
VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guesthttp/Protocol" TCP
VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guesthttp/GuestPort" 80
VBoxManage setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guesthttp/HostPort" 5080

これでホスト側5022がゲストの22(SSH)に、5080が80(HTTP)にフォワードされる。


最初、ネットに落ちてた情報を見てpcnetにしてたんだけど、ここは実際に設定されているNICに合わせないとエラーで起動しなくなる。
NICはデフォルトでIntelが選択されるのでe1000を使うようにしよう。


変な設定を行うとVMが起動しなくなる。
そんなときはVMの設定ファイルから項目を直接削除して再設定した。

/Users/kyoro/Library/VirtualBox/Machines/ubuntu/ubuntu.xml

とかにあるExtraDataItemで見覚えがあるのがあれば、それを消す。

接続テスト

ssh -p 5022 kyoro@localhost

つながった!

VirtualBoxのウインドウが常に出てるのって意外とウザイ。
なので、コマンドでVMの制御を行う。

#VMの列挙
VBoxManage list vms

#起動
VBoxManage startvm "ubuntu"

とりあえずこれでいろいろ快適!
あとはubuntu上で環境を作ります。