Apacheのセッティング

せりか式 - Linux - サーバのセッティング - Apacheのセッティング

Apache 2.0.47 の設定メモです

Apache 2.0.47のインストール

  1. httpd.apache.orgからapacheの最新版をダウンロードする
  2. ダウンロードしたファイルを /usr/local/src/ に移動し、解凍する
    $ mv httpd-2.0.47.tar.gz /usr/local/src
    $ cd /usr/local/src
    $ tar xvzf httpd-2.0.47.tar.gz
  1. makeファイルを作る
    Apacheは標準では/usr/local/apache2/にインストールされますが、もし他のディレクトリにインストールしたい場合は、--prefix=/dirのようにprefixオプションでインストール先を指定してください
    $ tar xvzf httpd-2.0.47.tar.gz
    $ cd httpd-2.0.47
    $ ./configure
  1. コンパイルしてインストール
    $ ./configure
    $ make
    # su
    # make install
  1. /usr/local/apache2/conf/httpd.confを編集する
    以下では、最低限しておかないといけない設定、知っておいた方がいいと思われる箇所のみを挙げています
    これ以上の設定は自分で調べて設定するようにお願いします
    267: Group #-1
      apacheの動作するUser/Groupです
      このまま、もしくはnogroup(nobody)にします
    276: ServerAdmin you@your.address
      サーバ管理者のメールアドレスを指定します
      404エラーや500エラーの時表示されます
    290: ServerName
      サーバの名前です
      自動的に設定されますが、自動で設定できないときは手動で名前を指定することになります
      もし、apacheをインストールしたホストがDNSに登録されていなければ名前の変わりにIPアドレスを入れておいてください
    306: DocumentRoot
      ホスト名だけで接続したときに表示されるディレクトリの指定です
      (http://xxx.xxx.xxx.xxx/で表示されるディレクトリのこと)
    331: <Directory "/usr/local/apache2/htdocs">
      このディレクトリは先ほどのDocumentRootを指定してください
    366: UserDir public_html
      各ユーザがホームページを作成する時のディレクトリです
      ホームディレクトリの直下にここで指定したディレクトリを作成すると
      http://xxx.xxx.xxx.xxx/~Username/という名前でアクセスできるようになります
    372-383:
      UserDirの細かい設定になります
      cgi-binのみでcgiの実行を許可する等の設定はここに書くことになります
    393: DirectoryIndex
      ファイル名を省略したときに代用で表示されるファイル名のリストです
      cgiやssiを利用したい場合はindex.cgiやindex.shtml等をリストに追加しておくといいです
    501, 507, 508, 514:
      カスタムログの設定です
      必要なログのタイプによってコメントアウトしてください
    592: ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin"
      cgi-binディレクトリの指定です
      特定のディレクトリにcgiをまとめて設置するときはディレクトリを指定してください
      それ以外の場合はコメントアウトして下さい
    606-611:
      先ほどのScriptAliasで指定したディレクトリを指定してください
      ScriptAliasをコメントアウトしたときは、この部分もコメントアウトしてください
    775: LanguagePriority ja en ...以下略
      言語の優先順位です
      日本向けのサイトを公開するのであれば、jaを一番左側に持ってきておいた方がいいです
    794: AddDefaultCharset shift_jis
      デフォルトで表示されるキャラクタセットです
      cgi等の出力でcharsetを省略したときに、自動的に付加されます
    857: AddHandler cgi-script .cgi
      拡張子がcgiのファイルがあったときcgiスクリプトとして解釈するようにします
      ScriptAliasで指定したディレクトリ以外でcgiスクリプトを利用した場合は、コメントを削除してください
      また、同時にcgiを設置するディレクトリにOptionsExecCGIを指定しておく必要があります
    882, 883: .shtml
      拡張子がshtmlのファイルがあったときSSI解析をするようにします
      また、同時にshtmlを設置するディレクトリにOptionsIncludesを指定しておく必要があります
    898-902: ErrorDocument
      402エラーや500エラーになったとき表示するテキストやhtmlファイルを指定します
  1. httpd.confのチェック
    ここで、Syntax OKとでればhttpd.confは問題なく書けています
    もしエラーがある場合はエラーのある付近の行番号が表示されますので、httpd.confを修正してください
    # make install
    # /usr/local/apache2/bin/apachectrl -t
最後に起動です
    # /usr/local/apache2/bin/apachectrl -t
    # /usr/local/apache2/bin/apachectrl start

ログのローテーション

標準のままログを保存していくと非常に大きなサイズになってしまいます
そこで、apacheではrotetelogsというプログラムが提供されています
例えば、ErrorLogをローテートするには以下のようにします
変更前
    # Error Log rogs/error_log
変更後
    # ErrorLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log.%Y%m%d 604800 540"
ここでは、604800秒(7日間)ごとに error_log.年月日 というファイルを作ってログを保存しています
最後の540は日本時間用のオフセット値です
他にも、ファイルのサイズを指定してローテートすることもできます
詳しくはman rotatelogsを見てください

カスタムログの指定

ログのフォーマットは独自で設定することができ、 また、必要に応じて複数のログをとることができます
    ホスト名 ユーザ名 アクセス日時 ステータス "リファラー" -> "URL"
を取得したい場合は、以下のようなLogFormatになります
最後のsimpleはLogFormat名です
    LogFormat "%h %u %t %>s \"%{Referer}i\" -> \"%U\"" simple
    CustomLog "logs/simple.log" simple

条件の指定

ログをとるときに、条件を指定することができます
といった指定が可能です
    1: SetEnvIfNoCase Request_URI "\.(gif|jpe?g|png)$" images no_log
    2: SetEnvIf Remote_Addr "127\.0\.0\.1" local_host no_log
    3: CustomLog "logs/simple.log" simple env=!no_log
    3: CustomLog "logs/images.log" img env=images
Request_URIに対し、大文字小文字を無視して、正規表現で"\.(gif|jpe?g|png)$"をマッチングし、一致すればimagesとno_logを1に設定する
Remote_Addrに対し、正規表現で"127\.0\.0\.1"をマッチングし、一致すればlocal_hostとno_logを1に設定する
no_logが設定されていなければ(env=!no_log)simpleログを取らない
imagesが設定されていれば(env=images)imgログを取る
詳しいことはマニュアルのログファイルとモジュールのmod_setenvifの項目を参考にしてください


トップへ