お仕事上、構築関連としてはLinux、Windowsクライアント、Mac OS X Server等があったわけですが先日、FreeBSDの環境構築を行いました。基本的にWeb系としてはLinux重視だったのでFreeBSDも前に少しいじった事はありますが最近のはあまり触ってなかったので少々時間がかかっちゃいましたが。
それにしてもportsとかPackagesは環境構築が楽ですなぁ。Red HatのRPMもそうかもしれないけどPortsとかPackagesの方が楽かも?今回はいろいろある内のPHPの環境構築についてメモ。
今回はFreeBSD 5.4-Release環境。
とりあえず/usr/portsにパッケージのリストファイルがあれば楽なんですがなかったので
(あったとしても最新のをダウンロードする事になるので変わらんか・・・)
ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
あたりからwget ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
等で/usrにダウンロードして
tar zxvf ports.tar.gz
で展開しちゃって後は必要なportsをインストールするだけ。一度インストールしたものも
pkg_infoで確認して
pkg_delete パッケージ名
で削除するだけ。
たたPHPのインストール時に必要な設定があったわけですがportsでコンパイルしてインストールする場合に
configureはどうやって追加するのだろう?と思って方法が調べてもなかなか出てこないのでMakefileの中を見ているととある場所のMakefileの中身を参照しているようですので中身を見てみるとconfigureのオプションが書かれていたのでそこに必要なオプションを追記し普通にportsでインストール作業を実施しました。
標準のままだと処理によっては
PHP Fatal error: Call to undefined function: preg_match() in
等のエラーが出ることがあるので下記のような対応を取ります。
最近のFreeBSDのPHPのインストール環境って前と随分変わっているんですね。
(昔のFreeBSDは一緒だったのかな?)
PHP本体とオプションはパッケージが分かれたようでpcre等に関しては
・php4-extensions
を一緒にインストールしなければなりません。この中にはインストールの設定にもよりますが
php4-ctype-4.4.1_3
php4-mbstring-4.4.1_3
php4-overload-4.4.1_3
php4-pcre-4.4.1_3
php4-posix-4.4.1_3
php4-session-4.4.1_3
php4-tokenizer-4.4.1_3
php4-xml-4.4.1_3
php4-zlib-4.4.1_3
mysql-client-4.1.16
php4-mysql-4.4.1_3
等が含まれています。
FreeBSDでまともに日本語環境というかmbstring系やMySQL関連をインストールしたい時はこれを使うのが良いのでしょうね。
なので
・mod_php4
・php4-extensions
をインストールしておくと普通のレンタルサーバー並みの環境が出来上がるかな?
これだけだと駄目なのでPHPの設定ファイル(php.ini)の中で
extension_dir
の部分をコメントアウトするか
extension_dir = "/usr/local/lib/php/20020429"
とすると。
それでも
PHP Warning: Function registration failed - duplicate name - mbereg_search_setpos in Unknown
な感じのエラーが出る場合は
/usr/local/etc/php/extensions.ini
あたりの(環境によってファイル置き場は違うと思いますが)
extension=mbstring.so
をコメントアウト
;extension=mbstring.so
すると正常に動作します。
最初はちょっと戸惑いましたが慣れてしまえばこれは楽。
Mac OS XでもFinkとかはあるけどレンタルサーバーで安くMac OS Xを使えるようなところはないしコマンドラインからとなるとこれはいいな。
関連
FreeBSDコマンドポケットリファレンス
中村 文則
FreeBSD Expert〈2005〉
FreeBSD Expert編集部
FreeBSD Expert 2004
技術評論社編集部