linux自动安装脚本

测试的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
时间: 2024-10-27 13:23:33

linux自动安装脚本的相关文章

zabbix_agent for linux自动安装脚本

#!/bin/sh###Zabbix客户端部署脚本####下载zabbix#cd /tmp#wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.3/zabbix-2.2.3.tar.gz#用户组和用户建立/usr/sbin/groupadd zabbix/usr/sbin/useradd -g zabbix -M zabbix#解压文件tar -zxvf zabbix-2.2.3.tar

linux下PXE无人值守环境自动安装脚本

当时单位要安装一套linux的PXE无人值守装机程序,装完后花了九牛二虎之力写了一个自动安装脚本,以便今后安全方便,不过后来就没怎么用了,甚至都有些淡忘了,哈哈,分享出来,有研究PXE自动安装的可以看看,在使用的时候里面的ip地址要换掉的. #!/bin/sh #writer:gaolixu yum -y install dhcp tftp-server vsftpd syslinux xinetd if ! service dhcpd status ;then ############### 

Linux自动安装JDK的shell脚本

Linux自动安装JDK的shell脚本 A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本: $ ./install-jdk.sh B的IP or: $ ./install-jdk.sh "B的IP" "JDK的URI" 就可以在机器B上安装JDK.jdk使用的tar包需要用户自己设定DEFAULT_JDK_SRC=?,保证可以wget得到即可

Linux中自动安装脚本

如何让你的主机自动的完成安装,自动的回答系统提出的问题,编写自动安装脚本即可实现,如下将详细解释自动脚本安装方法. systemd-config-kickstart  ##自动应答脚本制作工具 安装成功,在安装过程中systemd-config-kickstart 将做出脚本应答 进行选择语言选择 (1)Basic Configuration 安装过程的必须一致时区选择(可不选,在脚本中都有写到,这里做一个解释) Root passwd 填写Root密码,并确认,两次输入密码 Advanced

ipvsadm+keepalived+inotify-tools自动安装脚本

#!/bin/bash # # #this is install keepalived+lvs-DR # # tar_dir=/usr/src configure_yum() { echo "[rhel-local]">/etc/yum.repos.d/rhel-local.repo echo "baseurl=file:///media/Server">>/etc/yum.repos.d/rhel-local.repo echo "en

使用php作linux自动执行脚本

使用php作linux自动执行脚本 [来源] 达内    [编辑] 达内   [时间]2013-03-21 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户 login或者某一个页面中, 以便在用户登录或访问到该时,触发运行该代码. 这样 一来, 会造成一个问题, 如果该代码教复杂, 明显减慢该页的正常调用速度. 最近在用PHP(PHP培训 php教程 )作一社区, 在写到计算最高上线人数时, 成功调试出把PHP作为 shell script直接在服务器上运行. 在作

python3自动安装脚本,python3.x与python2.x共存

1.前言: python3过程中,通过搜索一些文章参考安装过程发现比较麻烦,而且还出现一些不可预期的报错.python3环境需要升级openssl,所以为了部署到其他环境更方便,写自动安装脚本方式,且安装模式为python3.x与python2.x共存,防止可能发生原有环境异常的情况. 现在我把脚本分享出来,希望可以帮助到有需要的人,业务采集监控python脚本文件不提供,因为那些跟实际业务开发关联比较紧,比较没有参考意义也不方便公开. shell自动安装脚本,只需按说明简单修改配置,和调用集成

mysql自动安装脚本

为适应自己工作习惯和需要,花一点时间写了一个mysql自动安装脚本,供大家参考学习. 注意: 1.需要先安装cmake 2.数据库版本需要在第二步安装mysql时修改 3.该脚本是以root用户安装并启动 脚本内容如下: ######################################################################## #mysql自动安装脚本,其中变量/mysql_v_dir/和/port/可根据实际需要修改    # #执行脚本命令:sh mys

Linux自动备份脚本

今天网上一个朋友问了我一个shell的题目,让我帮他做下.下面是题目以及解题思路. 题目: 写作一个备份/etc目录的脚本,要求:将/etc目录下的所有文件cp到/var/backups目录下的以当天的日期命名的目录中例如(/var/backups/etc.20140809).并且判断前一天的目录中的文件与当天的区别,如果无区别,则删除前一天的备份目录. 解答: [[email protected] scripts]# cat auto_bak.sh  #!/bin/bash # # This