centos7 一键源码安装apache (脚本 案例)

  • Post author:
  • Post category:其他




案例要求:


1、安装不同的Apache版本;

2、apache官网搜索可用版本,输入版本号进行源码安装

3、检测系统是否已经存在,是否可以覆盖版本;

4、支持单台机器多软件服务

5、启动Apache,并且测试访问;



脚本内容:

#!/bin/bash
#author by toyix
#auto source code install httpd
#202072712: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 版权协议,转载请附上原文出处链接和本声明。