Windows+VMware+Linuxでシームレスな開発環境を作ってみた
Windows+VMware+Linuxでシームレスな開発環境を作ってみました。
- Windowsでコードを書く
- 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
ホストの準備
フォルダの共有設定
ホスト上にてソースを置くフォルダを、共有設定します。
対象のフォルダのプロパティを開き、「共有」タブ内の「ネットワーク上での共有とセキュリティ」を設定します。
- 「ネットワーク上でこのフォルダを共有する」にチェック
- 「ネットワークユーザーによるファイルの変更を許可する」にチェック
- 共有名は適当に設定
ちなみに上の設定ダイアログは、フォルダオプションの「簡易ファイルの共有を使用する」が有効になってる状態の表示です。
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
ホスト側で、共有設定したファイルに以下のファイルを置いてみました。
ブラウザからゲストにアクセスすると、めでたく表示が確認できます。
こんな感じで、Windows上でコーディング⇒Linuxで確認がスムースにできるようになりました。



