VirtualBoxを使った仮想Linuxサーバのローカル開発環境構築
自宅のPCで開発に使用している仮想環境をVMwareからVirtualBoxに変えてみました。こやつなかなかイイ感じ、なので、インストールから設定までざっくりと記録しておきます。なお構成は以下のようになります。
- ホストOSはWindows。
- ゲストOSはCentOS5。
- ゲストOSは普通のサーバと同じようにホストOSからSSHのターミナルで接続できるようにする。
- ゲストOSからインターネットに出れるようにする(yumとか使うので)。
- 開発中ゲストOSのファイルをホストOSから直接編集できるようにsambaを使う。
VirtualBoxのインストール
の左メニューにあるDownloadsのリンクからダウンロードページへ。VirtualBox platform packages.のVirtualBox 4.1.8 for Windows hosts x86/amd64をダウンロード。ダウンロードしたらインストーラーを立ち上げて指示にしたがい普通にインストールするだけ。インストール中に [インストールを続行した場合、システムの動作が損なわれたり、システムが不安低になるなど。。。ふがふが] というような警告がでるが、ガン無視して続行。Oracleさんを信じて続行。
Biosの設定
64bitOS(Centos5.5 x86_64とか)をゲストOSにする場合はCPUがVT-xに対応している必要があるっぽい。デフォルトだと無効になっている場合があるので、これを有効にするためBiosの設定を行う。PC起動中にF2かDelete押してBiosの設定画面を出す。VT-xの設定がどっかにあるのでEnableとかに設定してPCを再起動します。VT-xに未対応なCPUの場合はあきらめて32bitOSを使うしかないでしょう。たぶん。CPUについては筆者が全然くわしくないのでこれくらいしかわかりません。
仮想マシンを作成する
VirtualBoxを起動します。[新規]のアイコンをクリックするとウィザード形式で仮想マシンが作成できる。ここでは以下のように設定します。
- 名前:devel
- OSタイプ-オペレーティングシステム:Linux
- OSタイプ-バージョン:Red Hat (※64bitをインストールするときはRed Hat(64bit)
- その他メモリ量などはデフォルト設定のまま。
最後に[create]をクリックして作成完了。
仮想マシンにネットワーク設定をする
仮想マシンにOSインストールする前にネットワークの設定をしておきます。作成した仮想マシンのアイコンを右クリックして[設定]を選ぶ。[ネットワーク]→[アダプタ1]のタブを選択して[ネットワークアダプタ]を有効化にチェック。[割り当て]がNAT。になっていることを確認する。
次に[アダプタ2]のタブをクリックして[ネットワークアダプタ]を有効化にチェック。[割り当て]にホストオンリーアダプタを設定。これで
- ゲストOS→Internet接続にはNATでホストのNICを利用。
- ホストOS→ゲストOS接続にはホストオンリーアダプタを利用。
するようになり、ゲストOSへのSSHやゲストOSからのインターネット接続ができるようになります。なおVirtualBoxのネットワーク環境は以下の記事がわかりやすいです。
http://nwing.knowd.co.jp/yamazaki/index.php?q=node/169
CentOSのイメージファイルをダウンロードする
のDownloadsメニューからミラーサイトを選んで.isoファイルをダウンロードする。(CentOS-5.5-i386-bin-DVD.isoとかCentOS-5.6-x86_64-bin-DVD.isoなどをダウンロードする)。最小構成が好きならminimal.isoがいいかも。
仮想マシンにCentOSをインストールする
作成した仮想マシンのアイコンを右クリックして[起動]を選ぶ。初回起動ウィザードが起動するので、[次へ]を押す。[インストールメディアを選択]にてフォルダのアイコンをクリックして先ほどダウンロードしたCentOSの.isoイメージファイル選択する。最後に[起動]をクリックすると、CentOSのインストール画面になります。
お好みの設定でCentOSをインストールしましょう。ネットワークの設定ではeth0、eth1の2つのネットワークデバイスがあるので、両方共[起動時にアクティブ]に設定します。そしてeth0はNATを使用してゲストOSからInternetに接続するNICなのでDHCPに設定。eth1はホストOSからゲストOSに接続するときに使うNICなので固定でIP(192.168.56.11/24)を割り振ります。
※eth0のDHCPやeth1に割り振った192.168.56.xxのネットワークはVirtualBoxが用意している仮想のネットワークでこの環境設定は[ファイル]→[環境設定]→[ネットワーク]→[ホストオンリーネットワーク]→[VirtualBox Host-Only Ethernet Adapter]を右クリックして[ホストオンリーネットワークの編集]で確認できます。
CentOSの環境設定
インストールしたCentOSを開発環境用に設定します。
SELinuxを無効化
# vi /etc/selinux/config SELINUX=disabled #disabledに修正
# setenforce 0
iptablesの設定
# vi /etc/sysconfig/iptables #-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited # REJECTをコメントアウトしてアクセス制限させないようにする。ローカル環境なのでファイアーウォールはいらない子。
# /etc/init.d/iptables restart
SSH接続を確認
たぶんデフォルトでsshdは起動している。ホストOS(Windows)→ゲストOSの接続を確認する。SSHクライアントで192.168.56.11に対してrootで接続。ローカル環境なのでrootログインも気にしない。
sambaをインストール
# yum install samba # cd /etc/samba # vi smb.conf
以下のように修正する。
[global] workgroup = MYGROUP server string = Samba Server Version %v .... security = share # shareに修正 passdb backend = tdbsam .... load printers = no # noに修正 cups options = raw create mask = 664 # 追加(ゆるくいくなら777でも guest account = root # 追加 (rootアクセスでやりたい放題 disable spoolss = yes # 追加 [public] # 最終行に追加 comment = Public Stuff path = / public = yes writable = yes hide dot files = no oplocks = no
sambaを起動
# /etc/init.d/smb start
これでホストOS(Windows)のエクスプローラーを使って
\\192.168.56.11\public
にアクセスするとルートディレクトリからまるっとCentOSのファイルシステムにアクセスできるのであとは好き放題やってやるです。こうすることでWindows上の慣れた環境でソースコードをいじりながら、各種実行環境は本番サーバー同様のLinux上のものを 使うことができるので便利です。
終わりに
大体こんな感じです。ローカルの仮想環境なので、ユーザ権限なんかはroot使いまくりのゆるゆるです。あとノートPCにこの環境を作っているのですが、sambaでホストOSからゲストOSのテキストファイルを編集したままPCをスリープモードにすると、復帰したときにファイルがロックされて以後ゲストOSから書き込みできないことがありました。PCスリープさせるときはゲストOSからアクセスしているファイルを全部とじてからやったほうが無難のようです。
んでデスクトップはこんなん
ローカルの仮想環境だと最悪環境ぶっ壊してもいいやって気になってイロイロできてすごく。。。いいです。
追記
minimal.isoだとOSインスコ時にネットワークの設定ができないので、インストール後ネットワークの設定ファイルを修正する必要ありでした。以下サンプル
# /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO=dhcp HWADDR="08:00:00:00:00:00" # ココは環境ごとに違う NM_CONTROLLED="yes" ONBOOT="yes"
# /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth1" BOOTPROTO=static HWADDR="08:00:00:00:00:01" # ココは環境ごとに違う NM_CONTROLLED="yes" ONBOOT="yes" IPADDR=192.168.56.11 NETMASK=255.255.255.0 NETWORK=192.168.56.0 BROADCAST=192.168.56.255