Apache 2.0のインストール

てな訳で、ここ数日間のまとめ。

インストール

apache をバイナリパッケージでインストールする。apr、db4、expat のパッケージも必要。以下のコマンドで全て関連パッケージもインストールされる。
…/www/apache-2.0…だと、関連パッケージが同じ www の中に無いのでインストールが失敗するので、…/All/apache-2.0…を使うこと。

pkg_add ftp://ftp.jp.netbsd.org/pub/NetBSD/packages/1.6.2/i386/All/apache-2.0.49nb1.tgz

インストールされるパッケージは以下の通り。

db4-4.2.52nb1       Berkeley DB version 4 from Sleepycat Software
expat-1.95.7        XML parser library written in C
apr-0.9.5.2.0.49    Apache Portable Runtime
openssl-0.9.6m      Secure Socket Layer and cryptographic library
perl-5.6.1nb10      Practical Extraction and Report Language
apache-2.0.49nb1    Apache HTTP (Web) server, version 2

あと、wwwグループ、wwwユーザが追加される。

自動起動の設定

インストール後、/usr/pkg/etc/rc.d に用意される apache 起動スクリプトを見て、/etc/rc.local に apache=YES apache_start="start" を追加する。ただ、/usr/pkg/etc/rc.d の中身は /etc/rc.d に 755 で置くこと。

Apache の設定ファイル修正

/usr/pkg/etc/httpd/httpd.conf を修正する

  • ServerAdmin を webmaster@ドメイン名 に修正。(webmaster は /etc/mail/aliases に入っている root に転送される)(ドメイン名は /etc/mail/local-host-names に入っているドメイン名)
  • ServerName を www.ドメイン名 に修正(ホスト名が www じゃない場合に www に見せるために行う)
  • に続く Options を FollowSymLinks Includes ExecCGI Indexes と3つ追加(IncludesはSSI、ExecCGIはCGI、Indexesは一覧表示の許可、最後は無くても良いカモ。)
  • さらに続く AllowOverride を All に変更(.htaccess で全ての設定を許可する)
  • DirectoryIndex に index.cgi を追加(ユーザ希望による)
  • AddDefaultCharset ISO-8859-1をコメントにして無効に(日本語ドキュメントが化ける原因になる)
  • AddHandler cgi-script .cgiをコメントを外して有効化(CGIを利用可能に)
  • AddType text/html .shtmlをコメントを外して有効化
  • AddOutputFilter INCLUDES .shtmlをコメントを外して有効化
  • XBitHack onを上記の下に追加(SSI及び実行属性のついた.htmlをSSIとして実行可能に)(ただし、.htaccess内でAddTypeで.htmlを再定義するとXBitHackは無視されるので注意)

ログのローテーションの設定

Apacheのログは/var/log/httpdにある

-rw-r--r--  1 root  wheel  504539 Jul  8 10:43 access_log
-rw-r--r--  1 root  wheel    7412 Jul  8 11:32 error_log

ログのローテーションは/etc/newsyslog.confの設定を変更する

#       $NetBSD: newsyslog.conf,v 1.15 2002/03/29 02:47:26 heinz Exp $
#
# Configuration file for newsyslog(8).
#
# logfilename           [owner:group]   mode ngen size when flags [/pidfile] [sigtype]
#
/var/cron/log           root:wheel      600  3    10   *    Z
/var/log/aculog         uucp:dialer     640  7    *    24   Z
/var/log/authlog                        600  5    30   *    Z
/var/log/kerberos.log                   640  7    *    24   ZN
/var/log/lpd-errs                       640  7    10   *    Z
/var/log/maillog                        600  7    *    24   Z
/var/log/messages                       644  5    30   *    Z
/var/log/wtmp                           644  7    *    168  ZBN
/var/log/xferlog                        640  7    250  *    Z

ここにApacheのログの設定を追加する。書式は以下の通り。

  • 先頭が#ならコメント行
  • 第1フィールドはログファイルの完全パス名
  • 第2フィールドはログファイルのオーナー情報(省略可能)
  • 第3フィールドはログファイルのパーミッション(元ファイルと同じもので良い)
  • 第4フィールドは保存する世代数
  • 第5フィールドはログを更新する大きさをKBで指定(サイズを指定しない場合は *)
  • 第6フィールドはログを更新する時間を指定(時間を指定しない場合は *)
  • 第7フィールドはログを圧縮する場合にZを、ログ更新メッセージを入れる場合はBを、ログ更新時にシグナルを送らない場合はNを記述
  • 第8フィールドはログを出力するデーモンのpidファイルを指定(省略可能)
  • 第9フィールドは送るシグナルを指定(省略可能、デフォルトはSIGHUP)

Apahce にログファイルが変更されたことを伝えるのに SIGUSR1 というシグナルを送る必要があります。UNIX(POSIX) の SIGUSR1 の値が 30 番なのでその値を書いてください。

/var/log/httpd/access_log               644  7    *   $MLD4 Z     /var/run/httpd.pid SIGUSR1 
/var/log/httpd/error_log                644  7    *   $MLD4 Z     /var/run/httpd.pid SIGUSR1

$MLD4は毎月の最終日の午前4時にログを更新する意味です。