うぴょりっくソフトでミラーサイト(うぴょりっくジャンボファイルサーバー)として使用していた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で接続できるようになります。
めでたしめでたし。
|