Mac OS X 10.5にサーバ環境を構築
メモ
クライアントPCに言語環境を入れる理由 (1/3)- @ITを参考にした
- Macportsをインストール
- XCode Tools 3.1.4をインストール
- apacheをインストール(sudo port install apache2)
なぜかダウンロード中にうんともすんとも言わなくなってしまったので、^Cで止めて再実行。 - 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を読んでくれない)