zoukankan      html  css  js  c++  java
  • Shell编程之批量安装服务脚本实例剖析

    今天分享一下昨天写过的一个小脚本运行的整个过程运行结果如下:

     

    剖析如下:

    #!/bin/bash                           
    # Date: 4:42 2018-2-10  
    # Mail: ywyankerp@163.com  
    # Founder: <YanKai>  
    # Describe: This is a one - button installation service script  
    # 提示:使用此脚本时,尽量先选择第一项配置Yum源!  
    red_col="e[1;31m"      #定义红色输出  
    reset_col="e[0m"       #定义红色输出  
    LOG_DIR=/usr/local/src   #定义下载安装包路径  
    . /etc/init.d/functions      #加载函数库  
    MMM=`rpm -qa | grep mariadb`  #在centos7中默认存在mariadb 定义变量卸载!  
    #node 1.  
    function caidan(){           #定义菜单函数 主要输出以下信息  
    cat <<YanKaI  
    +------------------------------------------------+  
    |                       1. 配置Yum源             |  
    |        _o0o_          2. 安装Nginx           |  
    |        08880          3. 安装Apache            |  
    |       88"."88         4. 安装MySQL             |  
    |       (|-_-|)         5. 安装PHP               |  
    |        0=/0          6. 部署LNMP环境          |  
    |      __/   \__        7. 安装zabbix监控        |  
    |     ‘   ///‘         8. 退出此管理程序        |  
    |    / Linux一键       9. 关闭计算机            |  
    |  ||    Server   ||    ======================   |    
    |          ////          一键安装服务           |  
    |   |||  i i i    |||               by YanKaI    |  
    |   ___        ___      ======================   |  
    |___‘.  /--.-- .‘___                            |  
    +------------------------------------------------+  
    YanKaI  
    }           #结束函数  
    caidan      #调用我们的菜单函数,也就是输出以上内容  
    #node 2.  
    function panduan (){           #定义判断函数,主要判断用户输入的内容  
        read -p "请您输入{1-9}任意选项:" NUM        #等待用户输入,并把输入内容赋值给变量NUM  
            expr $NUM + 1 &> /dev/null          #判断用户输入的是否是数字  
        if [ "$?" -ne 0 ];then              #如果输入的不是数字  
            action "请您输入数值" /bin/false      #那么 输出一条 请您输入数值   
        elif [[ "$NUM" == 0 ]];then          #如果用户输入的是0  
            action "请您输入比0大的数值" /bin/false       #那么就输出请您输入比0大的数值  
        fi               #退出if判断  
    }  
    #node 3.Yum  
    function Yum_check(){           #定义Yum源的函数  
        echo -en "${red_col}正在配置Yum源,请稍等....
    ${reset_col}" #输入一条正在配置Yum 最后调用了红色变量  
        if [ -f /etc/yum.repos.d/CentOS-Base.repo ]          #如果/etc/yum.repo/Centos-Base.repo 是一个普通文件  
            then            #那么  
              mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back &&   #备份原先的yum文件  
              wget http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null  &&    #下载阿里yum源,最后拷贝到Yum路径  
              mv Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo && yum clean all &>/dev/null && yum makecache &>/dev/null  
        fi              #结束if语句  
            if [ "$?" -eq 0 ];then        #那么如果以上YUM配置成功  
                   action "Yum源配置成功!!!" /bin/true #输出一条 成功  
            else   #否则  
               action "Yum源配置失败,请您检查网络" /bin/false  #输入一条失败  
               exit 1           #退出此脚本  
            fi  #结束if语句  
    }  
    #node 4.Nginx  
    function Nginx_server(){        #定义Nginx函数  
        echo -en "${red_col}开始安装Nginx服务,请稍后.....
    ${reset_col}"  #输入一条开始安装Nginx  
            yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y &>/dev/null && useradd -M -s /sbin/nologin nginx &&    #安装gcc pcre等支持包  
            cd $LOG_DIR && wget http://nginx.org/download/nginx-1.12.2.tar.gz &>/dev/null && tar zxf nginx-1.12.2.tar.gz &&   下载Nginx源码包 版本为12.2   随后进入/usr/local/src 进行相关的安装操作  
            cd $LOG_DIR/nginx-1.12.2 && ./configure --prefix=/usr/local/nginx --with-http_dav_module   --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx &>/dev/null && make &>/dev/null && make install &>/dev/null  
    if [ -f /usr/local/nginx/sbin/nginx ]  #如果/usr/local/nginx/sbin/nginx是一个普通文件 说明安装是正常的  
       then         #那么  
         ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin   #做一条软连接方便之后启动Nginx   
    fi      #退出if判断  
      if [ "$?" -eq 0 ]     #如果以上的操作都是正确的  
         then   #那么  
        action "Nginx安装成功" /bin/true && /usr/local/nginx/sbin/nginx     #输出nginx安装成功,并启动Nginx  
         else   #否则  
        action "Nginx安装失败,请检查" /bin/false       #如果以上操作执行不正确,那么输出nginx安装失败  
        exit 1       #随后退出脚本  
      fi    #结束if语句  
    }  
    #node 2. Apache  
    function Apache_server(){       #定义Apache函数  
        echo -en "${red_col}开始安装Apache服务,请稍后.....
    ${reset_col}"    #老样子 输出开始安装apache  
        yum install httpd -y &>/dev/null            #Yum安装apache   
            if [ "$?" -eq 0 ]       #如果安装成功  
               then     #那么  
                     action "Apache安装成功!" /bin/true #输出apache安装成功  
               else     #否则  
                 action "Apache安装失败,请检查环境" /bin/false       #输出apache安装失败  
                 exit 1     #退出脚本  
            fi  
    }  
    #node 3. MySQL  
    function Mysql_server(){        #定义mysql函数  
        echo -en "${red_col}开始安装Mysql数据库,请稍后.....
    ${reset_col}" #输入mysql正在安装  
            if [ -n $MMM ]         #如果MMM这个变量执行结果大于0   
               then     #那么说明就有mariadb  
                 rpm -e mariadb-libs --nodeps 2&>/dev/null   #最后卸载mariadb  
               else     #否则  
                 action "mariadb卸载失败,请重试..." /bin/false     #输出mariadb卸载失败  
                 exit 1     #退出  
            fi   #结束if语句  
    cd $LOG_DIR && {     #进入/usr/local/src   #接下来定义下载mysql5.7二进制安装包 进行安装  
       wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz &>/dev/null  && tar zxf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz &&   
     mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql &&   
    cd /usr/local/mysql/ && mkdir data && mkdir log && echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile &&   
        source /etc/profile && groupadd mysql && useradd -r -g mysql -s /bin/false mysql  
    }  
    cat << EOF > /etc/my.cnf        #安装完成后写入mysql主配置文件到/etc/my.cnf  
    [client]      
    socket=/usr/local/mysql/mysql.sock      
    [mysqld]      
    basedir=/usr/local/mysql      
    datadir=/usr/local/mysql/data      
    pid-file=/usr/local/mysql/data/mysqld.pid      
    socket=/usr/local/mysql/mysql.sock      
    log_error=/usr/local/mysql/log/mysql.err    
    EOF  
        if [ -f /etc/my.cnf ]  #/etc/my.cnf是一个普通文件,说明主配置已经导入成功了  
           then         #那么执行一些权限初始化操作  
             chmod 750 data/ && chown -R mysql . && chgrp -R mysql . && bin/mysqld --initialize --user=mysql && cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && service mysqld start &> /dev/null  
           else     #否则  
             echo "MySQL安装失败!!!"    #Mysql安装失败!!!  
                exit 1      #退出脚本  
        fi      #结束if语句  
        ln -s /usr/local/mysql/bin/mysql /usr/local/sbin   #创建软连接  
        ln -s /usr/local/mysql/bin/mysqladmin /usr/local/sbin   #创建软连接  
    oo=`cat /usr/local/mysql/log/mysql.err | grep password | awk '{print $11}'`    #在这里定义截取mysql密码  
    mysqladmin -uroot -p${oo} password pwd123 &>/dev/null    #修改mysql密码为:pwd123  
        if [ "$?" -eq 0 ]       #如果以上修改成功了  
           then     #那么  
            action "MySQL数据库安装成功,密码为:pwd123" /bin/true  #输出mysql安装成功。密码为:pwd123  
           else     #否则  
            action "MySQL数据库安装失败密码初始化失败!" /bin/false    #输出mysql初始化失败.  
        fi  #结束if语句  
    }   
    #node 4. PHP      
    function php_server(){      #定义php函数  
        echo -en "${red_col}开始安装依赖包,请稍后....
    ${reset_col}"  #输出开始安装依赖包  
        yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel &> /dev/null  #安装依赖包并不输出  
    if [ "$?" -eq 0 ];then  #如果以上命令执行成功了!!  
       action "依赖包安装完成" /bin/true   #输出依赖包安装完成  
       else     #否则  
       action "依赖包安装失败请检查环境!!!" /bin/false  #输出依赖包安装失败  
       exit 1   #随后退出此脚本  
    fi  #退出脚本  
      
    yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel libjpeg-devel libpng libpng-devel freetype-devel libmcrypt libmcrypt-devel &>/dev/null  #安装php依赖包  
      
    cd $LOG_DIR && {    #如果成功进入/usr/local/src目录 那么执行以下命令  
        echo -en "${red_col}开始安装PHP请稍后,过程稍微有点长...
    ${reset_col}"  
            wget http://cn2.php.net/distributions/php-5.6.27.tar.gz &> /dev/null &&   
            tar zxf php-5.6.27.tar.gz && cd php-5.6.27/ &&   
        ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc  --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt-dir  --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl &>/dev/null  
    }  
    if [ "$?" -eq 0 ]   #那么如果以上命令执行成功了  
       then     #那么  
         make &>/dev/null && make install &>/dev/null #执行make && make install 不输出内容  
       else     #否则  
         action "PHP安装失败,请检查环境..." /bin/false   #输出php安装失败    
         exit 1     #退出脚本  
    fi      #结束if语句  
    echo -en "${red_col}正在配置PHP,请稍等....
    ${reset_col}"  #输出正在配置php说明以上命令执行成功  
    cd /usr/local/src/php-5.6.27/ && {      #cd进入php解压目录 如果进入成功,那么执行以下命令  
       cp php.ini-production /etc/php.ini && cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && chmod +x /etc/init.d/php-fpm && chkconfig --add php-fpm && chkconfig php-fpm on  
    }  
        if [ "$?" -eq 0 ];then   #如果配置php成功,那么就执行下面命令  
           cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf && echo -en "${red_col}复制主配置成功${reset_col}"  
           else     #否则  
             action "配置PHP环境出错,请检查..."  /bin/false  #给出提示  
             exit 1     #退出脚本  
        fi      #结束if语句  
    if [ ! -d /usr/local/php5.6/etc/php-fpm.conf ] #安装完上面的操作,如果此文件是目录文件,那么运行以下指令    
      then    
       sed -i 's#;pid = run/php-fpm.pid#pid = run/php-fpm.pid#g' /usr/local/php5.6/etc/php-fpm.conf    
       sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:9000/g' /usr/local/php5.6/etc/php-fpm.conf    
       sed -i 's/pm.max_children = 5/pm.max_children = 300/g' /usr/local/php5.6/etc/php-fpm.conf    
       sed -i 's/pm.start_servers = 2/pm.start_servers = 20/g' /usr/local/php5.6/etc/php-fpm.conf    
       sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g' /usr/local/php5.6/etc/php-fpm.conf    
       sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g' /usr/local/php5.6/etc/php-fpm.conf    
       sed -i 's/user = nobody/user = nginx/g' /usr/local/php5.6/etc/php-fpm.conf  
       sed -i 's/group = nobody/group = nginx/g' /usr/local/php5.6/etc/php-fpm.conf  
       else  #否则  
       action "配置PHP环境出错,请检查..."  /bin/false  #给出相应的提示  
       exit 1       #退出此脚本  
    fi      #结束if语句  
    if [ $? -eq 0 ]     #如果以上命令都执行成功了!   
       then     #那么  
         systemctl start php-fpm && action "PHP启动成功" /bin/true  #启动php并输出成功  
       else     #否则  
         echo "启动PHP失败"     #输出启动php失败    
         exit 1     #退出此脚本  
    fi      #结束if语句  
    }  
      
    #node 5. LNMP_server  
    function LNMP(){    #定义lnmp函数  
        Nginx_server    #调用Nginx函数  
            Mysql_server    #调用mysql函数  
        php_server      #调用php函数  
        echo -en "${red_col}开始安装LNMP环境,请稍后..可以喝杯茶~
    ${reset_col}"   #三个函数执行完成后。输出此信息  
    if [ "$?" -eq 0 ];then  #如果以上命令执行正确  
       echo -en "${red_col}LNMP安装完成,正在配置Nginx解析PHP请稍后....
    ${reset_col}"    #那么输出此内容  
       else     #否则  
         action "LNMP安装失败,请您检查环境..." /bin/false #输出失败的提示  
         exit 1     #退出此脚本  
    fi  #结束if语句  
      if [ -f /usr/local/nginx/conf/nginx.conf ]  #如果Nginx.conf是普通文件  
         then       #那么执行以下操作  
           sed -i 's/index  index.html index.htm;/index  index.php index.html index.htm;/g' /usr/local/nginx/conf/nginx.conf    
           sed -i 's/#    root           html;/    root           html;/g' /usr/local/nginx/conf/nginx.conf    
           sed -i 's/#    fastcgi_pass   127.0.0.1:9000;/    fastcgi_pass   127.0.0.1:9000;/g' /usr/local/nginx/conf/nginx.conf    
           sed -i 's/#    fastcgi_index  index.php;/    fastcgi_index  index.php;/g' /usr/local/nginx/conf/nginx.conf    
           sed -i 's*#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*g' /usr/local/nginx/conf/nginx.conf    
           sed -i 's/#    include        fastcgi_params;/    include        fastcgi.conf;/g' /usr/local/nginx/conf/nginx.conf    
           sed -i '71d' /usr/local/nginx/conf/nginx.conf && sed -i 'N;70a}' /usr/local/nginx/conf/nginx.conf    
           sed -i '65d' /usr/local/nginx/conf/nginx.conf && sed -i 'N;64alocation ~ \.php$ {' /usr/local/nginx/conf/nginx.conf       
        else        #否则执行如下:  
           action "Nginx解析php失败,请您检查环境..." /bin/false  
           exit 1  
    fi      #结束if语句  
        touch /usr/local/nginx/html/2018.php    #创建php测试页2018.祝大家新年快乐~~~  
    cat << EOF >/usr/local/nginx/html/2018.php #内容如下  
    <?php  
    phpinfo();  
    ?>  
    EOF  
    /usr/local/nginx/sbin/nginx -s reload       #最后我们加载Nginx服务  
        if [ "$?" -eq 0 ]       #如果加载成功  
           then     #那么  
             action "LNMP环境正式搭建成功,请您访问http://IP/2018.php" /bin/true #输出请您访问测试页  
           else         #否则  
             action "LNMP搭建失败啦,哈哈哈请您检查一下环境吧..."     #输出lnmp安装失败  
             exit 1     #退出脚本  
        fi  #结束if语句  
    }  
      
    function zabbix_server(){   #定义zabbix函数  
        if [ -f /usr/local/nginx/sbin/nginx -a -f /etc/my.cnf -a -f /etc/php.ini ];then #如果nginx my.cnf 等是普通文件  
           echo -en "${red_col}开始安装zabbix请稍后!!!
    ${reset_col}"  #那么输出此内容  
        else        #否则  
           action "提示:在安装zabbix之前请先安装LNMP环境!" /bin/false    #提示一条请先安装lnmp环境  
           exit 1   #退出此脚本  
        fi  #结束if语句  
        groupadd zabbix  && useradd -g zabbix zabbix    #创建zabbix用户 组 随后执行以下操作   
        sed -i 's/;date.timezone =/date.timezone = PRC/g' /etc/php.ini  
        sed -i 's/expose_php = On/expose_php = Off/g' /etc/php.ini  
        sed -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/php.ini  
        sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/php.ini  
        sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini  
        sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini  
        sed -i 's/;always_populate_raw_post_data = -1/always_populate_raw_post_data = -1/g' /etc/php.ini  
        sed -i 's/;mbstring.func_overload = 0/mbstring.func_overload = 0/g' /etc/php.ini  
    if [ "$?" -eq 0 ];then  #如果配置修改成功  
       echo -en "${red_col}编辑/etc/php.ini文件成功!
    ${reset_col}"   #那么输出此内容  
       else     #否则  
        action "编辑/etc/php.ini文件失败!" /bin/false #输出此内容  
        exit 1  #退出脚本  
    fi  
      
    yum install -y net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel  OpenIPMI-devel  libssh2-devel &>/dev/null #安装zabbix依赖包  
    if [ "$?" -eq 0 ]   #如果依赖包安装成功  
      then  #那么  
        action "zabbix依赖包安装成功!!!"  /bin/true        #输出成功  
      else  #否则  
        action "zabbix依赖包安装失败" /bin/false       #输出失败  
        exit 1  #退出此脚本  
    fi  #结束if语句  
    cd $LOG_DIR && {        #进入/usr/local/src成功 那么执行以下指令  
        wget http://www.fping.org/dist/fping-3.10.tar.gz &>/dev/null && tar zxf fping-3.10.tar.gz &>/dev/null &&   
    cd fping-3.10/ && ./configure &>/dev/null && make &>/dev/null && make install &>/dev/null  
    }  
    if [ "$?" -eq 0 ]   #如果以上操作成功  
       then     #那么  
         chown root:zabbix /usr/local/sbin/fping  && chmod 4710 /usr/local/sbin/fping   #给予权限  
       else     #否则  
         action "fping安装失败" /bin/false0     #输出失败的信息  
       exit 1   #退出脚本  
    fi  #结束if语句  
    cd $LOG_DIR && {        #如果进入/usr/local/src成功  
    wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.1/zabbix-3.2.1.tar.gz  &>/dev/null &&  #那么下载zabbix源码包  
    tar zxf zabbix-3.2.1.tar.gz && cd  zabbix-3.2.1/ &&    #执行解压安装等操作  
    ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi &>/dev/null && make &>/dev/null && make install &>/dev/null  
    }  
    if [ "$?" -eq 0 ]   #如果安装成功  
       then #那么  
         action "zabbix安装成功,正在配置请稍后...." /bin/true  #输出此内容  
       else     #否则  
         action "zabbix安装失败,请您检查环境...."  /bin/false #输出此内容  
       exit 1   #退出脚本  
    fi  #结束if语句  
    ln -s /usr/local/zabbix/bin/* /usr/local/bin/  #创建软连接  
    ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ #创建软连接  
    if [ "$?" -eq 0 ];      #如果以上命令执行成功  
       then     #那么执行以下操作。创建zabbix数据库  
         /usr/local/sbin/mysql -uroot -ppwd123 -e 'create database zabbix character set utf8;'  &>/dev/null  
         /usr/local/sbin/mysql -uroot -ppwd123 -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'" &>/dev/null  
       else #否则输入以下信息  
         action "zabbix创建软连接失败!" /bin/false  
         exit 1  
    fi  
        if [ "$?" -eq 0 ]   #如果以上命令执行成功                   
            then    #那么  
             action "zabbix数据库创建成功!" /bin/true  #输出此信息  
           else #否则  
                 action "zabbix数据库创建失败!" /bin/false #输出失败  
           exit 1   #退出脚本  
        fi  #结束if语句  
    cd /usr/local/src/zabbix-3.2.1/database/mysql  && {     #如果进入目录成功,那么导入数据库  
    /usr/local/sbin/mysql -uzabbix -pzabbix -hlocalhost zabbix < schema.sql  &>/dev/null  
    /usr/local/sbin/mysql -uzabbix -pzabbix -hlocalhost zabbix < images.sql  &>/dev/null  
    /usr/local/sbin/mysql -uzabbix -pzabbix -hlocalhost zabbix < data.sql   &>/dev/null  
    }  
    if [ "$?" -ne 0 ]   #如果导入失败了  
       then     #那么  
         action "zabbix数据库导入失败!" /bin/false #输出此信息  
        exit 1  #退出脚本     
       else #否则  
         action "zabbix数据库导入成功!" /bin/true      #输出成功  
    fi  #结束if语句       
    #执行以下的操作  
    sed -i 's$LogFile=/tmp/zabbix_server.log$LogFile=/usr/local/zabbix/logs/zabbix_server.log$g' /usr/local/zabbix/etc/zabbix_server.conf  
    sed -i 's$# PidFile=/tmp/zabbix_server.pid$PidFile=/usr/local/zabbix/logs/zabbix_server.pid$g' /usr/local/zabbix/etc/zabbix_server.conf  
    sed -i 's/# DBHost=localhost/DBHost=localhost/g' /usr/local/zabbix/etc/zabbix_server.conf  
    sed -i 's/# DBPassword=/DBPassword=zabbix/g' /usr/local/zabbix/etc/zabbix_server.conf  
    sed -i 's/# DBPort=3306/DBPort=3306/g' /usr/local/zabbix/etc/zabbix_server.conf  
    sed -i 's$# FpingLocation=/usr/sbin/fping$FpingLocation=/usr/sbin/fping$g' /usr/local/zabbix/etc/zabbix_server.conf  
    sed -i 's$# DBSocket=/tmp/mysql.sock$DBSocket=/usr/local/mysql/mysql.sock$g' /usr/local/zabbix/etc/zabbix_server.conf  
    mkdir -p /usr/local/zabbix/logs  &&  chown -R zabbix:zabbix /usr/local/zabbix/    
      
    cat <<EOF >/etc/ld.so.conf  
    include ld.so.conf.d/*.conf  
    /usr/local/mysql/lib  
    /usr/local/lib  
    EOF  
    /usr/local/nginx/sbin/nginx -s reload && /etc/init.d/php-fpm restart  &>/dev/null  #重新加载nginx php   
    if [ "$?" -eq 0  ];then     #如果加载成功  
       action "zabbix主配修改成功,正在进行相关的配置~" /bin/true   #那么输出此信息  
       else         #否则  
        action "zabbix发生了严重的错误!!!" /bin/false       #否则输出失败  
        exit 1      #退出此脚本  
    fi  #结束if语句  
    cd /usr/local/src/zabbix-3.2.1/ && {   #如果进入zabbix解压目录成功 ,那么执行以下操作  
        cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server  
        cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd  
        chmod +x /etc/rc.d/init.d/zabbix_server  
        chmod +x /etc/rc.d/init.d/zabbix_agentd  
        chkconfig --add zabbix_server   
        chkconfig --add zabbix_agentd  
        chkconfig zabbix_server on  
        chkconfig zabbix_agentd on  
    }  
      
        if [ "$?" -eq 0 ];then      #以此类推这里不在解释,写的手累,谅解  
           action "复制zabbix启动项成功" /bin/true  
        else  
           action "复制zabbix启动项失败!!" /bin/false  
           exit 1  
        fi  
    sed -i 's$BASEDIR=/usr/local$BASEDIR=/usr/local/zabbix/$g' /etc/rc.d/init.d/zabbix_server  
    sed -i 's*PIDFILE=/tmp/$BINARY_NAME.pid*PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid*g'  /etc/rc.d/init.d/zabbix_server  
    sed -i 's$BASEDIR=/usr/local$BASEDIR=/usr/local/zabbix/$g' /etc/rc.d/init.d/zabbix_agentd  
    sed -i 's*PIDFILE=/tmp/$BINARY_NAME.pid*PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid*g' /etc/rc.d/init.d/zabbix_agentd  
      
    ldconfig && systemctl daemon-reload   
    /etc/init.d/zabbix_agentd start  &>/dev/null  
    /etc/init.d/zabbix_server start  &>/dev/null  
        if [ "$?" -eq 0 ];then  
           action "zabbix监控启动成功,正在进行配置页面,请稍后!!!" /bin/true  
        else  
           action "zabbix监控启动失败,请检查环境!!!" /bin/false  
           exit 1  
        fi  
    mkdir /usr/local/nginx/html/zabbix/   
        if [ -d /usr/local/nginx/html/zabbix/ ];then  
               cp -r /usr/local/src/zabbix-3.2.1/frontends/php/* /usr/local/nginx/html/zabbix/  
        else  
           action "zabbix目录创建失败" /bin/false  
           exit 1  
        fi  
    chown -R nginx:nginx /usr/local/nginx/html/zabbix  
      
    if [ $? -eq 0  ];then       #最后输出以下信息,对以上的命令执行进行判断  
       echo "zabbix部署成功,请您访问http://IP/zabbix"  
       else  
         echo "zabbix部署失败,请检查环境!!!"  
        exit 1  
    fi  
    }  
      
    function TC (){     #定义退出脚本  
            echo -e "${red_col}此管理程序已经成功退出!
    ${reset_col}"  
        exit 0      #退出  
    }  
      
    function GJ(){      #编写关机脚本  
        echo -e "${red_col}即将关机,请稍后....
    ${reset_col}"  
        shutdown -h now     #关机  
    }  
      
    function zong(){    #定义总的函数 也就是结局  
    while :     #while :循环条件为真  
    do      #do  
     panduan    #一直循环判断,实现了一直等待让用户输入  
        case $NUM in    #case 如果$NUM变量中  
            1)      #输入的是1  
            Yum_check   #那么调用YUM函数  
            ;;    
            2)              .......等等 以此类推这里不在解释,写的手累,谅解  
            Nginx_server  
            ;;  
            3)  
            Apache_server  
            ;;  
            4)  
            Mysql_server  
            ;;  
            5)  
            php_server  
            ;;  
            6)  
            LNMP  
            ;;  
            7)  
            zabbix_server  
            ;;  
            8)  
            TC  
            ;;  
            9)  
            GJ  
            ;;  
        esac        #最后使用esac结束case语句  
    done        #done结束while循环  
    }     
    zong        #最后调用总的函数 
  • 相关阅读:
    PHP中cookie和会话编程
    PHPweb应用程序开发技巧
    javascript中DOM编程
    PHP动态创建Web站点
    在IE下FLASH背景透明而在FF下不透明的解决方法
    ThinkPHP返回插入记录的id号
    PHP面向对象编程
    PHP smarty编程总结
    Linux用户权限设置
    无法载入 mcrypt 扩展,请检查 PHP 配置
  • 原文地址:https://www.cnblogs.com/YankaiJY/p/8832602.html
Copyright © 2011-2022 走看看