Windows+VMware+Linuxでシームレスな開発環境を作ってみた

Windows+VMware+Linuxでシームレスな開発環境を作ってみました。

  1. Windowsでコードを書く
  2. LinuxOS上で実行して確認

という作業をする時に、FTPやらSCPやらでいちいちファイルを移動しないで済みます。
(そんなこと誰もやってないって?)

やることは、Windows(以下「ホスト」)上のフォルダをVMware上のLinux(以下「ゲスト」)にSambaを使ってマウントするだけです。
はじめVMware-Toolsを使ってマウントしようとしたのですが、その後の権限の壁を超えるのが面倒であきらめてSambaで実現しました。

以下環境です。

  • WindowsXP Pro SP2
  • VMwarePlayer 2.0.2
  • CentOS 5.1
  • XAMPP for Linux 1.6.5a

ホストの準備

フォルダの共有設定

ホスト上にてソースを置くフォルダを、共有設定します。
対象のフォルダのプロパティを開き、「共有」タブ内の「ネットワーク上での共有とセキュリティ」を設定します。

  • 「ネットワーク上でこのフォルダを共有する」にチェック
  • 「ネットワークユーザーによるファイルの変更を許可する」にチェック
  • 共有名は適当に設定

image02.JPG

ちなみに上の設定ダイアログは、フォルダオプションの「簡易ファイルの共有を使用する」が有効になってる状態の表示です。

image03.JPG

VMware Playerをインストール

以下からVMware Playerのインストーラをダウンロードしてインストールします。

VMware Player

仮想イメージの入手

VMware Playerで実行するOSイメージを入手します。
例えばこちら

入手したアーカイブを展開して、VMwareプレイヤーで.vmxファイルを読み込みます。
ゲストはNATを使うようにしました。

ゲストの準備

以降、VMware上のCentOS 5.1を例にします。

samba-clientをインストール

ホストのフォルダをマウントするためにはsamba-clientが必要です。
入ってないなら以下のコマンドでインストールします。

[root@localhost ~]# yum -y install samba-client

XAMPP for Linuxのインストール

XAMPP for Linuxをダウンロードして展開します。

[root@localhost ~]# wget http://www.apachefriends.org/download.php?xampp-linux-1.6.5a.tar.gz
[root@localhost ~]# tar xvfz xampp-linux-1.6.5a.tar.gz -C /opt

共有設定

ホストのフォルダのマウント先を作ります。
XAMPPのapacheがnobodyで動作しているので、このディレクトリのオーナーも合わせておきました。

[root@localhost ~]# mkdir /mnt/www
[root@localhost ~]# chown nobody:nobody /mnt/www/

今作ったディレクトリを、ApacheのDocumentRootに設定します。

[root@localhost ~]# vim /opt/lampp/etc/httpd.conf
# (略)

#DocumentRoot "/opt/lampp/htdocs"
DocumentRoot "/mnt/www"

# (略)

#<Directory "/opt/lampp/htdocs">
<Directory "/mnt/www">

# (略)

nobodyのユーザー/グループIDを確認しておきます。

[root@localhost ~]# cat /etc/passwd | grep nobody
nobody:x:99:99:Nobody:/:/sbin/nologin

ゲストから見たホストのIPアドレスを確認しておきます。

[root@localhost ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.25.2

上で確認した情報を基にして、ホストのフォルダをマウントするためのスクリプトを作りました。

[root@localhost ~]# vim mount.sh
#!/bin/sh
export PATH=/usr/bin:$PATH

HOST_IP=192.168.25.2
SHARE_NAME=htdocs
USER_ID=99
GROUP_ID=99
MOUNT_DIR=/mnt/www

mount -t cifs //${HOST_IP}/${SHARE_NAME} /mnt/www -o password=,uid=${USER_ID},gid=${GROUP_ID}

上記のスクリプトを実行すると、ホストで設定した共有フォルダがマウントされます。

[root@localhost ~]# chmod 700 mount.sh
[root@localhost ~]# ./mount.sh
[root@localhost ~]# ls -la /mnt/www/
total 9
drwxrwxrwx 1 nobody nobody    0 Jan 23 01:20 .
drwxr-xr-x 3 root   root   4096 Jan 27 21:13 ..
-rwxrwSrwt 1 nobody nobody   31 Jan 23 05:04 index.php

動作確認

XAMPPは以下のコマンドで起動します。

[root@localhost ~]# /opt/lampp/lampp start

ホスト側で、共有設定したファイルに以下のファイルを置いてみました。

image04.JPG

ブラウザからゲストにアクセスすると、めでたく表示が確認できます。

image05.JPG

こんな感じで、Windows上でコーディング⇒Linuxで確認がスムースにできるようになりました。

Leave a Reply