OSXのWebサーバ(Apache)に関するメモ


Apacheのファイル構成(デフォルト)
/Library/Webserver
が基本ディレクトリ、その下に
/Documents/CGI-Executableがあります。
/Documentsはドキュメントルートで、サーバのルートディレクトリになります。例えば、
http://192.168.0.2/ とした時最初に表示されるindex.htmlは/Documentsにあります。
同じく、http://192.168.0.2/cgi-bin/ が/CGI-Executableになります。ただし、これはOSXをインストールして何も手を付けていない状態の構成です。バイナリパッケージ等を導入した場合はディレクトリの構成が変わるので注意。
/etc/httpd (/etcは/private/etcにリンクされています)
に設定ファイルがあります。設定ファイルを編集するにはrootユーザになっておく必要があります。このディレクトリにあるhttpd.confがApcheの設定ファイルです。その他、扱うファイルの種類によってはmime.typeを編集します。
ディレクトリの整理
Webサーバを公開する場合、ドキュメントルート以下のファイルを整理します。私は次のようにしました。
  1. Documentsにあるファイル(index.html.*など)をDocuments/manualに移動
  2. 自分用のディレクトリをDocumentsにコピー
  3. CGIディレクトリはDocuments/cgi-binとした
私の場合、CGIの開発にも使用する予定なので、3.をあえてしました。自作CGIを動かしたい場合や標準のディレクトリ構成を変える場合は次の設定ファイルの編集が必要です。
設定ファイルの編集(CGI用)
CGIを動かす場合はまず、/etc/httpd/httpd.confを編集します。
 ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executable/"
       ↓
 ScriptAlias /cgi-bin/ "/Library/WebServer/Documents/cgi-bin/"
これは、自分で整理しやすいようにCGIファイルをドキュメントルートの下に置きたかったからです。その下の行、
 <Directory "/Library/WebServer/CGI-Executables">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
 </Directory>
を、
 <Directory "/Library/WebServer/Documents/cgi-bin/*/*/">
   AllowOverride None
   Options ExecCGI
   Order allow,deny
   Allow from all
 </Directory>
この設定は大事です。
Not FondやForribddenが出る場合は、まずここがあやしいです。
次にEZ-Webのファイルフォーマットであるhdmlファイルを使いたい場合は、mime.typeの最後に1行追加します。
  text/x-hdml         hdml
Webサーバの起動と停止
設定を変更した場合は、Webサーバを再起動しなければいけません。Webサーバの起動と停止は、「システム環境設定」の「共有」パネルにあります。PublicBetaからは場所が変更になっているので注意が必要です。
ただし、Apacheの新しいバージョンを手動でインストールした場合には、この方法では上手くいかないことがあります。
バイナリパッケージ導入時の注意
OSXでサーバを構築する場合は、kimioさんの「MacOSXでサーバ構築」(http://yosemite.una-g.to)がとても参考になります。私もここを参考にしての「WEBサーバを構築しよう!」を参考にして新しいApachenoバイナリパッケージを導入したのですが、パッケージを導入するとディレクトリの構成等が変わるので注意が必要です。
Apcheno設定ファイルの保存場所は、/Library/Webserver/Configurationに、ログは/Library/Webserver/Logsに設定が変わります。
また私の場合は、「共有」パネルからWebサーバの再起動ができなくなったので、ログフォルダにあるhttp.pidというファイルを開いてプロセスIDを調べ、ターミナルから"kill プロセスID"して、"httpd"コマンドで起動するという方法を取っていました。
ちなみにsendmailをCGIから使いたい場合は、同HPの「メールサーバのインストール 」が大変参考になります。