データベースに再挑戦


最近流行りのデータベースでもやるか. と思い, 3ヵ月まえに PostgreSQL と php をインストールしたが, 全く使わぬうちにアップグレードしてしまった(死)ので, 改めて PostgreSQL-6.5.2 と php-3.0.12jp-beta4 をインストール.

やってるうちにわかって来たことは, どうも, データベースというのはユーザフロントエンドというよりは, データベース自体の設計の方がキモであるらしいということだ. つまり, 昔風に言えば, 手続きよりもデータ構造の方が重要なのである. 当り前だ. なんせ, データベースだからな.

php は, 全角英数を半角英数に直す関数なんかもあり, 日本語の正規表現も書ける. まあ, なんつうか, ようするに 至れり尽くせりなのである. これで使えるシステムができなきゃアホである. そりゃそうなんだが, どうもいまいちとっかかりが掴めないんだよな. ドキュメントもすげえ充実してるのに. PostgreSQL のドキュメントなんか, これがあれば巷の SQL 本なんか, 全く要りませんよ. っつうくらいの完成度だ. それなのに.

まあいいや. いきなり AltaVista みたいなもんができるわけないから, 気楽にやろう.

PostgreSQL のインストールは, 次の要領.

  1. postgresql の管理者となる予定のユーザとグループを作る. 推奨値は postgres とかなんかそういう判りやすいのが良いでしょう. 以下の作業は全部, PostgreSQL の管理者ユーザになって実行すること.
  2. ソースをどっかに展開.
  3. postgres の ホームディレクトリを prefix として, configure する. /usr/local/postgres が postgres のホームなら,
    ./configure --prefix=/usr/local/postgres
    	  
    となる. 他にもいろいろオプションがあるので, 見てくれ. 多分, --enable-locale とかした方がいいだろう. でも, よくわかんねえ.
  4. ドキュメントをインストール. doc/ で make install すればいい.
  5. 本体をコンパイル. インストール. これは make && make install でい い.
  6. /usr/local/postgres/lib を ld.so.conf に追加して, ldconfig . このステップは root で実行. 当り前ですが.
  7. これでインストールは終りだが, 一応, テストも実行してみよう.
  8. postmaster -i というコマンドを発行. データベースサーバの起動である. らしい. このへんは, よくわかってな い.
  9. 使いはじめなら, initdb というコマンドを発行.
  10. src/test/regres で, make all runtest
  11. 最後の指数関数のテストはやたらと時間がかかるので, 「死んだ」とか思わずに気長に待ってあげてくれ.

まあ, こんな感じでけっこうめんどくさいんですが, postmaster は絶対に root で実行しないように, という注意があります. まあ, 具体的にどこがヤバイのかわかんないのですが, 確かにヤバそうなので, やめましょう. じゃあ, postmaster なら良いのかよ. という不安もないわけではないが.

SQL コマンドの発行は, psql というインタプリタを使う. SELECT とか JOIN とか, なんか, そういうやつである.

これだけでもけっこういろいろできるらしいのですが, php という ゑぶ(というか apache)と繋ぐ html 埋め込みスクリプトを インストールすると, ゑぶ でデータベースが触れて, すげえ良い. らしい. 俺は, こいつを apache の DSO としてコンパイルした. これが一番楽である.

こいつで気をつけないといけないのは, configure のオプションだけである. 日本語を使うんなら,

である. あとは make && make install で, できあがり.

次は, apache の設定だ. httpd.conf にこういうのを追加し,

LoadModule php3_module        libexec/libphp3.so
AddModule mod_php3.c
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
apache を再起動. php で make install すると, どうも手で上のエントリを追 加しなくても勝手に追加されてたような気もする.

apache を再起動すると, たまに発狂するみたいだから, そういうときは, apache を一旦停止してから起動するとよろしいようで. ニュースサイトなんかでは, けっこう hoge.phtml とか hoge.php3 とかいう url をみかけるが, これが php を含んだコンテンツなのである.

perl などの汎用インタプリタを使った CGI に比べて, セキュリティがどうなの か, というところはよくわからん. 穴があったらおなじくらいヤバそうだし, 実際に nessus には php の穴をつつくプラグインもある. 実戦では, その辺も心して使う必要があろう. ってどうやって? CGI の実行と違って, いちいちプロセスを作らないので, サーバの負荷は php の方が一般的に小さいらしいけど, とにかく判らん事ばっかりですわ. はあ.