Mac OS X TigerでApache+MySQL+PHP5+SSL

Download iTunes


ポッドキャスティング

☆番組のご案内☆

星野菜々のとっておきの話
里菜のプチどきどき☆
桃華のお悩みさっぱり解決

恋々小町Xプチドラマ
うぴょりっくプロダクション



SPECTRASONICS ATMOSPHERE
Synthogy Ivory
M-AUDIO FireWire 410
SHURE BETA58A
マンガ嫌韓流
マンガ嫌韓流2

 

うぴょりっくソフトでミラーサイト(うぴょりっくジャンボファイルサーバー)として使用していたAMD Duronプロセッサ登載Linuxサーバーが2年間に渡る無停止運用の末、ついに御陀仏してしまいました。わざわざBIOSなどというものを登載したレガシーアーキテクチャの、WindozeやLinux程度のろくなOSの選べないコンピュータを購入するのは実に愚かしいことです。(Linuxは余ったWindozeマシンをサーバーとして使う分には便利なもののデスクトップとしては相変わらず最悪で見た目だけは多少進歩していてもアーキテクチャはここ10年ほとんど進化していないため、デスクトップOSとしてのLinuxは無価値だと考えています。その点Mac OS XはLinuxよりもはるかに堅牢なBSDベースのOSであり、同時に非常に安定したデスクトップも持ち、OSの質・アーキテクチャのどちらを取っても優れていると言えます)

そこで、Intel Macでの動作検証用にと用意したIntel Mac mini Core Soloのデフォルトモデル(そもそもCore DuoもSoloもユダヤが作ったPentium IIIに毛が生えた程度のボロに違いないのは仕方ありませんが、たとえIntelを積んでいてもMacはMacなので嫌々妥協)、クライアントとして使うつもりはさらさらないのでサーバーとして働かせようということで、ソースからビルドしました。

備忘録を兼ねてまとめておきます。ソフトウェアアップデートなどの影響を受けないようにする目的からMac OS X Tiger 10.4.6に内蔵されているApache 1.3は触らずに、新しく/usr/local/下にインストールし、個別に管理することにしました。

1) XCodeのインストール

まずはgccなどのソースをコンパイルできるようにするためにXCodeをインストールしておきます。XCodeはMac OS XのCDに含まれる他、Appleのサイトからダウンロードすることもできます。

2) 各種ソースのダウンロード

ソースはそれぞれ下記のURLからダウンロードしておきます。

[MySQL 5.0]
http://dev.mysql.com/downloads/

[Apache 2.2.x]
http://httpd.apache.org/

[PHP 5.1.x]
http://www.php.net/downloads.php

3) MySQLの設定

MySQLに関してはパッケージもあるので、これをダウンロードしてインストールした方が楽でしょう。MySQLをインストールしたら、MySQLデータベースにアクセスできるrootのパスワードを設定しておきます。

mysqladmin -u root password '<新しいパスワード>'

4) Apacheのコンパイルとインストール

Apacheのソース httpd-2.2.x.tar.gzあるいはbz2を展開してhttpd-2.2.xディレクトリに入ります。

./configure --with-included-apr --enable-so --enable-ssl

ここで欲張って --enable-dav=yes を追加してしまうと後でなぜかSSLがうまく動作しなくなるのとDAV自体あまり行儀の良いプロトコルとも思えないこととセキュリティの問題からDAVは使わないことであまり問題はないと思います。

あとはmake; make installとするだけです。

※httpd-2.2.3以降では

./configure --enable-so --enable-ssl

とすると

Cannot use an external APR-util with the bundled APR

というエラーが出てしまうため、--with-included-apr オプションも追加します。

5) php 5.1.xのインストール

phpのソースを展開して同じように

./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--with-mysql=/usr/local/mysql/ \
--with-mysql-sock=/tmp

としてからmake; make installでインストール完了、php.iniを設定しておきます。

php.iniの設定で、欲張って

post_max_size
upload_max_filesize

大きな値にしてしまうと、サービスは正常に起動するのですがFORMからPOSTされたデータが正しく$_POST['変数']に入らなくなってしまうので、せめて大きくても

post_max_size = 1024M
upload_max_filesize = 1024M

くらいにしておきましょう。(使用目的によりもっと小さくする方がよい場合もあります)

6) SSLの設定

Apache 2.0からはSSLの設定はとても楽になっています。(昔mod_sslすらなかった時代はApache 1.2とSSLeayとかでめちゃくちゃ面倒だったような気がしますが)

キーの作り方はいろんなサイトに書かれているので詳しくは割愛しますが、

http://developer.apple.com/internet/serverside/modssl.html

あたりが役に立つでしょう。商用サービスが目的でないので、SSLによる暗号化通信だけでできればよいため、

openssl dgst -md5 適当なファイル >rand.dat
openssl genrsa -des3 -out ca.key -rand rand.dat 1024
openssl req -new -x509 -days 730 -key ca.key -out ca.crt

でオレオレ証明書(自己認証局)を作って、

openssl genrsa -des3 -out server.key -rand rand.dat 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.bak
openssl rsa -in server.key.bak -out server.key
./sign.sh server.csr

でサーバー用の鍵を作ればだいたいOKでしょう。(sign.shはmod_sslのソースパッケージから拝借)

7) httpd.confの設定

ちゃんとphpがLoadModuleとAddTypeで設定されているかを確認し、必要に応じてindex.phpなども

DirectoryIndex index.html index.shtml index.phtml index.php index.html.var

のようにDirectory Indexとして設定しておいてから、SSLの設定も証明書を正しく指定して起動すれば正しく動作すると思います。

うぴょりっくソフトのジャンボファイルサーバーは晴れてIntel Mac miniでMAMP環境で動作することになりました。宅ファイル便のようなサービスとしてうぴょりっくソフトのスタッフ間のデータのやりとりを目的に運用している「うぴょりっくファイルエクスプレスサービス」も「うぴょりっくソフトコミュニティ」も無事にMacで動作しました。

パーソナルWeb共有はOFFにしファイアーウォールで必要なポート(HTTPS=443)を空けておくことで外からもSSLで接続できるようになります。

めでたしめでたし。