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
[Blog:技術系メモ http://t.co/njRIG7DZ ] httpd-2.4系のソースインストールスクリプト。