VMWare+FreeBSDからApacheインストールまで

家でもCGIなどで遊べるようにVMWareを入れることにした.
VMWareここからダウンロード.
そしてFreeBSD6.2のインストールは以下を参考にしました.
(最初6.1でやろうとしたらFTPサーバにないっていわれた…)
辰己丈夫の研究雑報

FreeBSDVMWare上にインストール

以下は辰己丈夫の研究雑報からの引用

# VMwarePlayerをダウンロード&インストール
http://www.vmware.com/ja/products/player/
VMwarePlayerは無料の仮想マシンです。僕は version 1.0.3 を利用しました。
# qemuを利用してディスクイメージを作る

1. QEMUをダウンロード
http://www.h7.dion.ne.jp/~qemu-win/index-ja.html
2. ダウンロードしたファイルを展開しますが、念のため、C:\QEMUという(ディレクトリ名にスペースを含まない)ディレクトリ(フォルダ)を作って、その中に展開。
3. スタート→プログラム→アクセサリ→コマンドプロンプトを開く。
4. 上記の場所にダウンロードしたら、次のコマンドを順に入力。(バージョンが異なる場合は適宜読み直して下さい。)また、4番目のコマンドの最後の「10G」の部分は、最大10GBまで使うという意味です。ディスク残量などを見ながら適宜変えます。でも、6Gは欲しいです。
cd \QEMU
cd \QEMU-0.8.2-windows
mkdir \FreeBSD
qemu-img create -f vmdk \FreeBSD\freebsd6.vmdk 10G

# FreeBSD の iso ファイルをダウンロードする。
ftp://ftp.jp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/6.2/6.2-RELEASE-i386-bootonly.iso
そのファイルは \FreeBSD に置きます。
# VMwarePlayer用の定義ファイルを置く
先ほど vmdk を置いた場所(\FreeBSD)に、定義ファイルを置きます。メモ帳などを利用して作ります。ファイル名は freebsd6.vmx としてください。

config.version = "8"
virtualHW.version = "3"

displayName = "FreeBSD"
annotation = "FreeBSD 6.1-RELEASE"
guestOS = "freebsd"
nvram = "freebsd.nvram"
memsize = "256"

usb.present = "TRUE"
floppy0.present = "FALSE"

ide0:0.present = "TRUE"
ide0:0.fileName = "freebsd6.vmdk"
ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-image"
ide1:0.startConnected = "TRUE"
ide1:0.fileName = "6.2-RELEASE-i386-bootonly.iso"

ethernet0.present = "TRUE"
# ethernet0.connectionType = "nat"
ethernet0.connectionType = "bridged"
ethernet0.virtualDev = "e1000"

sound.present = "TRUE"
sound.virtualDev = "es1371"

checkpoint.vmState = "freebsd6.vmss"

priority.grabbed = "high"
priority.ungrabbed = "idle"
workingDir = "."

ide0:0.redo = ""

tools.remindInstall = "TRUE"

ethernet0.addressType = "generated"
ethernet0.generatedAddressOffset = "0"

上記の memsize = "256" は、メモリーを256M利用するという意味です。ホストOS(Windows XP)のメモリ容量を越えると大変なことになると思いますので、ほどほどにしてください。また、上記の ethernet0.connectionType = "bridged" の部分は、家庭などでbroadbandルータを利用してDHCPを宅内に配布できるときの設定です。できないときは ethernet0.connectionType = "nat" の方を有効にして下さい。Windows XPに natルータの機能をさせます。
# FreeBSDをインストールする

1. 先ほどのファイル freebsd6.vmx をダブルクリックすると、vmware が動作開始。
2. FreeBSDインストーラが起動するので、インストール開始です。
3. Media Type は FTP (あるいは FTP Passive) を選んで下さい。
4. ネットワークカードはemを選んで下さい。
5. 配布元は日本のFreebsdサーバーにすると世界的なトラフィック減少に貢献できます。
6. VMwareWindowsの切替えは
* VMwareWindows 「Ctrl」+「Alt」
* VMwareWindows 「Ctrl」+「g」
です。
7. VMware自体は Phoenix bios のエミュレートをしていますので、
1. すぐに F2 を押して bios の設定に入って下さい。
2. 右側のメニュー「Boot」にブートデバイスの優先順位がありますので、 CD-ROMがHDDより上に来るようにする
とすれば、強制的にインストーラーで立ち上がります。FreeBSDの再インストールが必要な場合は、これを使います。

基本的にこのままやればOK.

また、上記の ethernet0.connectionType = "bridged" の部分は、家庭などでbroadbandルータを利用してDHCPを宅内に配布できるときの設定です。できないときは ethernet0.connectionType = "nat" の方を有効にして下さい。

まだセキュリティとかよくわからないので,とりあえずnatでやりました(natもどこまで安全なのかわからないけど…).

いろいろインストール中,設定内容を聞かれますが,どうせ後で設定できるのですっとばします.
とりあえず過去に他の人から言われたことをやりました.

  • SSHはenableにすると便利
  • shellはtcshが便利
  • ユーザ追加で,グループをwheelにするとよい(wheelの詳しいことは後で調べなきゃな.とりあえず管理者権限が与えられるって感じでいいのかな?)

で,あっさりインストール完了.
さて,問題のapacheのインストールをします.

apacheのインストール

apacheのインストールは何回やってもあっさりできないですw
とりあえず,suして/usr/ports/www/apache22/に移動します.
あとはmakeしてinstallします.

さて,ここで/usr/local/sbin/apachectl startとやるとapacheが動くはずなのですが,普通動かない./usr/local/etc/apache22/httpd.confをいじった記憶があったので,設定します.

AdminName:管理者の名前
ServerName:サーバの名前(〜.localdomainとか?)

あれ?意外といじらない….で,まだ動かない.こんなエラーが出(た気がし)ます*1
その解決方法がここにありました.
http://www.xdelta.net/blog/FreeBSD/2006/05/04/p183

# kldload accf_http

これをやると,必要なモジュールを呼び出してくれるらしい.FreeBSD6.1のときは無かった気がするけどな?

で,その後動くようになるが,apachectl startすると動いてるように見えるのに,ブラウザでhttp://IPアドレス/にアクセスしてもページ読み込みエラーになる.その解決方法がここ.

http://d.hatena.ne.jp/akiyan/searchdiary?of=10&word=*%5B%A5%B5%A1%BC%A5%D0%A1%BC%B4%C9%CD%FD%5D

とりあえず,httpd.confの中の,
LoadModule unique_id_module libexec/apache22/mod_unique_id.so
コメントアウトしてstart.またこいつか!そういえば昔もコメントアウトしてやってました.アクセスしてみると

It Works!

動いた!
なんでも/etc/hostsをちゃんと設定しなくてはいけないらしい.
そこで,/etc/hostsに

IPアドレス ホスト名 ホスト名.localdomain

みたいに書いたら,さきほどのhttpd.confのコメントアウトをはずしても動きました.

もうちょっと細かく調べないと知識つかないなぁ.面倒だけど,将来のためだと思ってやってみます.

次はCGIが動くようにします.

*1:Unable to load accf_http module