Shell脚本实现超简洁的在Linux服务器上安装nginx、resin、java、tomcat、redis等程序

1 篇文章 0 订阅

说明:

用平常的方式在Linux服务器上安装程序,需要下载安装包、进入安装包位置、给安装包文件赋予可执行权限、执行安装、设置环境变量……等等一系列复杂的操作。并且如果有关联也需要一个一个的挨着安装。耗时并且繁琐。而用shell脚本来执行这些操作,则很好的解决了这些问题!

步骤:

  1. wget http://img006.com/badusoft/centosupNEW.sh

    // 在Linux服务器上执行wget命令下载shell脚本

  2. chmod +x centosupNEW.sh

    // 给下载下来的 centosupNEW.sh 文件赋可执行权限

  3. ./centosupNEW.sh all

    //执行命令安装所有程序,还可单独安装nginx、redis、tomcat等,如想单独安装resin,则执行 ./centosupNEW.sh resin 命令即可

截图:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

代码:

#!/bin/bash
#version1.0
#Wangwei
#date 2015/04/02
#System Centos6.4
get_bin_tar="/bin/tar"
get_cmd_dns="/etc/resolv.conf"
get_cmd_soft="/opt/badusoft"
get_cmd_name=`/bin/uname -a | awk '{print $1,$3}'`
get_cmd_service="/usr/local/service"
get_cmd_user=`whoami`
get_cmd_cron="/var/spool/cron/"
get_cmd_url="http://img006.com/badusoft"
echo -e "System for version:\e[32m$get_cmd_name \e[0m\n"
echo -e "Nginx for version:\e[32mTengine2.1 and nginx 1.8.0\e[0m\n"
echo -e "Java for version:\e[32mJdk 1.7\e[0m\n"
echo -e "Resin pro for version:\e[32mResin pro 3.1\e[0m\n"
echo -e "Apache for tomcat version:\e[32m tomcat 7\e[0m\n"
echo -e "Redis version:\e[32m Redis 2.8\e[0m\n"
echo -e "Firewall:\e[32moff\e[0m\n"
cat /dev/null > $get_cmd_dns
echo "nameserver 114.114.114.114" >> $get_cmd_dns
echo -e "NameServer:\e[32m114.114.114.114\e[0m\n"
sleep 10
/etc/init.d/iptables stop
/sbin/chkconfig iptables off
function package(){
        for  i  in wget  gcc gcc-c++ make gzip autoconf automake lrzsz telnet zlib zlib-devel openssl openssl-devel pcre-devel pcre patch net-snmp
        do
    yum install -y $i
    sleep 1
        done
}

function del(){
if  [ ! -d $get_cmd_soft ] && [ ! -d $get_cmd_service ]; then
    mkdir /opt/badusoft >> /dev/null 2>&1
    mkdir /usr/local/service/ >> /dev/null 2>&1
else 
        rm -rf $get_cmd_soft  $get_cmd_service
        cp -f /etc/profile.bak /etc/profile
        mkdir /opt/badusoft >> /dev/null 2>&1
        mkdir /usr/local/service/ >> /dev/null 2>&1
fi
}
function timecron(){
#date cron
if [ $get_cmd_user = "root" ];then
       echo "*/30 * * * * /usr/sbin/ntpdate 0.rhel.pool.ntp.org | /usr/sbin/hwclock -w" > $get_cmd_cron/$get_cmd_user
else
       if [ -f "$get_cmd_cron/root" ];then
               echo "*/30 * * * * /usr/sbin/ntpdate 0.rhel.pool.ntp.org | /usr/sbin/hwclock -w" >> $get_cmd_cron/$get_cmd_user 
       else
               echo "$get_cmd_user error"
               return 0
       fi
fi
}

function sysctl(){
    cd $get_cmd_soft
    if [ ! -f kernels_sysctl ] && [ ! -f limits.conf ];then
    wget $get_cmd_url/kernels_sysctl
    wget $get_cmd_url/limits.conf
    if [ -f $get_cmd_soft/kernels_sysctl ] && [ -f $get_cmd_soft/limits.conf ];then
        #cp -f /etc/sysctl.conf /etc/sysctl.conf.bak
        #cp -f /etc/security/limits.conf /etc/security/limits.conf
        cat $get_cmd_soft/kernels_sysctl > /etc/sysctl.conf
        cp -f  $get_cmd_soft/limits.conf  /etc/security/limits.conf
        /sbin/sysctl -p 
        if [ $? -eq 0 ];then
          echo -e "\e[32mcopy done\e[0m\n"
          sleep 5
        else
            echo -e "\e[31m copy error!!\e[0m\n"
            exit 0
        fi
    else
        echo -e "\e[31mfile not exits\[0m\n"
        exit 0
    fi
    else
        echo -e "\e[31mfile  exists\e[0m\n"
        exit 0
    fi 
 }
function nginx(){
    cd $get_cmd_soft
    if [ ! -f nginx-1.8.0.tar.gz ];then
       wget $get_cmd_url/nginx-1.8.0/nginx-1.8.0.tar.gz
       wget $get_cmd_url/nginx-1.8.0/nginx_upstream_check_module-master.zip
       wget $get_cmd_url/nginx-1.8.0/openssl-1.0.2c.tar.gz
       wget $get_cmd_url/nginx-1.8.0/ngx_cache_purge-2.3.tar.gz
       wget $get_cmd_url/pcre-8.12.tar.gz
       wget $get_cmd_url/zlib-1.2.5.tar.gz

       if [ $? -eq 0 ];then

        $get_bin_tar zxf nginx-1.8.0.tar.gz
        unzip nginx_upstream_check_module-master.zip
        $get_bin_tar zxf openssl-1.0.2c.tar.gz
        $get_bin_tar zxf ngx_cache_purge-2.3.tar.gz
        $get_bin_tar zxf pcre-8.12.tar.gz
        $get_bin_tar zxf zlib-1.2.5.tar.gz

        if [ $? -eq 0 ];then
           cd $get_cmd_soft/nginx-1.8.0

    patch -p1 < $get_cmd_soft/nginx_upstream_check_module-master/check_1.7.5+.patch
./configure --prefix=$get_cmd_service/nginx \
--with-pcre=$get_cmd_soft/pcre-8.12 \
--with-openssl=$get_cmd_soft/openssl-1.0.2c \
--with-zlib=$get_cmd_soft/zlib-1.2.5 \
--add-module=$get_cmd_soft/ngx_cache_purge-2.3 \
--with-http_realip_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_dav_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_addition_module \
--with-http_ssl_module \
--add-module=$get_cmd_soft/nginx_upstream_check_module-master

           if [ $? -eq 0 ];then
            make && make install
            if [ $? -eq 0 ];then
               echo -e "\e[32mtengine for nginx install done\e[0m\n"
               sleep 5
            else
               echo -e "\e[31mmake && make error!!\e[0m\n"
            fi
           else
            echo -e "\e[31mconfigure error!!\e[0m\n"
            exit 0
           fi
        else
            echo -e "\e[31mtar error!!\e[0m\n"
            exit 0
        fi  
       else 
        echo -e "\e[31mtengine for nginx download error!!\e[0m\n"
        exit 0      
       fi
    else
        sleep 5
        echo -e "\e[31mtengine for nginx found\e[0m\n"
    fi
}
function java(){
        cd $get_cmd_soft
        if [ ! -f server-jre-7u80-linux-x64.tar.gz ];then
             wget $get_cmd_url/javapath
                     wget  $get_cmd_url/server-jre-7u80-linux-x64.tar.gz
                     $get_bin_tar zxf server-jre-7u80-linux-x64.tar.gz
                if [ $? -eq 0 ];then
                    mv jdk1.7.0_80 $get_cmd_service/java
                    cp -f /etc/profile /etc/profile.bak
                    cat $get_cmd_soft/javapath >> /etc/profile
                    source /etc/profile
                    if [ $? -eq 0 ];then
                        $get_cmd_service/java/bin/java -version
                        if [ $? -eq 0 ];then
                            echo -ne "\e[32mJava install done\e[0m\n"
                            sleep 5
                        else
                            echo -ne  "\e[31mJava install error!!\e[0m\n"
                            exit 0
                        fi
                    else 
                        echo -ne "\e[31mJava path error!!\e[0m\n"
                    fi
                else 
                    echo -ne "\e[31mJava tar error!!\e[0m\n"
                    exit 0
                fi

            else
                echo -ne "\e[31mJava download error\e[0m\n"
                exit 0
            fi  

}

function resin(){
    cd $get_cmd_soft
    if [ ! -f  resin-pro-3.1.12.tar.gz ];then
        wget $get_cmd_url/licenses/004444.license
            wget $get_cmd_url/resin-pro-3.1.12.tar.gz
        if [ $? -eq 0 ];then
            $get_bin_tar zxvf resin-pro-3.1.12.tar.gz
            if [ $? -eq 0 ];then
            cd $get_cmd_soft/resin-pro-3.1.12  
            ./configure --prefix=$get_cmd_service/resin \
            --with-java-home=$get_cmd_service/java \
            --enable-64bit=yes  \
            --enable-lfs  \
            --enable-jni \
            --disable-libtool-lock

            if [ $? -eq 0 ];then
                make && make install
                mkdir $get_cmd_service/resin/licenses
                cp $get_cmd_soft/004444.license $get_cmd_service/resin/licenses
                if [ $? -eq 0 ];then
                echo -ne "\e[32mResin  install done\e[0m\n"
                sleep 5
                else 
                echo -ne "\e[31mResin install error\e[0m\n"
                exit 0
                 fi
            else
                echo -ne  "\e[31mConfigure error\e[0m\n"
                exit 0
            fi
           else
               echo -ne "\e[31mtar error\e[0m\n"
               exit 0
           fi
        else
            echo -ne "\e[31mdownload error\e[0m\n"
            exit 0
        fi
    else 
        echo -ne "\e[31mDircetory or Resin  error!!\e[0m\n"
        exit 0  
    fi
}
function tomcat(){
    mkdir /usr/local/service/apache2

cd /opt/badusoft/

wget http://img006.com/badusoft/apr-1.5.2.tar.zip
wget http://img006.com/badusoft/apr-iconv-1.2.1.tar.bz2
wget http://img006.com/badusoft/apr-util-1.5.4.tar.bz2
wget http://img006.com/badusoft/tomcat-native.tar.gz
wget http://img006.com/badusoft/apache-tomcat-7.0.42.tar.gz


tar -xvf apr-1.5.2.tar.bz2
tar -xvf apr-iconv-1.2.1.tar.bz2
tar -xvf apr-util-1.5.4.tar.bz2
tar -xvf tomcat-native.tar.gz
tar -xvf apache-tomcat-7.0.42.tar.gz

mv /opt/badusoft/apache-tomcat-7.0.42  /usr/local/service/tomcat

cd /opt/badusoft/apr-1.5.2


./configure --prefix=/usr/local/service/apache2/apr

make && make install

echo "APR step over"

###############################################################

cd /opt/badushot/apr-util-1.5.4 


./configure --prefix=/usr/local/service/apache2/apr --with-apr=/usr/local/service/apache2/apr

make && make install

echo "apr-util step over"
##############################################################################


cd /opt/badusoft/tomcat-native-1.1.33-src/jni/native

./configure --prefix=/usr/local/service/apache2/apr --with-apr=/usr/local/service/apache2/apr --with-java-home=/usr/local/service/java


make && make install

echo "tomact-native step over"


echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/service/apache2/apr/lib" >> /etc/profile

source /etc/profile

cd /opt/badusoft/

wget http://img006.com/badusoft/catalina.txt

sed -i '/# limitations under the License./r catalina.txt' /usr/local/service/tomcat/bin/catalina.sh

 }
function redis(){
    cd $get_cmd_soft
    if [ ! -f redis-2.8.12.tar.gz ];then
       wget $get_cmd_url/redis-2.8.12.tar.gz
       if [ $? -eq 0 ];then
        tar zxf redis-2.8.12.tar.gz
        if [ $? -eq 0 ];then
          cd $get_cmd_soft/redis-2.8.12
          make && make install
          if [ $? -eq 0 ];then
             mkdir $get_cmd_service/redis/
             mkdir $get_cmd_service/redis/conf
             mv /usr/local/bin $get_cmd_service/redis/
             cp -f $get_cmd_soft/redis-2.8.12/redis.conf $get_cmd_service/redis/conf/
             echo -e "\e[32m Redis install done\e[0m\n"
             sleep 5
          else
              echo -e "\e[31m make && make install error!!\e[0m\n"
              exit 0
          fi
        else
                echo -e "\e[31m tar error\e[0m\n"
            exit 0
            fi

       else 
           echo -e "\e[31m Download Redis error!!\e[0m\n"
           exit 0
       fi
    else
       echo -e "\e[31m Redis file error!!\e[0m\n"
       exit 0
    fi
}           

case $1 in

package)
    package
;;

timecron)

    package
    del
    timecron
;;

sysctl)

    package
    del
    sysctl
;;


nginx)
    package
    del
    nginx
;;

resin)
    package
    del
    java
    resin

;;
tomcat)

    package
    del
    java
tomcat

;;
redis)
    package
    del
    redis
;;

all)
    package
    del 
    timecron
    sysctl
    nginx
    java
    resin
    tomcat
    redis
;;

*)
    echo -e "\e[32m package  timecron sysctl nginx resin tomcat redis or all\e[0m\n"
;;
esac

cd /opt/badusoft/

wget http://img006.com/badusoft/service.sh

chmod +x service.sh


/opt/badusoft/service.sh
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一.环境变量配置 ; 定义系统环境变量的 注册表key值 !define WriteEnvStr_RegKey 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' ;设置环境变量 Function "regExpandStr" SetOverwrite ifnewer ;设置jdk环境变量 WriteRegExpandStr ${WriteEnvStr_RegKey} "JAVA_HOME" "$INSTDIR\jdk1.8.0_131" ;设置CATALINA_DIR WriteRegExpandStr ${WriteEnvStr_RegKey} "CATALINA_DIR" "$INSTDIR\tomcat\bin" ;设置CATA_LINA WriteRegExpandStr ${WriteEnvStr_RegKey} "CATA_LINA" "$INSTDIR\tomcat" ;设置path ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;C:\windows\system32;$INSTDIR\redis;$INSTDIR\mysql\bin;$INSTDIR\Java\jdk1.8.0_131\bin;" #第一次是使环境变量修改对其他进程有效;刷新环境变量 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 SetOverwrite on functionend ;注册服务 Function "installService" detailprint "------------------------------------install tomcat Service..." Sleep 2000 SetOutPath "$INSTDIR\tomcat\bin" nsExec::Exec 'cmd /c service install' nsExec::Exec 'cmd /c sc config tomcat8 start= auto' ;设置服务自动开启 detailprint "------------------------------------install tomcat Service success..." detailprint "install mysql Service..." Sleep 2000 SetOutPath "$INSTDIR\mysql\bin" nsExec::Exec 'cmd /c $INSTDIR\mysql\bin\mysqld.exe" -install Mysql --defaults-file="$INSTDIR\\mysql\\my.ini' detailprint "install mysql Service success..." detailprint "------------------------------------install redis Service..." Sleep 2000 SetOutPath "$INSTDIR\redis" nsExec::Exec 'cmd /c redis-server --service-install redis.windows.conf' detailprint "install redis Service success..." functionend ; 启动服务 Function "startService" detailprint "------------------------------------start tomcat..." nsExec::Exec 'cmd /c sc start Tomcat8' detailprint "------------------------------------start tomcat success..." detailprint "------------------------------------start mysql..." nsExec::Exec 'cmd /c sc start mysql' detailprint "------------------------------------start MySQL success..." detailprint "------------------------------------start redis..." ;nsExec::Exec 'cmd /c sc redis-server --service-start --service-name redis' detailprint "------------------------------------start redis success..." functionend ;停止服务 Function "un.stopService" detailprint "正在停止tomcat服务......." nsExec::Exec 'cmd /c sc stop tomcat8' detailprint "停止tomcat服务成功......." detailprint "正在停止mysql服务......." nsExec::Exec 'cmd /c sc stop mysql' detailprint "停止mysql服务成功......." detailprint "正在停止redis服务......." nsExec::Exec 'cmd /c sc redis-server --service-stop --service-name redis' detailprint "停止redis服务成功......." functionend ;删除服务 Function "un.uninstService" detailprint "正在卸载tomcat服务......." nsExec::Exec 'cmd /c sc delete tomcat8' detailprint "卸载tomcat服务成功......." detailprint "正在卸载mysql服务......." nsExec::Exec 'cmd /c sc delete mysql' detailprint "卸载mysql服务成功......." detailprint "正在卸载redis服务......." nsExec::Exec 'cmd /c sc delete redis' detailprint "卸载redis服务成功......." functionend ;清空环境变量 Function "un.emptyRegExpandStr" #删除 系统环境变量JAVA_HOME 和 CATALINA_HOME #卸载的时候必须设置JAVA_HOME 和 CATALINA_HOME两个环境系统变量为空,或者删除这两个系统变量。否则会出现NSIS选择系统变量的错误(NSIS会自动选择之前有值的系统变量,而不是选择当前刚设置的系统变量) detailprint "正在删除相关环境变量......." functionend 二.校验mac地址 #序列号 校验页面 Page custom check_serial_number Var "MacAddress" Function check_serial_number Call .GetMacAddress #MessageBox MB_OK '当前机器Mac地址为:$MacAddress' ${if} $MacAddress == '00-50-56-C0-00-08' ${OrIf} $MacAddress == '00-50-56-C0-00-081' #MessageBox MB_OK '已授权' ${Else} MessageBox MB_OK '未授权,请联系经销商并授权!' ;SendMessage $HWNDPARENT 0x408 3 0 #页面跳转 Call onClickClose ${EndIf} FunctionEnd #获取主机MAC地址 Function .GetMacAddress System::Call Iphlpapi::GetAdaptersInfo(i,*i.r0) System::Alloc $0 Pop $1 System::Call Iphlpapi::GetAdaptersInfo(ir1r2,*ir0)i.r0 StrCmp $0 0 0 finish loop: StrCmp $2 0 finish System::Call '*$2(i.r2,i,&t260;.s,&t132;.s,i.r5)i.r0' ;Unicode版将t改为m IntOp $3 403 + $5 StrCpy $6 "" ${For} $4 404 $3 IntOp $7 $0 + $4 System::Call '*$7(&i1;.r7)' IntFmt $7 "X" $7 StrCpy $6 "$6$7" StrCmp $4 $3 +2 StrCpy $6 "$6-" ${Next} StrCpy $MacAddress $6 Goto loop finish: System::Free $1 FunctionEnd 三.关闭按钮功能 ;点击右上角关闭按钮 Function onClickClose FindProcDLL::FindProc "${PRODUCT_NAME}.exe" Sleep 500 Pop $R0 ${If} $R0 != 0 KillProcDLL::KillProc "${PRODUCT_NAME}.exe" ${EndIf} FunctionEnd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓呆同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值