Windows 7 に移行してからというもの、VMware Server の NAT がまともに動かず yum update もできずに困り気味。代替を探していると、VirtualBox なるものを発見。早速テストしてみたところ使えそうなので、VMware Server から移行してみることにしました。
まずは VirtualBox をインストールします。以下の 『VirtualBox 3.2.0 for Windows hosts』 からダウンロード。
2010年 5月 24日時点での最新版は 3.2.0 です。ダウンロードがすんだらインストール。途中、デバイスドライバのインストール時に警告が表示されますが、気にせず続行。インストール作業は特にどうということもなく終了。
VirtualBox のインストールが完了すると、『VirtualBox Host-Only Network』 というネットワークアダプタが Windows に追加されます。このアダプタは、ゲスト OS ⇔ ホスト OS 間の通信を行うためのものです。基本的に VirtualBox では、
- ゲスト OS が外向き(ホスト OS の外)の通信するをするために NAT を使用
- ゲスト OS と ホスト OS 間の通信は Host-Only Network アダプタを使用
となります。
VMware と違うところは、仮想ディスク領域の扱いぐらいかと思います。VMware を使ったことがあれば特に迷うようなことはありません。今回は新規で CentOS をインストールするので、【仮想マシン】 → 【新規】 で仮想マシンを作成する中で仮想ディスクも作成します。
仮想マシンの作成は VMware を使い慣れていれば特にどうということも無いと思います。作成が完了したら、設定を行ないます。とりあえず
- 不要なデバイス(サウンドなど)を無効にする
- 【システム】 → 【ハードウェアクロックをUTCにする】 にチェックを入れる
- 【ネットワーク】 の 【アダプタ 2】 を有効にして、【割り当て】 は 【ホストオンリー アダプタ】 を選択する
という感じ。
次に、CentOS のインストール用 DVD イメージをダウンロードします。以下の URL から、『State (Area)』 が 『Japan』 で且つ 『Direct DVD Downloads』 が 『Yes』 になっているところからダウンロードすると、DVD イメージが直接ダウンロードできます。
ダウンロードが完了したら、先ほどの VirtualBox 仮想マシン設定の 【ストレージ】 から、ダウンロードした DVD イメージを光学ドライブとしてマウントしてから、仮想マシンを起動します。
ここからは CentOS のインストール作業。とりあえずいつも通り。パッケージの選択で Server を選択した上でカスタマイズして不要なものは除外。
- アプリケーションは vim と emacs のみ
- サーバは、DNS、ニュースサーバー、メールサーバー、レガシーなネットワークサーバを除外、MySQL をチェック。
- Web サーバは、php-mysql と php-pear をチェック。
- ベースは、ダイヤルアップネットワークサポートを除外。
とりあえずこんな感じ。足りないものはインストール後に追加。インストールが終わったら再起動。
初回起動時に authconfig-tui が起動するので以下を設定。
- Authentication configuration はそのまま。
- Firewall configuration は
- SELinux を Disabled
- Custom ボタンで詳細設定。
- Trusted Devices は eth0 eth1 両方とも選択。
- MASQUERADE Devices は NAT の eth0 を選択。
- Allow incoming は SSH, WWW (HTTP), Secure WWW (HTTPS), FTP, Samba を選択。Other に 3690 (SVN) を追加。
- Network configuration で eth1 を 192.168.56.11 に設定。
- System services は ip6tables とか sendmail などの不要なものを除外して、httpd, smb, mysql などの必要なものを選択。
以上が終わったら、Windows 側の WWW ブラウザから http://192.168.56.11 にアクセスして Apache のウェルカムページが表示されることを確認します。続いて、CentOS にログインして、yum update してみて正常に動作することを確認します。
常用ユーザーを作成して、常用ユーザーに対して su, sudo できるように visudo を実行して以下の行を追加。
foo ALL=(ALL) ALL
php-mbstring, php-gd, php-xml を追加。
[shell]
# yum -y install php-mbstring php-gd
[/shell]
とりあえずの Apache の設定を行ないます。 /etc/httpd/conf/httpd.conf を編集。
ServerName centos:80 DocumentRoot "/var/www/html"Options -Indexes FollowSymLinks AllowOverride None Options -Indexes AllowOverride All Order allow,deny Allow from all AddDefaultCharset UTF-8ServerName centos DocumentRoot /var/www/html # Windows 側のフォルダ(後述)ServerName windows DocumentRoot /var/www/httpdocs
続いて php.ini を編集。phpMyAdmin で SQL をインポートする際にサイズ制限に引っ掛かったりするので、とりあえず memory_limit, post_max_size, upload_max_filesize を設定。デフォルトはそれぞれ 128M, 8M, 2M です。PHP のマニュアルによると、memory_limit >= post_max_size >= upload_max_filesize が良いとのこと。 ((参考: http://www.php.net/manual/ja/ini.core.php#ini.post-max-size ))
post_max_size = 16M upload_max_filesize = 12M
/var/www/html をホスト(Windows)側からも読み書きできるように Samba サーバを設定します。まずは既存ユーザーを Samba サーバーアクセス用ユーザーとして追加。以下のコマンドを実行してパスワードを入力します。
[shell]
# pdbedit -a foo
[/shell]
続いて /etc/samba/smb.conf を編集。
[global] workgroup = WORKGROUP_NAME server string = netbios name = centos hosts allow = 127. 10.0.2. 192.168.56. load printers = no unix charset = UTF8 dos charset = CP932 display charset = UTF8 idmap gid = 16777216-33554431 [homes] path = %H/samba writable = yes valid users = %S
ホスト側からアクセスするディレクトリを作成して、その中に /var/www/html/ へのシンボリックリンクを作成。
[shell]
# mkdir ~foo/samba
# chown foo.foo ~foo/samba
# ln -s /var/ww/html ~foo/samba/html
# chown foo.foo ~foo/samba/html
[/shell]
ホスト側から上記ディレクトリをネットワークドライブ(ここでは L: ドライブ)としてマウント。
net use l: \\centos\foo
ゲスト側とホスト側でユーザー名とパスワードを揃えておくと楽です。
ゲスト側のフォルダも Apache からアクセスできるようにしておきます。 ((CentOS 側の /var/www/html/ は、シンボリックリンクが必要なシステムの開発に使用し、Windows 側フォルダをマウントした /var/www/httpdocs は、シンボリックリンクが不要なシステムの開発に使用、という感じで役割分担しています。)) まずは /etc/hosts にホスト側を追加。ここでは thinkpad-x201s というホスト名にしています。
192.168.56.1 thinkpad-x201s
ホスト側の適当なフォルダ(僕の場合は D:\home\foo\httpdocs\)を共有します。アクセス許可は foo のみフルアクセスに設定。
ゲスト側の /etc/fstab に以下の行を追加。foo はユーザー名、password は foo のパスワードです。
//thinkpad-x201s/httpdocs /var/www/httpdocs cifs user=foo,password=password,uid=foo,gid=foo,file_mode=0666,dir_mode=0777,iocharset=utf8 0 0
ホスト側の hosts ファイルも編集。以下の行を追加します。
192.168.56.11 centos windows
とりあえず以上で開発環境の元は出来ました。早ければ30分掛からないと思います。