Apacheのインストール〜Debian,RedHat?系〜

経緯

  • インストールする度に、結局調べたりしていて、何かに残さないと意味がないため。なので自分のノウハウというよりも、単なるログであって、参考にしたリンク集でもある。ことに今回、DebianとCentOSで1.3系から2.2系へ移行した記念でもある。

準備

  • SSLを使わなければ不要
    • Debian
      • そのままconfigureすると
        No recognized SSL/TLS toolkit detected
        とでるので先にSSLをいれる
        apt-get update
        apt-get install openssl libssl-dev
    • RedHat?
      • RPMで先にapacheが入っているか確認
        rpm -qa | grep apache
        入ってたら消してから入れる。
        yum -y install openssl-devel

ソースの入手

  •  最新のソースを入手する。wgetのPオプションで取得先ディレクトリを指定する。シンボリックリンクにすることでバージョンアップを容易にする。
    wget -P /usr/local/src http://ftp.riken.jp/net/apache/httpd/httpd-2.2.8.tar.gz
    cd /usr/local/src/
    tar xzvf httpd-2.2.8.tar.gz
    ln -sfn /usr/local/httpd-2.2.8 /usr/local/httpd

コンパイル

cd httpd-2.2.8

CGI・SSI・SSL・DAVなし

./configure --prefix=/usr/local/httpd \
--enable-so \
--disable-cgi \
--disable-include \
--disable-dav \
--disable-ssl \
--enable-encoding \
--enable-rewrite=shared \
--enable-proxy=shared \
--with-mpm=prefork

SSLあり

--enable-ssl=shared \

DAVあり

--enable-encoding \
--enable-dav=shared \
--enable-dav_fs=shared \
  • prefix:お決まり。インストール先の指定
  • enable-so:DSOを有効。自分にとってはほぼ必須
  • enable-ssl:SSLを有効に。必要があれば。
  • enable-rewrite:URLの書き換えを有効に。
  • enable-proxy:プロキシサーバを有効に。
  • enable-encoding:なんだっけ;昔からONにしているで(危険)
  • enable-dav:Web-DAVを有効に。
  • enable-dav_fs:Web-DAV
  • with-mpm=prefork:Apacheをあらかじめforkしておく、というApache伝統の動作に。workerにするとスレッド動作になり速いが、PHPがスレッドセーフじゃないらしく安全のためpreforkに。
  • with-expat=builtin:64bit環境ではつけないとダメかも。http://d.hatena.ne.jp/defiant/参照。
  • =sharedにするとDSOで組み込まれる。つまり動的。

あとは、

make 
make install

設定

  • /usr/local/httpd/conf/httpd.conf
    • ServerRoot?
    • User httpd,Group httpd
      ログインできない&ホームディレクトリのないhttpd:httpdユーザの作成
      groupadd httpd
      useradd -g httpd -d /var/empty/httpd -s /sbin/nologin httpd
  • ServerAdmin?
  • ServerName?
  • DocumentRoot?
  • /ディレクティブを安全に
    <Directory />
       Options None
       AllowOverride None
       Order deny,allow
       Deny from all
    </Directory>
  • ソースを置くディレクティブを適切に
    <Directory "/hoge/huga">
       Options -Indexes FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
    </Directory>
  • "htdocs"ディレクティブをコメントアウト
  • "cgi-bin"ディレクティブをコメントアウト
  • 必要ならエイリアスを使って(<IfModule? alias_module>内)
    Alias /dest /src
  • /usr/local/httpd/conf/extra/httpd-default.conf
    • KeepAlive? On
    • ServerTokens? Prod
    • ServerSignature? Off
    • HostnameLookups? Off
      • IPからの逆引きを行うか。重い処理なのでOFF。その分ログはさびしいかも?
  • /usr/local/httpd/conf/extra/httpd-mpm.conf Apacheの動作モデルにあったものを設定。 今回はworkerなので<IfModule? mpm_worker_module>ディレクティブを修正

起動とか

  • 設定のチェック
    /usr/local/httpd/bin/apachectl configtest
  • 安全な再起動
    /usr/local/httpd/bin/apachectl graceful
  • 安全な停止
    /usr/local/httpd/bin/apachectl graceful-stop
  • 自動起動スクリプト
    • Debian
      install -o root -g root -m 755 /usr/local/httpd/bin/apachectl /etc/init.d/apache
      update-rc.d apache defaults 85 15
      /etc/init.d/apache start
      パッケージで入れてたら
      /etc/init.d/httpd start
  • RedHat?系 ソース内のスクリプトを修正する。 修正するのは、パスとかchkconfigのランレベルとか。
    cp /usr/local/src/httpd-2.2.8/build/rpm/httpd.init /etc/rc.d/init.d/httpd 
    chmod 755 /etc/rc.d/init.d/httpd
    /sbin/chkconfig --add httpd
    /sbin/chkconfig --level 2345 httpd on
    /sbin/chkconfig --list httpd
    /etc/rc.d/init.d/httpd restart

困ったこと

パッケージで入れる

  • yumなら
    yum install httpd
    aptなら
    apt-get install apache2 apache2-mpm-worker apache2.2-common apache2-utils
    • phpを入れる場合、preforkで動作するので「apache2-mpm-worker」は不要

起動

/etc/init.d/apache2 start

or

/etc/init.d/httpd start

設定

  • 少なくともdebianのapacheの場合、httpd.confではなくapache2.confに設定を書く模様

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-11-28 (日) 21:47:36 (2432d)