httpd 一键编译安装脚本(centos6&7_httpd2.2&2.4)

httpd 一键编译安装脚本(centos6&7_httpd2.2&2.4)

说明

此安装脚本中涉及的服务启动脚本需要单独编写 : httpd启动脚本 https://www.cnblogs.com/shichangming/p/10154936.html

httpd_install.sh

#!/bin/bash
# *****************************************************
# author     : shchangming
# date       : 2018-06-06
# QQ         : 414945814
# Description: this script is to install http one shoot
# *****************************************************

CENTOS_VER=`egrep -wo '[0-9]+' /etc/centos-release | head -n 1`

httpd_list() {
echo "
which httpd version would you like to install:
**********************************************
httpd-2.2.18
httpd-2.2.20
httpd-2.2.26
httpd-2.4.37
or you can input other version
quit | q
**********************************************
"
}

BASE_DIR="/web"

check_pre() {
	if [ -d ${BASE_DIR}/${1} ];then
		echo "${1} has been installed!"
		exit
	fi
}

change_yum() {
	mkdir /etc/yum.repos.d/old
	mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/old
	wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-${CENTOS_VER}.repo
	wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-${CENTOS_VER}.repo
}

env_pre() {
	LISTNO="${1}"
	### 安装其他必要的依赖
	yum clean all
	yum groupinstall "Development Tools" -y
	DEP_LIST1="gcc glibc apr-devel apr-util-devel pcre-devel openssl-devel expat-devel make"
	DEP_LIST2="gcc glibc pcre-devel openssl-devel expat-devel make"
	if [ $LISTNO == "1" ];then
		for dep in "${DEP_LIST1}";do
		        rpm -q "${dep}" &> /dev/null || yum install $dep -y
		done
	elif [ $LISTNO == "2" ];then
                for dep in "${DEP_LIST2}";do
                        rpm -q "${dep}" &> /dev/null || yum install $dep -y
                done
	fi
}

get_http_package() {
	HTTP_VER=$1
	[ -f ${HTTP_VER}.tar.bz2 ] || wget -t 5 -w 10 https://archive.apache.org/dist/httpd/${HTTP_VER}.tar.bz2
	tar xf ${HTTP_VER}.tar.bz2 &>/dev/null || exit
}

install() {
	INSTALL_DIR="$1"
	WITH_APR="$2"
	[ ! -d ${BASE_DIR} ] && mkdir -p ${BASE_DIR}
	./configure --prefix=${BASE_DIR}/${INSTALL_DIR} \
	--enable-so \
	--enable-ssl \
	--enable-cgi \
	--enable-rewrite \
	--with-zlib \
	--with-pcre \
	--enable-modules=most \
	--enable-mpms-shared=all \
	--with-mpm=prefork ${WITH_APR} && \
	make -j 4 && make install && \
	ln -s ${INSTALL_DIR} ${BASE_DIR}/httpd
	id apache || useradd -r -s /sbin/nologin apache
	cp ${BASE_DIR}/httpd/conf/httpd.conf{,.bak}
	sed -ri "/^(User|Group)/s/daemon/apache/" ${BASE_DIR}/httpd/conf/httpd.conf
	sed -ri "/^#ServerName/s/^#//" ${BASE_DIR}/httpd/conf/httpd.conf
}

get_httpd_init() {
	HTTPD_INIT="$1"
	if [ -f ${HTTPD_INIT} ];then
		if [ ! -f /etc/init.d/${HTTPD_INIT} ];then
			\cp ${HTTPD_INIT} /etc/init.d/${HTTPD_INIT}
			chmod +x /etc/init.d/${HTTPD_INIT}
			chkconfig --add ${HTTPD_INIT} ;chkconfig ${HTTPD_INIT} on
			return 0
		else
			echo "/etc/init.d/${HTTPD_INIT} exsit." ;return 1
		fi
	else
		echo "${HTTPD_INIT} not found,make it by yourself." ;return 1
	fi
}

main() {
httpd_list
read -p "please select version:"  http_version
case "$1" in
	6)
		case "$http_version" in
			httpd-2.4.[2-3][6-7])
				check_pre $http_version
				change_yum
				env_pre 2
				get_http_package $http_version
				APR_DEPS="apr-1.6.5 apr-util-1.6.1"
				for apr_dep in ${APR_DEPS};do
					[ -f ${apr_dep}.tar.bz2 ] || wget -t 5 -w 10 http://mirrors.tuna.tsinghua.edu.cn/apache/apr/${apr_dep}.tar.bz2
					tar xf ${apr_dep}.tar.bz2 &>/dev/null
					if [ $? -ne 0 ];then
						echo "${apr_dep}.tar.bz2 download failed";exit
					fi
				done
				cp -av apr-1.6.5 ${http_version}/srclib/apr
				cp -av apr-util-1.6.1 ${http_version}/srclib/apr-util
				cd $http_version
				install $http_version --with-included-apr
				cd ../
				echo export PATH=${BASE_DIR}/httpd/bin:'$PATH' >  /etc/profile.d/httpd24.sh
				. /etc/profile.d/httpd24.sh
				grep "MANPATH ${BASE_DIR}/httpd/man" /etc/man.config || echo "MANPATH ${BASE_DIR}/httpd/man" >> /etc/man.config
				get_httpd_init httpd && /etc/init.d/httpd start
				;;

			httpd-2.2.[1-2-3][0-1-2-3-4-5-6-7-8-9])
				check_pre $http_version
				change_yum
				env_pre 1
				get_http_package $http_version && cd $http_version
				install $http_version
				cd ../
				echo export PATH=${BASE_DIR}/httpd/bin:'$PATH' >  /etc/profile.d/httpd22.sh
				. /etc/profile.d/httpd22.sh
				grep "MANPATH ${BASE_DIR}/httpd/man" /etc/man.config || echo "MANPATH ${BASE_DIR}/httpd/man" >> /etc/man.config
				get_httpd_init httpd && /etc/init.d/httpd start
				;;

			quit|q)
				echo "Bye" && exit
				;;

			*)
				echo "do not support this version" && exit
				;;
		esac
		;;
	7)
		case "$http_version" in
			httpd-2.2.[2][6-7-8-9]|httpd-2.4.[1-2-3-4][0-1-2-3-4-5-6-7-8-9])
				check_pre $http_version
				change_yum
				env_pre 1
				get_http_package $http_version && cd $http_version
				install $http_version
				cd ../
				echo export PATH=${BASE_DIR}/httpd/bin:'$PATH' >  /etc/profile.d/httpd24.sh
				. /etc/profile.d/httpd24.sh
				grep "MANDATORY_MANPATH ${BASE_DIR}/httpd/man" /etc/man_db.conf || echo "MANDATORY_MANPATH ${BASE_DIR}/httpd/man" >> /etc/man_db.conf 
				httpd -t && httpd
				;;

			quit|q)
				echo "Bye" && exit
				;;

			*)
				echo "do not support this version" && exit
				;;
		esac
esac

}
main $CENTOS_VER

本文链接:https://www.cnblogs.com/shichangming/p/10153464.html

posted @ 2018-12-21 00:32  scm1911  阅读(613)  评论(0编辑  收藏  举报
/** ####################################################################### */