案例要求:
1、安装不同的Apache版本;
2、apache官网搜索可用版本,输入版本号进行源码安装
3、检测系统是否已经存在,是否可以覆盖版本;
4、支持单台机器多软件服务
5、启动Apache,并且测试访问;
脚本内容:
#!/bin/bash
#author by toyix
#auto source code install httpd
#2020年7月27日 12:07:21
###############################
if [ $UID -ne 0 ];then
echo -e '\033[33m ------------ Permission no enough, please use root ---------------\033[0m'
exit 1
fi
HTTPD_BASE="/usr/local/apache"
HTTPD_PORT="80"
rpm -qa |grep httpd
if [ $? -eq 0 ];then
while true
do
read -p " httpd is yum installed,remove it ? Y or N :" Y_N
if [ "${Y_N}" == "Y" -o "${Y_N}" == "N" -o "${Y_N}" == "y" -o "${Y_N}" == "n" -o "${Y_N}" == "yes" -o "${Y_N}" == "YES" ];then
echo $Y_N
break
fi
done
if [ ${Y_N} == y -o ${Y_N} == Y -o ${Y_N} == yes -o ${Y_N} == YES ];then
echo -e '\033[32m removing httpd soft ... \033[0m'
rpm -qa |grep httpd |xargs rpm -e --nodeps
rpm -qa|grep httpd
if [ $? -ne 0 ];then
echo -e '\033[33m remove httpd soft failed,please!\033[0m'
exit 1
fi
fi
fi
echo -e '\033[32m 正在从apache官网搜索可用的版本列表,请稍等。。。 \033[0m'
echo ""
curl http://archive.apache.org/dist/httpd/|awk -F">" '{print $2}'|grep -Ew 'httpd-[0-9].*[0-9].tar.gz' -o|uniq|grep -E '[0-9].[0-9].[0-9]{1,2}'>httpversions.txt
cat httpversions.txt
#echo -e '\033[32m According to the above tips,choose version to install \033[0m'
while true
do
echo -e '\033[32m 根据以上搜索结果列表,请正确输入要安装的版本,如:2.4.12 \033[0m'
read -p ".............................................................. : " H_VSR
echo ""
cat httpversions.txt |grep -Ew "${H_VSR}" >/dev/null 2>&1
if [ $? -eq 0 ];then
echo ${H_VSR}|grep -Ew '^[0-9]\.[0-9]\.[0-9]{1,3}$' >/dev/null 2>&1
if [ $? -ne 0 ];then
echo -e '\033[33m 请输入正确的安装版本,如:2.4.12 \033[0m'
else
\rm -rf httpversions.txt
break
fi
fi
done
echo ""
echo -e '\033[32m 下载httpd-'${H_VSR}'.tar.gz ... \033[0m'
wget -c http://archive.apache.org/dist/httpd/httpd-${H_VSR}.tar.gz
yum install gcc gcc-c++ make expat-devel apr apr-util apr-devel apr-util-devel pcre pcre-devel libxml2 libxml2-devel bzip2 bzip2-devel curl-devel -y
if [ -d ${HTTPD_BASE} ];then
while true
do
echo -e '\033[33m ----------------------------------------------- \033[0m'
read -p "目录${HTTPD_BASE}已存在,是存覆盖安装,YES or NO : " OVER_INSTALL_Y_N
if [ "${OVER_INSTALL_Y_N}" == "YES" -o "${OVER_INSTALL_Y_N}" == "Y" -o "${OVER_INSTALL_Y_N}" == "y" -o "${OVER_INSTALL_Y_N}" == "yes" ];then
break
elif [ "${OVER_INSTALL_Y_N}" == "NO" -o "${OVER_INSTALL_Y_N}" == "N" -o "${OVER_INSTALL_Y_N}" == "n" -o "${OVER_INSTALL_Y_N}" == "no" ];then
while true
do
read -p "请输入新的目录名,如apache_bbs等 " NEW_HTTPD_BASE
echo ${NEW_HTTPD_BASE}|grep " "
if [ -z ${NEW_HTTPD_BASE} ];then
echo "${NEW_HTTPD_BASE}"
elif [ -d "/usr/local/${NEW_HTTPD_BASE}" ];then
read -p " 目录${NEW_HTTPD_BASE}已存在,请重新输入: " NEW_HTTPD_BASE
else
break
fi
done
HTTPD_BASE="/usr/local/${NEW_HTTPD_BASE}"
echo ${HTTPD_BASE}
while true
do
read -p "请输入${NEW_HTTPD_BASE}对应的listen port :" NEW_HTTP_PORT
if [ "${NEW_HTTP_PORT}" -gt 80 ];then >/dev/null 2>&1
HTTPD_PORT=${NEW_HTTP_PORT}
break
fi
done
break
fi
done
fi
tar -zxvf httpd-${H_VSR}.tar.gz
cd httpd-${H_VSR}
./configure --prefix=${HTTPD_BASE} \
--enable-so \
--enable-rewrite
make
make install
sed -i -e "s/#ServerName www.example.com:80/ServerName www.example.com:${HTTPD_PORT}/g" ${HTTPD_BASE}/conf/httpd.conf
sed -i -e "s/Listen 80/Listen ${HTTPD_PORT}/g" ${HTTPD_BASE}/conf/httpd.conf
sed -i -e "s#/usr/local/apache#${HTTPD_BASE}#g" ${HTTPD_BASE}/conf/httpd.conf
${HTTPD_BASE}/bin/apachectl restart
firewall-cmd --zone=public --add-port=${HTTPD_PORT}/tcp --permanent
firewall-cmd --reload
netstat -tnlp |grep -w httpd
执行脚本:
[root@localhost data]# sh autoSourceCodeAPACHE.sh
正在从apache官网搜索可用的版本列表,请稍等。。。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 201k 0 201k 0 0 50015 0 --:--:-- 0:00:04 --:--:-- 54309
httpd-2.0.35.tar.gz
httpd-2.0.36.tar.gz
httpd-2.0.39.tar.gz
httpd-2.0.40.tar.gz
httpd-2.0.42.tar.gz
httpd-2.0.43.tar.gz
httpd-2.0.44.tar.gz
httpd-2.0.45.tar.gz
httpd-2.0.46.tar.gz
httpd-2.0.47.tar.gz
httpd-2.0.48.tar.gz
httpd-2.0.49.tar.gz
httpd-2.0.50.tar.gz
httpd-2.0.51.tar.gz
httpd-2.0.52.tar.gz
httpd-2.0.53.tar.gz
httpd-2.0.54.tar.gz
httpd-2.0.55.tar.gz
httpd-2.0.58.tar.gz
httpd-2.0.59.tar.gz
httpd-2.0.61.tar.gz
httpd-2.0.63.tar.gz
httpd-2.0.64.tar.gz
httpd-2.0.65.tar.gz
httpd-2.2.0.tar.gz
httpd-2.2.10.tar.gz
httpd-2.2.11.tar.gz
httpd-2.2.12.tar.gz
httpd-2.2.13.tar.gz
httpd-2.2.14.tar.gz
httpd-2.2.15.tar.gz
httpd-2.2.16.tar.gz
httpd-2.2.17.tar.gz
httpd-2.2.18.tar.gz
httpd-2.2.19.tar.gz
httpd-2.2.2.tar.gz
httpd-2.2.20.tar.gz
httpd-2.2.21.tar.gz
httpd-2.2.22.tar.gz
httpd-2.2.23.tar.gz
httpd-2.2.24.tar.gz
httpd-2.2.25.tar.gz
httpd-2.2.26.tar.gz
httpd-2.2.27.tar.gz
httpd-2.2.29.tar.gz
httpd-2.2.3.tar.gz
httpd-2.2.31.tar.gz
httpd-2.2.32.tar.gz
httpd-2.2.34.tar.gz
httpd-2.2.4.tar.gz
httpd-2.2.6.tar.gz
httpd-2.2.8.tar.gz
httpd-2.2.9.tar.gz
httpd-2.3.6.tar.gz
httpd-2.3.8.tar.gz
httpd-2.4.1.tar.gz
httpd-2.4.10.tar.gz
httpd-2.4.12.tar.gz
httpd-2.4.16.tar.gz
httpd-2.4.17.tar.gz
httpd-2.4.18.tar.gz
httpd-2.4.2.tar.gz
httpd-2.4.20.tar.gz
httpd-2.4.23.tar.gz
httpd-2.4.25.tar.gz
httpd-2.4.26.tar.gz
httpd-2.4.27.tar.gz
httpd-2.4.28.tar.gz
httpd-2.4.29.tar.gz
httpd-2.4.3.tar.gz
httpd-2.4.32.tar.gz
httpd-2.4.33.tar.gz
httpd-2.4.34.tar.gz
httpd-2.4.35.tar.gz
httpd-2.4.37.tar.gz
httpd-2.4.38.tar.gz
httpd-2.4.39.tar.gz
httpd-2.4.4.tar.gz
httpd-2.4.41.tar.gz
httpd-2.4.43.tar.gz
httpd-2.4.6.tar.gz
httpd-2.4.7.tar.gz
httpd-2.4.9.tar.gz
根据以上搜索结果列表,请正确输入要安装的版本,如:2.4.12
.............................................................. : 2.4.18
下载httpd-2.4.18.tar.gz ...
--2020-07-27 12:08:22-- http://archive.apache.org/dist/httpd/httpd-2.4.18.tar.gz
Resolving archive.apache.org (archive.apache.org)... 138.201.131.134, 2a01:4f8:172:2ec5::2
Connecting to archive.apache.org (archive.apache.org)|138.201.131.134|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7051797 (6.7M) [application/x-gzip]
Saving to: ‘httpd-2.4.18.tar.gz’
100%[=============================================================================================================================>] 7,051,797 552KB/s in 15s
2020-07-27 12:08:37 (473 KB/s) - ‘httpd-2.4.18.tar.gz’ saved [7051797/7051797]
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
Package gcc-4.8.5-39.el7.x86_64 already installed and latest version
Package gcc-c++-4.8.5-39.el7.x86_64 already installed and latest version
Package 1:make-3.82-24.el7.x86_64 already installed and latest version
Package expat-devel-2.1.0-11.el7.x86_64 already installed and latest version
Package apr-1.4.8-5.el7.x86_64 already installed and latest version
Package apr-util-1.5.2-6.el7.x86_64 already installed and latest version
Package apr-devel-1.4.8-5.el7.x86_64 already installed and latest version
Package apr-util-devel-1.5.2-6.el7.x86_64 already installed and latest version
Package pcre-8.32-17.el7.x86_64 already installed and latest version
Package pcre-devel-8.32-17.el7.x86_64 already installed and latest version
Package libxml2-2.9.1-6.el7.4.x86_64 already installed and latest version
Package libxml2-devel-2.9.1-6.el7.4.x86_64 already installed and latest version
Package bzip2-1.0.6-13.el7.x86_64 already installed and latest version
Package bzip2-devel-1.0.6-13.el7.x86_64 already installed and latest version
Package libcurl-devel-7.29.0-57.el7.x86_64 already installed and latest version
Nothing to do
-----------------------------------------------
目录/usr/local/apache已存在,是存覆盖安装,YES or NO : n
请输入新的目录名,如apache_bbs等 bbs
/usr/local/bbs
请输入bbs对应的listen port :88
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
.......................
make[2]: Leaving directory `/data/httpd-2.4.18/support'
Installing configuration files
mkdir /usr/local/bbs/conf
mkdir /usr/local/bbs/conf/extra
mkdir /usr/local/bbs/conf/original
mkdir /usr/local/bbs/conf/original/extra
Installing HTML documents
mkdir /usr/local/bbs/htdocs
Installing error documents
mkdir /usr/local/bbs/error
Installing icons
mkdir /usr/local/bbs/icons
mkdir /usr/local/bbs/logs
Installing CGIs
mkdir /usr/local/bbs/cgi-bin
Installing header files
mkdir /usr/local/bbs/include
Installing build system files
mkdir /usr/local/bbs/build
Installing man pages and online manual
mkdir /usr/local/bbs/man
mkdir /usr/local/bbs/man/man1
mkdir /usr/local/bbs/man/man8
mkdir /usr/local/bbs/manual
make[1]: Leaving directory `/data/httpd-2.4.18'
httpd not running, trying to start
success
success
tcp6 0 0 :::88 :::* LISTEN 1461/httpd
tcp6 0 0 :::99 :::* LISTEN 16187/httpd
tcp6 0 0 :::82 :::* LISTEN 33133/httpd
注:这里有部署多台APACHE,互不影响
浏览器访问测试:
——————-end
版权声明:本文为oToyix原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。