カテゴリ

Apache 2.4

CentOS 6系の環境にhttpd-2.4系をソースインストールする場合に使える決め打ちインストールスクリプト。
途中で何かのライブラリがないなどのエラーが発生している場合はそのライブラリ(yum install **-devel など)をインストールして、スクリプトが作成した作業ディレクトリなどを削除のうえ、再度実行してみてください。

#! /bin/sh

APRPACK=apr-1.4.6
APRUTILPACK=apr-util-1.4.1
HTTPDPACK=httpd-2.4.2

APRDIR=/usr/local/apr
APRUTILDIR=${APRDIR}

HTTPDINIT=/etc/rc.d/init.d/httpd
HTTPDSYSCONF=/etc/sysconfig/httpd

SCRDIR=$( dirname $0 )

# スクリプト直下のディレクトリにapr / httpd それぞれの作業ディレクトリ作成
chkdir(){
    [ ! -d ${SCRDIR}/apr ] && mkdir -p ${SCRDIR}/apr
    [ ! -d ${SCRDIR}/httpd ] && mkdir -p ${SCRDIR}/httpd
}

# インストール共通部
instpack(){
    wget http://ftp.riken.jp/net/apache/$3/$1.tar.gz
    tar zxvf $1.tar.gz
    pushd $1
    ./configure $2
    make
    make install
    popd
}

# APRのライブラリパスを登録
setldconfig(){
    echo ${APRDIR}/lib > /etc/ld.so.conf.d/apr.conf
    if [ ${APRDIR} != ${APRUTILDIR} ]; then
        echo ${APRUTILDIR}/lib >> /etc/ld.so.conf.d/apr.conf
    fi
    ldconfig
}


# 起動スクリプト設定
#   build/rpm/httpd.init をベースに。
#   以前は起動スクリプトの中身自体をいじってパスを変更していたが、
#   /etc/sysconfig/httpd を使って変更する方が正攻法な気がするので
#   そっちで対応。
#   ただし、check13 については実行する意味はほぼないのでコメントアウト
sethttpdinit(){

# /etc/rc.d/init.d/httpd
sed -e 's/check13 .* exit 1/# \0/g' ${HTTPDPACK}/build/rpm/httpd.init > ${HTTPDINIT}
chmod +x ${HTTPDINIT}


# /etc/sysconfig/httpd
cat << '_EOT_' > ${HTTPDSYSCONF}
HTTPDROOT=/usr/local/apache2

HTTPD=${HTTPDROOT}/bin/httpd
PIDFILE=${HTTPDROOT}/logs/httpd.pid
_EOT_
}

chkdir
cd ${SCRDIR}/apr

instpack ${APRPACK} "--prefix=${APRDIR}" apr
instpack ${APRUTILPACK} "--prefix=${APRUTILDIR} --with-apr=${APRDIR}" apr
setldconfig

cd ../httpd

yum list installed | grep pcre-devel || yum install -y pcre-devel
instpack ${HTTPDPACK} "--with-apr=${APRDIR}/ --with-apr-util=${APRUTILDIR}/ --enable-mods-shared=all" httpd
sethttpdinit

コメント

いただいたコメント
  1. [Blog:技術系メモ http://t.co/njRIG7DZ ] httpd-2.4系のソースインストールスクリプト。