VMWareにFreeBSDを入れる。

前に入れたのだけど、うっかり操作ミスで消してしまったのでもう一度入れる。このエントリーは備忘録的に自分がやったこととか失敗とかを書き留める。FreeBSDは7.0。前は最初のインストールの時にPorts Collectionを入れなくて、後から入れようとしてうまくいかなくて挫折した。今回はちゃんとPortsを入れてみたらありとあらゆるもののインストールが楽になった。なんでもmake install。

■ 自分をwheelに追加し忘れたためsuできない

exitしてrootで入り直し、/etc/gruop をviで開いてwheelに自分を追加した。cf. suコマンドを実行可能なユーザーを限定するには

sshでログインする

VMWareの画面からコピペする方法がわからないから。いちいちCtrl+Altしたり画面をクリックしたりするのも面倒だしね。sshはインストール時にONにした。ifconfigでIPアドレスを調べる。ちなみにVMWareはブリッジモードにしてある。

emacsが入っていない

# cd /usr/ports/editors/emacs/
# make

makeじゃなくてmake installか。っていうか最初に入れるべきなのはEmacsじゃなくてscreenかも。DLしている間に他の作業をした方が効率が…。bgにしてscreenを入れることにした。

# cd /sysutils/screen/
# make install

screen使うのは初めて。C-a cとC-a ?だけとりあえず覚えた。cairoのインストールのところで問い合わせ画面を出して止まっていた。fgしてOpenGLは必要ないと答えた。グラフィックライブラリらしい。cairo - Wikipedia

screen入った。C-a cで新しい画面を作ってC-a C-aで直前のに戻る。とりあえずEmacsがmakeされただけでインストールされていないのでmake install。

bashが入っていない

この際bashのことは忘れてzshを入れるか。

# cd /usr/ports/shells/zsh/
# make install

rehash して which zsh。/usr/local/bin/zsh に入っていた。 chsh でシェルの設定を書き換える。

subversionを入れる

cd /usr/ports/ で make search name="subversion" | less をしてSubversionが /usr/ports/devel/subversion にあるのを確認。make install。

Djangoを入れる。

  • pythonが入っているか確認→2.5.1が入っていた
  • subversionを入れる

とりあえず今手元の開発環境に入っているのはrev5728なのでそれを入れる。動作確認が済んでから新しいバージョンに差し替える。差し替えが簡単なように適当な場所にチェックアウトしておいてシンボリックリンクでインストールする。

# cd /home/nishio/
# mkdir django/rev5726/
mkdir: django: No such file or directory
# mkdir django
# mkdir django/rev5726/
# cd django/rev5726/
# svn co -r 5726 http://code.djangoproject.com/svn/django/trunk/ trunk
(snip)
# cd /usr/local/lib/python2.5/site-packages/
# ln -s /home/nishio/django/rev5726/trunk/django/ django
# ln -s /home/nishio/django/rev5726/trunk/django/bin/django-admin.py /usr/local/bin

試す。

# rehash
# dj[C-d]
django-admin.py djpeg
# django-admin.py
(snip)
# django-admin.py startproject hoge
# ls
hoge
# cd hoge/
# ./manage.py runserber  # miss(typo)
Error: Your action, 'runserber', was invalid.
Run "./manage.py --help" for help.
# ./manage.py runserver
Validating models...
0 errors found.

Django version 0.97-pre, using settings 'hoge.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

さて、サーバが立ち上がったのでブラウザでhttp://10.89.107.52:8000/にアクセスしてみる。あれ、みれない。ああ、そうか、デフォルトでは127.0.0.1にバインドしているから外のマシンからはみれないんだ。

# ./manage.py runserver 0.0.0.0:80
Validating models...
0 errors found.

Django version 0.97-pre, using settings 'hoge.settings'
Development server is running at http://0.0.0.0:80/
Quit the server with CONTROL-C.

これでhttp://10.89.107.52/にアクセスしてみると、うん、ちゃんとみれた。OK。

SQLite

>>> import sqlite3
(snip)
ImportError: No module named _sqlite3

これどうやって解決したんだっけなぁ。

■ easy_install

  • ■ easy_installを入れる
    • ■ pygmentsをeasy_install Pygmentsで入れる
# curl http://peak.telecommunity.com/dist/ez_setup.py
curl: Command not found.
# wget http://peak.telecommunity.com/dist/ez_setup.py
wget: Command not found.

おっと。

# pushd /usr/ports/
/usr/ports /home/nishio/tmp
# make search name="curl" | less
(snip)
# cd /usr/ports/ftp/curl
# make install
# popd
(snip)
# curl -O http://peak.telecommunity.com/dist/ez_setup.py
(snip)
# python ez_setup.py
# rehash
# easy_install Pygments

■ pysqliteを入れる

記録を取るのをすっかり忘れていた。historyコマンドで過去に入力したコマンドを確認してみる。

# make search name=pysqlite
# cd databases/py-pysqlite23
# make install

memcached, cmemcachedを入れる

これもhistoryから発掘。
memcachedとcmemcachedを入れようと思ったのだけどcmemcachedがなかったのでとりあえずlibmemcachedを入れた。

cd databases/memcached
make install
/usr/local/etc/rc.d/memcached
/usr/local/etc/rc.d/memcached start
cd ../../ 
make search name=libmem
cd databases/libmemcache/
make install

cmemcachedは公式サイトからダウンロードして入れた。

curl -O http://gijsbert.org/downloads/cmemcache/cmemcache-0.91.tar.bz2
tar -xzvf cmemcache-0.91.tar.bz2
cd cmemcache-0.91
python setup.py install

MySQLを入れる

/usr/ports/databases/

cd mysql51-server
make install

screenで同時にmysql51-clientも入れようとしたら「Cコンパイラが実行可能なファイルを作れない」という謎のエラーが出た。同時にやってはいけない。serverだけもう一度インストールしたら問題なく入った。clientはserverに含まれている。

Apacheを入れる

portsでapache22を入れた。

 Failed to enable the 'httpready' Accept Filter

と怒られる。

/boot/loader.confに以下を追加.
accf_http_load="YES"

http://www.cozmixng.org/~rwiki/?cmd=view;name=Apache

# emacs /usr/local/etc/apache22/httpd.conf

/etc/rc.confに「apache22_enable="YES"」を追加。ついでに「mysql_enable="YES"」も。

うまく動かない。エラーメッセージが表示されないがプロセスも存在しない。/usr/local/etc/rc.d/apache22 rcvarとやってYESと表示されるのを確認する。NOだった。apache22_enableにしないといけないのにapache2_enableって書いていた。それでも動かない。/var/log/httpd-error.logを読むと下のようなエラーが出ていた。

[Thu May 01 15:41:17 2008] [alert] (EAI 8)hostname nor servname provided, or not known: mod_unique_id: unable to find IPv4 address of "*******"

/etc/hostsの「127.0.0.1 localhost」と書いてあるところを「127.0.0.1 localhost *******」に変更する。動いた!

/usr/ports/www/apache-mode.elもmake installした。

■ sudo

sudoを入れた後、visudoして、「wheelグループの人が全部のコマンドを起動できる」という設定の頭のコメントを外して保存(削除:x、保存して終了:ZZ)

mod_python, mod_fcgi

mod_fastcgiだった。mod_fcgidは別物なので注意。portsであっさり。

■ flup

mod_fastcgiを使うためにはflupが必要らしい。
http://trac.saddi.com/flup

> curl -O http://www.saddi.com/software/flup/dist/flup-1.0.tar.gz
> tar -xvzf flup-1.0.tar.gz
> cd flup-1.0
> sudo python setup.py install

あっさり。