设为首页 收藏本站
查看: 610|回复: 0

[经验分享] apache自动安装脚本(linux)

[复制链接]

尚未签到

发表于 2018-11-20 10:29:17 | 显示全部楼层 |阅读模式
  测试的linux的内核参数是Linux rhel5 2.6.18-238.el5

  系统是Red Hat Enterprise Linux Server release 5.6

  相关apr,apu,pcre,openssl的包依赖性脚本并没有考虑进去,默认已经装好相关的依赖包。
  脚本安装运行注意及功能特点:

  1,默认在当前脚本文件所在的目录下创建名字为apache的,apache程序目录,支持配置目录,可按脚本运行提示修改,也可直接修改脚本,在脚本中直接修改默认配置。

  2,默认配置apr,apu,pcre,openssl的安装目录,不支持在安装过程中修改。

  3,支持使用不同的httpd,apr,apu,pcre及openssl安装包,可在安装过程中,按提示输入安装包名,以及直接修改脚本的默认配置

  4,可选安装http及https,在安装过程中按提示输入选择即可,选择默认安装会安装https。

  5,支持配置不同的apache编译参数,可在安装过程中按提示输入,也可直接修改脚本的默认配置参数。

  6,支持修改安装过程中的提示时间,可以在脚本中修改。
#!/bin/bash
#------------------------------------------------------------------------#
#                         written by jm on 2016.02.25                    #
#                                                                        #
#------------------------------------------------------------------------#
dir=`pwd`
#apache安装时除apr,apu,pcre,openssl安装路径外的默认安装配置参数
apadefultprefix="--with-mpm=worker --enable-rewrite --enable-module=so --enable-proxy --enable-proxy-ajp --enable-forward --enable-proxy-connect --enable-proxy-http"
#安装过程中所有提示语的显示时间,秒为单位
hinttime=15
#sethttpddefaultname,httpd安装包默认名配置
httpddefaultname=httpd-2.4.16.tar.gz
#setaprdefaultname,apr安装包默认名配置
aprdefaultname=apr-1.5.2.tar.gz
#setapudefaultnam,apu安装包默认名配置
apudefaultname=apr-util-1.5.4.tar.gz
#setpcredefaultname,pcre安装包默认名配置
pcredefaultname=pcre-8.36.zip
#setopenssldefaultname,openssl安装包默认名配置
openssldefaultname=openssl-1.0.2f.tar.gz
#set apachedefaultdir,apache默认安装路径配置
apachedefaultdir=$dir/apache
#set apachedir,设定apache安装路径
if read -t $hinttime -p "pls enter apache dir请设置全路径的apache安装目录如:/home/rs/apache:" apachedir
then
    if [[ $apachedir == "" ]]
    then
        apachedir=$apachedefaultdir
        echo  "apachedir is empty,would use default port $apachedir;输入为空,将使用默认目录$apachedir"
    else
        echo -e "\napachedir is $apachedir;apache目录为$apachedir"
    fi
else
    apachedir=$apachedefaultdir
    echo -e "\napachedir is empty,would use default port $apachedir;输入为空,将使用默认目录$apachedir"
fi
#init apache interface,apache压缩包解压初始化接口
function httpakinit(){
cd $dir
if [ ! -f $httppak ]
then
    echo "httpd install package not exit,pls upload!"
    exit 1
else
    httpddir=`echo "$httppak"|sed 's/.tar.gz$//'`
    tar -zxvf $httppak
fi
}

#set apache pak 初始化apche源包,调用apache压缩包初始化接口
if read -t $hinttime -p "pls enter apache zip package name ex:httpd-2.4.16.tar.gz;输入apche压缩包名如:httpd-2.4.16.tar.gz:" httppak
then
    if [[ $httppak == "" ]]
    then
        httppak=$httpddefaultname
        echo "apche pak is empty,would use default pak $httppak;输入apche压缩包名为空,将默认包名$httppak"
        httpakinit
    else
        echo "apche pak is $httppak;输入apche压缩包名为$httppak"
    httpakinit
    fi
else
    httppak=$httpddefaultname
    echo -e "\napache pak is empty,would use default apche pak $httppak;输入apache压缩包名为空,将使用默认包名$httppak"
    httpakinit
fi

#init apr apk fuction 初始化apr包函数接口
function aprinit(){
cd $dir
if [ ! -f $aprpak ]
then
   echo "apr install package not exit,pls upload!"
   exit 1
else
         tar -zxvf $aprpak
         aprdir=`echo "$aprpak"|sed 's/.tar.gz$//'`
     httpddir=`echo "$httppak"|sed 's/.tar.gz$//'`
     cd ${httpddir}/srclib
         rm -rf apr
         cd ../../
         mv ${aprdir}  ${httpddir}/srclib/apr
fi
}
#init apr pak 初始化apr源包
if read -t $hinttime -p "pls enter apache zip package name ex:apr-1.5.2.tar.gz;输入apche压缩包名如:apr-1.5.2.tar.gz:" aprpak
then
    if [[ $aprpak == "" ]]
    then
        aprpak=$aprdefaultname
        echo "apr pak is empty,would use default pak $aprpak;输入apr压缩包名为空,将默认包名$aprpak"
        aprinit
    else
        echo "apr pak is $aprpak;输入apr压缩包名为$aprpak"
        aprinit
    fi
else
    aprpak=$aprdefaultname
    echo -e "\napr pak is empty,would use default apche pak $aprpak;输入apr压缩包名为空,将使用默认包名$aprpak"
    aprinit
fi
#init apu pak fuction 初始化apu源包函数接口
function apuinit(){
cd $dir
if [ ! -f $apupak ]
then
   echo "apu install package not exit,pls upload!"
   exit 1
else
         tar -zxvf $apupak
         apudir=`echo "$apupak"|sed 's/.tar.gz$//'`
         apchedir=`echo "$httppak"|sed 's/.tar.gz$//'`
         cd ${httpddir}/srclib
         rm -rf apr-util
         cd ../../
         mv ${apudir}  ${httpddir}/srclib/apr-util
fi
}
#init apu install function 初始化apu源包
if read -t $hinttime -p "pls enter apu zip package name ex:apr-util-1.5.4.tar.gz;输入apu压缩包名如:apr-util-1.5.4.tar.gz :" apupak
then
    if [[ $apupak == "" ]]
    then
        apupak=$apudefaultname
        echo "apu pak is empty,would use default pak $apupak;输入apu压缩包名为空,将默认包名$apupak"
        apuinit
    else
        echo "apu pak is $apupak;输入apu压缩包名为$apupak"
        apuinit
    fi
else
    apupak=$apudefaultname
    echo -e "\napr pak is empty,would use default apche pak $apupak;输入apr压缩包名为空,将使用默认包名$apupak"
    apuinit
fi

#install pcre apk,安装pcre函数接口
function pcreinstall(){
cd $dir
if [ ! -f $pcrepak ]
then
   echo "pcre install package not exit,pls upload!"
   exit 1
else
        unzip -o $pcrepak
        pcresrcdir=`echo "$pcrepak"|sed 's/.zip$//'`
        cd $dir/$pcresrcdir
        chmod 777 -R *
        ./configure --prefix=$apachedir/pcre && make && make install
        if [[ `echo $?` == 0 ]]
        then
                echo "pcre install suscces"                     
        else
                echo "pcre install error,pls check!"
                exit 1
        fi
fi
}
#pcre pak init install function 初始化pcre源包及安装
if read -t $hinttime -p "pls enter pcre zip package name ex:pcre-8.36.zip;输入apu压缩包名如:pcre-8.36.zip :" pcrepak
then
    if [[ $pcrepak == "" ]]
    then
        pcrepak=$pcredefaultname
        echo "pcre pak is empty,would use default pak $pcrepak;输入pcre压缩包名为空,将默认包名$pcrepak"
        pcreinstall
    else
        echo "pcre pak is $pcrepak;输入pcre压缩包名为$pcrepak"
        pcreinstall
    fi
else
    pcrepak=$pcredefaultname
    echo -e "\npcre pak is empty,would use default pak $pcrepak;输入pcre压缩包名为空,将默认包名$pcrepak"
    pcreinstall
fi
#install openssl apk安装openssl函数接口
function opensslinstall(){
cd $dir
if [ ! -f $opensslpak ]
then
   echo "openssl install package not exit,pls upload!"
   exit 1
else
        tar -zxvf $opensslpak
        opensslsrcdir=`echo "$opensslpak"|sed 's/.tar.gz$//'`
        cd $dir/$opensslsrcdir
        chmod 777 -R *
        ./config shared --prefix=$apachedir/ssl -DOPENSSL_NO_HEARTBEATS && make && make install
        if [[ `echo $?` == 0 ]]
        then
                echo "openssl install suscces"                     
        else
                echo "openssl install error,pls check!"
                exit 1
        fi
fi
}
#openssl pak init install function 初始化openssl源包及安装
#ssl install function include opesnsslinstall and ini function ,ssl安装接口包含opensslinstall过程调用
function sslinstall(){
if read -t $hinttime -p "pls enter openssl tar.gz  package name ex:openssl-1.0.2f.tar.gz;输入openssl压缩包名如:openssl-1.0.2f.tar.gz :" opensslpak
then
    echo "`pwd`"
    if [[ $opensslpak == "" ]]
    then
        opensslpak=$openssldefaultname
        echo "opensslpak pak is empty,would use default pak $opensslpak;输入openssl压缩包名为空,将默认包名$opensslpak"
        opensslinstall
    else
        echo "opensslpak pak is $opensslpak;输入pcre压缩包名为$opensslpak"
        opensslinstall
    fi
else
    opensslpak=$openssldefaultname
    echo -e "\nopensslpak pak is empty,would use default pak $opensslpak;输入opensslpak压缩包名为空,将默认包名$opensslpak"
    opensslinstall
fi
}

#http install interface,httpd安装函数接口
function httpdinstall(){
cd $dir/$httpddir
./configure --prefix=$httpdprefix && make && make install
if [[ `echo $?` == 0 ]]
then
   echo "apache install suscces"
else
   echo "apache install error"
   exit 1
fi
}
#apache参数配置设定,httpd安装调用函数接口
function apacheinstall(){
if read -t $hinttime -p "pls enter httpd prefix,no need enter apachedir,apr,apu,pcre,ssl(不用输入apache,apr,apu,pcre,ssl编译路径),输入参数例子如:--with-mpm=worker --enable-rewrite:" httpdprefix
then
    if [[ $httpdprefix == ""  &&  $1 == "nhttps" ]]
    then
        httpdprefix=`echo "$apachedir --with-included-apr --with-included-apr-util --with-pcre=$apachedir/pcre $apadefultprefix"`
        echo "1,httpdprefix is empty,would use default httpdprefix $httpdprefix;输入apache编译参数为空,将使用默认参数,$httpdprefix"
        httpdinstall
    elif [[ $httpdprefix == ""  &&  $1 == "" ]]
    then
        httpdprefix=`echo "$apachedir --with-included-apr --with-included-apr-util --with-pcre=$apachedir/pcre --enable-ssl --with-ssl=$apachedir/ssl $apadefultprefix"`
        echo "2,httpdprefix is empty,would use default httpdprefix $httpdprefix;输入apache编译参数为空,将使用默认参数,$httpdprefix"
        httpdinstall
    elif [[ $httpdprefix != ""  &&  $1 == "nhttps" ]]
    then
        httpdprefix=`echo "$apachedir --with-included-apr --with-included-apr-util --with-pcre=$apachedir/pcre $httpdprefix"`
        echo "6,httpdprefix pak is $httpdprefix;输入的编译参数为$httpdprefix"
    httpdinstall
    else
    httpdprefix=`echo "$apachedir --with-included-apr --with-included-apr-util --with-pcre=$apachedir/pcre --enable-ssl --with-ssl=$apachedir/ssl $httpdprefix"`
        echo "3,httpdprefix  is $httpdprefix;输入的编译参数为$httpdprefix"
    httpdinstall
    fi
else
    if [[ $1 == "nhttps" ]]
    then
        httpdprefix=`echo "$apachedir --with-included-apr --with-included-apr-util --with-pcre=$apachedir/pcre  $apadefultprefix"`
        echo -e "\n4,httpdprefix is empty,would use default httpdprefix $httpdprefix;输入apache编译参数为空,将使用默认参数,$httpdprefix"
        httpdinstall
    else
        httpdprefix=`echo "$apachedir --with-included-apr --with-included-apr-util --with-pcre=$apachedir/pcre --enable-ssl --with-ssl=$apachedir/ssl $apadefultprefix"`
        echo -e "\n5,httpdprefix is empty,would use default httpdprefix $httpdprefix;输入apache编译参数为空,将使用默认参数,$httpdprefix"
        httpdinstall
    fi
fi
}
#安装apache,调用apache安装函数接口
cd $dir
read -n1 -t $hinttime -p "is install https?pls type\"y/n\";请输入y/n来选择是否安装https :" answer
case $answer in
Y|y)
echo -e "\ninstall https,安装https"
sslinstall
apacheinstall
cd $apachedir/lib
cp $apachedir/ssl/lib/libssl.so.1.0.0 libssl.so.1.0.0
cp $apachedir/ssl/lib/libcrypto.so.1.0.0 libcrypto.so.1.0.0
;;
N|n)
echo -e "\ninstall http,安装http"
apacheinstall nhttps
;;
"")
echo -e "\nenter is empty,will install https,输入为空默认安装https"
sslinstall
apacheinstall
cd $apachedir/lib
cp $apachedir/ssl/lib/libssl.so.1.0.0 libssl.so.1.0.0
cp $apachedir/ssl/lib/libcrypto.so.1.0.0 libcrypto.so.1.0.0
;;
*)
echo -e "\nonly can type Y/y/N/n,只能输入单字符y/n/Y/N";;
esac
exit 0  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637282-1-1.html 上篇帖子: 限制Apache每秒新建连接数 下篇帖子: apache 配置防盗链
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表