蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

Mac OS X 10.5にサーバ環境を構築

メモ
クライアントPCに言語環境を入れる理由 (1/3)- @ITを参考にした

  1. Macportsをインストール
  2. XCode Tools 3.1.4をインストール
  3. apacheをインストール(sudo port install apache2)
    なぜかダウンロード中にうんともすんとも言わなくなってしまったので、^Cで止めて再実行。
  4. apacheをスタート(sudo /opt/local/apache2/bin/apachectl start)。ブラウザでhttp://localhostにアクセスすると、"It works!"

postgresのインストール

% sudo port install postgresql84
% sudo port install postgresql84-server
% sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb
% sudo chown postgres:postgres /opt/local/var/db/postgresql84/defaultdb
% sudo su postgres -c \
 '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'

起動と停止は以下のコマンド。

[起動]
% sudo su postgres -c \
 '/opt/local/lib/postgresql84/bin/pg_ctl -D /opt/local/var/db/postgresql84/defaultdb start'

[停止]
% sudo su postgres -c \
 '/opt/local/lib/postgresql84/bin/pg_ctl -D /opt/local/var/db/postgresql84/defaultdb stop'

スタートアップ時に起動するには、以下を実行。

% sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist

phpのインストール

ライブラリのインストール
% sudo port install jpeg
% sudo port install libpng
phpをダウンロード、展開
% cd ~/Downloads
% curl -o php-5.2.12.tar.gz -L http://jp2.php.net/get/php-5.2.12.tar.gz/from/this/mirror
% tar zxvf php-5.2.12.tar.gz
% cd php-5.2.12
% ./configure --with-apxs2=/opt/local/apache2/bin/apxs \
 --enable-mbstring \
 --enable-mbregex \
 --with-pgsql=/opt/local/lib/postgresql84 \
 --with-iconv=/opt/local/ \
 --with-gd \
 --with-jpeg-dir=/opt/local \
 --with-png-dir=/opt/local \
 --with-zlib-dir=/opt/local
% make

エラー発生。

In file included from /usr/include/arpa/nameser.h:59,
                 from /Users/nishi/Downloads/php-5.2.12/ext/standard/dns.c:62:
/usr/include/arpa/nameser8_compat.h:304: error: conflicting types for 'HEADER'
/usr/include/arpa/nameser_compat.h:99: error: previous declaration of 'HEADER' was here
make: *** [ext/standard/dns.lo] Error 1

PHP 5.2.12 has a bug that will stop your installationだそうで。解決策は一つ前の5.2.11を入れること。上と同じようにmakeして、インストール。

% sudo make install

php.ini-recommended を /usr/local/lib/php.ini にコピーし、編集。PHP5のデフォルトでは、PHPスクリプトのショート開始タグ <? を使えない。しかし、古いスクリプトを全部 <?php に書き直すのは大変なので、"short_open_tag" を "On" に変更した。それから、デフォルトの "include_path" を変更。2バイト文字の検索などが適切に行われるよう(str*()とereg*()をmb_*()に置き換える)、"mbstring.func_overload"を6に設定。

short_open_tag = On
(snip)
include_path = ".:/usr/local/lib/php"
(snip)
upload_max_filesize = 100M
(snip)
mbstring.func_overload = 6

/opt/local/apache2/conf/httpd.confを編集し、以下を追加。

AddType application/x-httpd-php .php

apache再起動。

% sudo /opt/local/apache2/bin/apachectl restart

ドキュメントルート(/opt/local/apache2/htdocs)に、<? phpinfo();?>だけ記述したファイルを用意し、テスト。動いた〜〜〜

PEARのインストール

PEAR::Mailを入れる。

% sudo pear install Mail
pear.php.net is using a unsupported protocal - This should never happen.
install failed

これは、5.2.10から存在するバグらしい(PHP5.2.10 にしたら PEAR ライブラリが入らなくなった - Memo)。/usr/local/lib/php/.channels/pear.php.net.reg の中身をhttp://www.pear-forum.org/post-5083.html#5083の内容に書き換えた。
依存しているっぽいNet_SMTPも入れた。

RSS配信のため、XML_Serializerを入れる。先にXML_Parserを入れる。betaだというエラーになったため、以下を実行。

% pear config-set preferred_state beta
% sudo pear install XML_Serializer

認証

apache2.2ではmod_auth_pgsqlが使えない(http://nighthawk.dip.jp/gentoo_linux/view_detail.php?select_id=12)。かわりにmod_authn_pgsqlを使う。

% curl -o mod_authn_pgsql.c "http://markmail.org/download.xqy?id=56z2rernvh3rv3py&number=1"
% sudo /opt/local/apache2/bin/apxs -cia -I/opt/local/include/postgresql84 mod_authn_pgsql.c
% sudo /opt/local/apache2/bin/apachectl restart

Apache 2.2のBasic認証のユーザー管理をPostgreSQLでやる。 - clog -The foobar hogehoge-を参考に .htaccess を設定したところ、認証できるようになった。(その前に、AllowOverride Allにしないと.htaccessを読んでくれない)

httpd.confの設定

ディレクトリのファイル一覧が表示されないように。

    Options -Indexes FollowSymLinks

ディレクトリを要求したときに、index.phpが表示されるように。

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>