MacOSでVirtualBoxを使って開発環境を作ったのでメモ
MacOSのマシンに開発環境を構築することになった。
「macportsでチマチマと開発環境を作るより、VMでLinux使って作ったほうがいいよ!」と言われたので、そのプランでやってみることにした。
ちなみに、ThinkPadはデフォルトのブートはWindowsなんだけど、やはり開発環境はVMでローカルに構築している。
VMにはVirtualBoxを使う
昔はVMWareだったのだけど、最近はよくVirtualBoxを使う。
ダウンロード時に入力を求められないとか、フルスクリーン時のコントロールエリアの表示がシンプルで好きとか、いろいろあるけど、どちらかと言えば気分的な問題なので特に意味はない。
ここからdmgが落とせるのでそのまま落としてインストール
ゲストOSはUbuntu 10.10 Server
ゲストOSにはUbuntu 10.10のサーバ版を使った。
自分はメインのサーバにはFreeBSDを昔からずっと使っているのだけど、仕事もずっとLinuxだし、なにより簡単で便利なので、ごちゃごちゃ言うよりもうUbuntu一択でいんじゃね、って最近は思うようになってる。
どうせGUIは使わないのでサーバ版をいれた。実はサーバ版は初めて使ったのだけど、シンプルでいいね。
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で見覚えがあるのがあれば、それを消す。