1.
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.0.tar.gz
tar xvf httpd-2.4.28.tar.bz2
2.
cp -a apr-1.6.2 httpd-2.4.28/srclib/apr
cp -a apr-util-1.6.0 httpd-2.4.28/srclib/apr-util
3.
getent passwd apache查看apache帐户
须保证apache用户为系统用户
则需要userdel -r apache删除用户重新创建
创建apache用户需指定家目录及登录shell
groupadd -g 48 -r apache;useradd -r -u 48 -g apache -s /sbin/nologin -d /usr/share/httpd -c "Apache" apache 规范点的写法如此,也可以简单的写
useradd -r -d /app/httpd24 -m -s /sbin/nologin apache
4.
缺包装包
yum groupnstall 'development-tools'
yum install openssl-devel pcre-devel expat-devel
5.
cd httpd-2.4.28/
./configure --prefix=/app/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
6.make -j 4 && make install
7.
path变量
vim /etc/profile.d/httpd.sh
PATH=/app/httpd24/bin:$PATH
. /etc/profile.d/httpd.sh
8.
修改运行服务的用户
vim /app/http24/conf/httpd.conf
User apache
Group apache
9.准备服务脚本
cd /etc/init.d
cp httpd httpd24
服务脚本httpd,这里改为httpd24以便区分。httpd为原httpd包自带的,rpm -q --scripts httpd查看之前的服务脚本。或者从别的地方拷一个。这里阿拉拷贝好了一个。
#!/bin/bash
#
#httpdStartupscriptfortheApacheHTTPServer
#
#chkconfig:-8515
#description:TheApacheHTTPServerisanefficientandextensible\
#serverimplementingthecurrentHTTPstandards.
#processname:httpd
#config:/etc/httpd/conf/httpd.conf
#config:/etc/sysconfig/httpd
#pidfile:/var/run/httpd/httpd.pid
#
###BEGININITINFO
#Provides:httpd
#required-Start:$local_fs$remote_fs$network$named
#required-Stop:$local_fs$remote_fs$network
#Should-Start:distcache
#Short-Description:startandstopApacheHTTPServer
#Description:TheApacheHTTPServerisanextensibleserver
#implementingthecurrentHTTPstandards.
###ENDINITINFO
#Sourcefunctionlibrary.
./etc/rc.d/init.d/functions
if[-f/etc/sysconfig/httpd];then
./etc/sysconfig/httpd
fi
#StarthttpdintheClocalebydefault.
HTTPD_LANG=${HTTPD_LANG-"C"}
#Thiswillpreventinitlogfromswallowingupapass-phrasepromptif
#mod_sslneedsapass-phrasefromtheuser.
INITLOG_ARGS=""
#SetHTTPD=/usr/sbin/httpd.workerin/etc/sysconfig/httpdtouseaserver
#withthethread-based"worker"MPM;BEWARNEDthatsomemodulesmaynot
#workcorrectlywithathread-basedMPM;notablyPHPwillrefusetostart.
#Pathtotheapachectlscript,serverbinary,andshort-formformessages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
STOP_TIMEOUT=${STOP_TIMEOUT-10}
#Thesemanticsofthesetwofunctionsdifferfromthewayapachectldoes
#things--attemptingtostartwhilerunningisafailure,andshutdown
#whennotrunningisalsoafailure.sowejustdoitthewayinitscripts
#areexpectedtobehavehere.
start(){
echo-n$"Starting$prog:"
LANG=$HTTPD_LANGdaemon--pidfile=${pidfile}$httpd$OPTIONS
RETVAL=$?
echo
[$RETVAL=0]&&touch${lockfile}
return$RETVAL
}
#Whenstoppinghttpd,adelay(ofdefault10second)isrequired
#beforeSIGKILLingthehttpdparent;thisgivesenoughtimeforthe
#httpdparenttoSIGKILLanyerrantchildren.
stop(){
status-p${pidfile}$httpd>/dev/null
if[[$?=0]];then
echo-n$"Stopping$prog:"
killproc-p${pidfile}-d${STOP_TIMEOUT}$httpd
else
echo-n$"Stopping$prog:"
success
fi
RETVAL=$?
echo
[$RETVAL=0]&&rm-f${lockfile}${pidfile}
}
reload(){
echo-n$"Reloading$prog:"
if!LANG=$HTTPD_LANG$httpd$OPTIONS-t>&/dev/null;then
RETVAL=6
echo$"notreloadingduetoconfigurationSyntaxerror"
failure$"notreloading$httpdduetoconfigurationSyntaxerror"
else
#ForceLSBbehavIoUrfromkillproc
LSB=1killproc-p${pidfile}$httpd-HUP
RETVAL=$?
if[$RETVAL-eq7];then
failure$"httpdshutdown"
fi
fi
echo
}
#Seehowwewerecalled.
case"$1"in
start)
start
;;
stop)
stop
;;
status)
status-p${pidfile}$httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart|try-restart)
ifstatus-p${pidfile}$httpd>&/dev/null;then
stop
start
fi
;;
force-reload|reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl$@
RETVAL=$?
;;
*)
echo$"Usage:$prog{start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
RETVAL=2
esac
exit$RETVAL
更改相关路径
vim httpd24
apachectl=/app/httpd24/bin/apachectl
httpd={HTTPD-/app/httpd24/bin/httpd}
pidfile={PIDFILE-/app/httpd24/logs/http.pid}
lockfile={LOCKFILE-/var/lock/subsys/httpd24}
启动服务
chkconfig --add httpd24
chkconfig httpd24 on
service httpd24 start
10.测试