shell脚本安装mysql、nginx、rabbitmq等等_rabbitmq 一键安装shell脚本-程序员宅基地

技术标签: linux  

首先要准备对应的RPM安装包,这里就不展示了,只显示脚本

#!/bin/bash
##################################
#Date:2023-9-8
#Author:lihua
#Version:2.0
#####################################


#--------------------------------------主菜单函数----------------------------------------------------------------------
show_menu(){
    NORMAL=`echo "\033[m"`
    MENU=`echo "\033[36m"` #Blue
    NUMBER=`echo "\033[33m"` #yellow
    FGRED=`echo "\033[41m"`
    RED_TEXT=`echo "\033[31m"`
    ENTER_LINE=`echo "\033[33m"`
    echo -e -n "\e[36m \e[0m" ; echo -e "\t  \e[47;34m Linux 自 动 化 脚 本 主 菜 单 \e[0m" ; echo -e "\e[36m \t \e[0m"
    echo -e  "\e[35m \t\t  作 者:lihua\t\t\t\t \e[0m"
    echo -e "${MENU}************************************************************************${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  1)${MENU}  关闭防火墙和系统参数优化操作                   ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  2)${MENU}  安装Nginx_1.22                                 ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  3)${MENU}  安装Mysql_5.7                                  ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  4)${MENU}  安装Jdk_1.8                                    ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  5)${MENU}  安装Redis_5.0                                  ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  6)${MENU}  安装Minio                                      ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  7)${MENU}  安装Rabbitmq_3.9                               ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  8)${MENU}  安装Opencv_4.5.5                               ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  9)${MENU}  安装Mariadb_10.0.33                            ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER} 10)${MENU}  安装Elasticsearch_7.10.2                       ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER} 20)${MENU}  安装Opencv_2.4.13  ${NUMBER}(*)                ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER} 21)${MENU}  安装Gitlab_7.10.5  ${NUMBER}(*)                ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER} 22)${MENU}  安装Mysql_8.0      ${NUMBER}(*)                ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER} 30)${MENU}  卸载Mysql_5.7                                  ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER} 31)${MENU}  卸载Rabbitmq_3.9                               ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER} 32)${MENU}  卸载Mariadb_10.0.33                            ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}  q)${MENU}  请输入q或者Enter(回车键)将自动退出此脚本       ${NORMAL}"
    echo -e "${MENU}|\t${NUMBER}DEL)${MENU}  如输入错误,请按住Ctrl+Backspace键进行删除操作 ${NORMAL}"
    echo -e "${MENU}************************************************************************${NORMAL}"
    echo -e "${ENTER_LINE}Please choose a menu option OR ${RED_TEXT}Enter(按回车键自动退出) to exit. ${NORMAL}"
    read -p $'\033[42;34m请选择需要安装的序号:\033[0m' opt
}

#---------------------------显示序号数字函数-------------------------------------------------------------------------
function option_picked() {
    COLOR='\033[01;31m' # bold red
    RESET='\033[00;00m' # normal white
    MESSAGE=${@:-"${RESET}Error: No message passed"}
    echo -e "${COLOR}${MESSAGE}${RESET}"
}
 
#----------------------------目录全局函数------------------------------------------------------------------------------
CURRENT_DIR=$(cd $(dirname $0); pwd)

#----------------------------空格函数---------------------------------------------------------------------------
install_space(){

echo -e "\e[36m \t\t\t\t\t\t\t\t\t \e[0m"
echo -e "\e[36m \t\t\t\t\t\t\t\t\t \e[0m"
echo -e "\e[36m \t\t\t\t\t\t\t\t\t \e[0m"

}


#------------------------开启文件最大数函数--------------------------------------------------------------------------
open_wj(){
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
cat >> /etc/security/limits.conf << EOF
 * soft nproc 65535
 * hard nproc 65535
 * soft nofile 65535
 * hard nofile 65535

EOF
fi

#system Maximum config
sys=`grep "fs.file-max = 65535" /etc/sysctl.conf | wc -l`
if [ "$sys" -eq "0" ]
then
cat >> /etc/sysctl.conf << EOF
fs.file-max = 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF
else
   echo "系统参数已存在"
fi

sysctl -p

}

#-----------------------------node 1.关闭防火墙函数-----------------------------------------------------------------------
disable_firewalld(){
read -p $'请选择是否进行关闭防火墙和系统参数优化操作,选择yes会\e[31m【重启系统】\e[0m,让配置生效,谨慎操作!!(yes/no):' NUM1
         case "$NUM1" in
         "yes")
           systemctl stop firewalld
           systemctl disable firewalld && echo -e "\033[31m firewall已成功关闭 \033[0m" 
           iptables -F
           iptables -X
           iptables -Z
           iptables-save &>/dev/null && echo -e "\033[31m iptables已成功关闭 \033[0m" 
           setenforce 0 &>/dev/null
           sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config && echo -e "\033[31m selinux已成功关闭 \033[0m"
           # 设置时区并同步时间
           yum install -y ntpdate >/dev/null 2>&1
           if ! crontab -l | grep ntpdate >/dev/null 2>&1 ; then
                (echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1"; crontab -l) | crontab
           fi
            
           # 历史命令显示操作时间
           if ! grep HISTTIMEFORMAT /etc/bashrc; then
           echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc
           fi
           # 设置最大打开文件数
           open_wj
          echo -e "\033[32m 防火墙和系统参数优化操作已完成,正在重启系统,请等待.............. \033[0m"
           reboot
           ;;
         "no")
          echo -e "\033[31m 很遗憾您拒绝了我,再见!\033[0m"
          ;;
          *)
         echo -e  "\033[31m 不明白您的意思;再运行一次吧!\033[0m"
        esac

}


#-------------------------------node 2.安装nginx函数-------------------------------------------------
install_nginx(){
cp $CURRENT_DIR/libpcre2-8.so.0.5.0    /usr/lib64/
cd /usr/lib64/
ln -s libpcre2-8.so.0.5.0 libpcre2-8.so.0
rpm -ivh $CURRENT_DIR/openssl-libs-1.0.2k-19.el7.x86_64.rpm --force
rpm -ivh $CURRENT_DIR/nginx-1.22.0-1.el7.ngx.x86_64.rpm --nodeps --force
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_back
cp $CURRENT_DIR/nginx.conf  $CURRENT_DIR/proxy-file.conf  /etc/nginx
/usr/sbin/nginx
if [ "$?" -eq 0 ];then
    action "恭喜你,成功安装Nginx并将服务加入开机自启动,配置文件目录:/etc/nginx!!!" /bin/true  && systemctl enable nginx
else
    action "对不起,安装Nginx失败! ! !" /bin/false
    exit 1
fi

}

#------------------------------node 3.安装mysql函数----------------------------------------------------------------------------
install_mysql(){
mariadb_rpm_list=`rpm -qa |grep mariadb`
            if [ -n "$mariadb_rpm_list" ];then
            echo "mariadb检查结果:系统已安装mariadb,需先卸载"
            read -p "是否卸载mariadb?(Y/N):" choose_Unmariadb
            if [ "$choose_Unmariadb" == 'Y' ] || [ "$choose_Unmariadb" == 'y' ] ;then
               echo "开始卸载mariadb..."
               rpm -qa |grep mariadb |xargs rpm -e --nodeps
               sleep 2
               
               echo -e "\033[31m mariadb卸载完成!\033[0m"
           else
               exit 0
           fi
         else
            echo -e "\033[31m mariadb检查结果:系统未安装mariadb.\033[0m"
         fi

        echo -e "\033[32m 安装MySQL5.7.36 软件包 \033[0m"
        tar xvf $CURRENT_DIR/mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar  >/dev/null 2>&1
        rpm -ivh $CURRENT_DIR/mysql-community-common-5.7.36-1.el7.x86_64.rpm
        rpm -ivh $CURRENT_DIR/mysql-community-libs-5.7.36-1.el7.x86_64.rpm
        rpm -ivh $CURRENT_DIR/mysql-community-libs-compat-5.7.36-1.el7.x86_64.rpm
        rpm -ivh $CURRENT_DIR/mysql-community-client-5.7.36-1.el7.x86_64.rpm
        rpm -ivh $CURRENT_DIR/mysql-community-devel-5.7.36-1.el7.x86_64.rpm
        rpm -ivh $CURRENT_DIR/mysql-community-server-5.7.36-1.el7.x86_64.rpm --force --nodeps

        mv /etc/my.cnf  /etc/my.cnf.back
        cat > /etc/my.cnf << EOF
       [client]
       default-character-set = utf8mb4
       [mysql]
       default-character-set = utf8mb4
       [mysqld]
       datadir=/var/lib/mysql
       socket=/var/lib/mysql/mysql.sock
       port = 3306
       server_id = 1
       log_slave-updates = true
       log-bin = mysql-bin
       log_bin_trust_function_creators = 1
       user = mysql
       character-set-client-handshake = FALSE
       character-set-server = utf8mb4
       collation-server = utf8mb4_general_ci
       init_connect='SET NAMES utf8mb4'
       lower_case_table_names = 1
       sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
       symbolic-links = 0
       log-error = /var/log/mysqld.log
       pid-file=/var/run/mysqld/mysqld.pid
       default_password_lifetime = 0
EOF


open_wj

       echo -e "\033[32m 启动MySQL服务 \033[0m"
       systemctl start mysqld
       if [ "$?" -eq 0 ];then
          action "恭喜你,成功安装Mysql并将服务加入开机自启动!!!" /bin/true    && systemctl enable mysqld
          else
          action "对不起,安装Mysql失败! ! !" /bin/false
          exit 1
       fi


echo -e "\033[32m 2、修改mysql密码 \033[0m"
     initpasswd=`cat /var/log/mysqld.log |grep root@localhost |awk '{print $NF}'`   # 初始密码
    echo "MySQL的初始密码是:$initpasswd"
    read -p "请输入您要设置MySQL的root用户密码:" passwd
    export MYSQL_PWD=$initpasswd  #解决mysql>5.6会提示密码安全问题
    mysql -uroot  -p${initpasswd} --connect-expired-password -e "set global validate_password_policy=LOW;set global validate_password_length=6;alter user 'root'@'localhost' identified by \"$passwd\";use mysql;update user set host = '%' where user ='root';flush privileges;"
    if [ "$?" -eq 0 ];then
       action "MySQL数据库安装成功,密码为:$passwd" /bin/true
     else
      action "MySQL数据库安装失败密码初始化失败!" /bin/false
     exit 1
     fi

     echo -e "\033[32m 3、mysql使用及目录 \033[0m"
     mysql -uroot -p$passwd  -e "show databases;"
    if [[ $? -eq 0 ]]; then
        echo -e "\033[32m MySQL5.7安装完成,数据目录: /var/lib/mysql 请使用: mysql -uroot  -p$passwd 命令进行连接\033[0m"
    else
        echo -e "\033[5;41;32m MySql5.7安装失败,请排查错误信息。重新安装请输入【30】进行卸载后,重新执行脚本安装 \033[1;m"
    fi


}


#---------------------------node 4.安装jdk函数--------------------------------------------------------------------------
install_jdk(){

jdk_rpm_list=`rpm -qa |grep java`
    if [ -n "$jdk_rpm_list" ]; then
        echo -e "\033[32m jdk检查结果:系统已安装openjdk,需先卸载,已安装的openjdk如下:\033[0m"
        rpm -qa | grep java | tee
        read -p "是否卸载已安装的openjdk?(Y/N):" choose_Unrabbitmq
        if [ "$choose_Unrabbitmq" == 'Y' ] || [ "$choose_Unrabbitmq" == 'y' ];then
            echo "开始卸载openjdk..."
            rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
            sleep 2
            echo "openjdk卸载完成!!"
            else
            exit 0
        fi
     else
       echo "openjdk检查结果:系统未安装Openjdk."     
    fi

source /etc/profile
jdkv=`echo $(java -version 2>&1 |awk 'NR==1{gsub(/"/,"");print $3}')|awk -F'_' '{print $1}'`
if [ "$jdkv" == "1.8.0" ]
then
   echo -e  "\033[32m 系统已存在JDK版本1.8,不在重复安装!\033[0m"
else
echo -e "\033[32m 未检测到JDK1.8,稍后将继续安装,请等待........\033[0m"
echo -e "检查JDK是否配置环境,删除原环境........"
          jdk1=$(grep -n "export JAVA_HOME=.*" /etc/profile | cut -f1 -d':')
          if [ -n "$jdk1" ];then
          echo "JAVA_HOME已配置,删除内容"
          sed -i "${jdk1}d" /etc/profile
          fi
         jdk2=$(grep -n "export CLASSPATH=.*\$JAVA_HOME.*" /etc/profile | cut -f1 -d':')
         if [ -n "$jdk2" ];then
         echo "CLASSPATH路径已配置,删除内容"
         sed -i "${jdk2}d" /etc/profile
         fi
         jdk3=$(grep -n "export PATH=.*\$JAVA_HOME.*" /etc/profile | cut -f1 -d':')
         if [ -n "$jdk3" ];then
         echo "PATH-JAVA路径已配置,删除内容"
         sed -i "${jdk3}d" /etc/profile
         fi

jdk=true
if [ "$jdk" = true ];then
  tar -zxf jdk-8u161-linux-x64.tar.gz -C /usr/local
  mv /usr/local/jdk1.8.0_161 /usr/local/jdk180
  sed -i '73a\export PATH=$PATH:$JAVA_HOME/bin' /etc/profile
  sed -i '73a\export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profile
  sed -i '73a\export JAVA_HOME=/usr/local/jdk180' /etc/profile
  sed -i '73a\# JAVA_HOME' /etc/profile
fi
source /etc/profile
java -version
 if [ "$?" -eq 0 ];then
          action "恭喜你,成功安装JDK1.8!!!" /bin/true
          echo -e "\033[32m 因使用脚本安装,本机使用时需要在执行一下 【source /etc/profile】 命令 \033[0m"
          else
          action "对不起,安装JDK失败! ! !" /bin/false
          exit 1
   fi

fi
}


#---------------------------node 5.安装redis函数---------------------------------------------------------------
install_redis(){
rpm -ivh $CURRENT_DIR/redis-5.0.14-1.el7.remi.x86_64.rpm
 sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis.conf
 sed -i "s/protected-mode yes/protected-mode no/g" /etc/redis.conf
 sed -i "s/daemonize no/daemonize yes/g" /etc/redis.conf
 sed -i 's/appendonly no/appendonly yes/g' /etc/redis.conf

echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/enabled
sysctl -p

cat >> /etc/systemd/system/redis.service << EOF
[Unit]
Description=redis-server
After=network.target

[Service]
User=redis
Group=redis
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl start redis
if [ "$?" -eq 0 ];then
          action "恭喜你,成功安装REDIS并将服务加入开机自启动!!!" /bin/true   &&  systemctl enable redis  
          else
          action "对不起,安装REDIS失败! ! !" /bin/false
          exit 1
fi


}

#----------------------------------node 6.安装minio函数--------------------------------------------------------
install_minio(){
rpm -ivh $CURRENT_DIR/minio-20230711212934.0.0.x86_64.rpm
systemctl enable minio
sed -i "s/User=minio-user/User=root/g" /usr/lib/systemd/system/minio.service  
sed -i "s/Group=minio-user/Group=root/g" /usr/lib/systemd/system/minio.service 

cp  minio /etc/default
echo -e "\033[32m minio配置修改 \033[0m"
read -p "请输入minio存储路径目录:"  miniodir
mkdir -p $miniodir
mdir=`cat  /etc/default/minio| grep -w "MINIO_VOLUMES" | awk -F'=' '{print $2}'| sed 's/\"//g'`
sed -i "s#${mdir}#${miniodir}#g" /etc/default/minio

read -p "请输入web界面登陆用户名:" miniouser
muser=`cat  /etc/default/minio| grep -w "MINIO_ACCESS_KEY" | awk -F'=' '{print $2}'| sed 's/\"//g'`
sed -i "s/${muser}/${miniouser}/g" /etc/default/minio


read -p "请输入web界面登陆密码:" miniopasswd
mmpasswd=`cat  /etc/default/minio| grep -w "MINIO_SECRET_KEY" | awk -F'=' '{print $2}'| sed 's/\"//g'`
sed -i "s/${mmpasswd}/${miniopasswd}/g" /etc/default/minio

systemctl daemon-reload
service minio start
if [ "$?" -eq 0 ];then
          action "恭喜你,成功安装MINIO并将服务加入开机自启动!!!" /bin/true
          else
          action "对不起,安装MINIO失败! ! !" /bin/false
          exit 1
fi


echo -e "\033[32m minio使用及目录 \033[0m"
IP=`ip addr | grep "inet" | grep "brd"| awk '{print $2}'| awk -F'/' '{print $1}'`
user=`cat /etc/default/minio | grep "ACCESS"| awk  -F'=' '{print $2}' |sed 's/\"//g'`
passwd=`cat /etc/default/minio | grep "SECRET"| awk  -F'=' '{print $2}' |sed 's/\"//g'`
if [[ $? -eq 0 ]]; then
        echo -e "\033[32m MINIO安装完成,数据目录: $miniodir 请使用: $IP:9001 进行web页面登录;登录用户名为:$user,密码为:$passwd \033[0m"
else
        echo -e "\033[5;41;32m MINIO安装失败,请排查错误信息。重新安装请卸载后,重新执行脚本安装 \033[1;m"
fi

}


#------------------------------------node 7.安装rabbitmq------------------------------------------------------------------
install_rabbitmq(){
rpm -ivh  $CURRENT_DIR/erlang-23.3.4.11-1.el7.x86_64.rpm
rpm -ivh  $CURRENT_DIR/rabbitmq-server-3.9.13-1.el7.noarch.rpm
service rabbitmq-server start
if [ "$?" -eq 0 ];then
          action "恭喜你,成功安装rabbitmq!!!" /bin/true   &&  systemctl enable rabbitmq-server 
          else
          action "对不起,安装rabbitmq失败! ! !" /bin/false
          exit 1
   fi

echo -e "\033[32m 2、开启图形化管理界面 \033[0m"
rabbitmq-plugins enable rabbitmq_management
if [ "$?" -eq 0 ];then
          action "恭喜你,开启rabbitmq图形化管理界面成功!!!" /bin/true 
          else
          action "对不起,开启rabbitmq图形化管理界面失败! ! !" /bin/false
          exit 1
   fi

echo -e "\033[32m 3、设置图形化管理界面用户名和密码 \033[0m"
read -p "请输入rabbitmq图形化管理界面用户名:" USER
read -p "请输入rabbitmq图形化管理界面密码:" PASSWD
IP=`ip addr | grep "inet" | grep "brd"| awk '{print $2}'| awk -F'/' '{print $1}'`
rabbitmqctl add_user  $USER $PASSWD
rabbitmqctl set_user_tags $USER administrator
rabbitmqctl set_permissions -p "/" $USER  ".*" ".*" ".*"
if [[ $? -eq 0 ]]; then
        echo -e "\033[32m rabbitmq安装完成; 请使用: $IP:15672  进行web页面登录;登录用户名为:$USER,密码为:$PASSWD \033[0m"
else
        echo -e "\033[5;41;32m rabbitmq安装失败,请排查错误信息。重新安装,请选择【31】卸载后,重新执行脚本安装 \033[1;m"
fi

}


#-------------------------------node 8.安装opencv_4.5.5--------------------------------------------------------------------
install_opencv_4.5.5(){

tar xvf  $CURRENT_DIR/opencv-install.tar  >/dev/null 2>&1
mv $CURRENT_DIR/opencv-install /opt/

echo '1、开始安装JDK'
install_jdk


echo '2、开始安装cmake和opencv所需依赖'
rpm -Uvh --force --nodeps  /opt/opencv-install/rpm/*rpm

echo '3、开始安装cmake'
tar -zxvf /opt/opencv-install/tar/cmake-3.6.2.tar.gz -C /usr/local
cd /usr/local/cmake-3.6.2
./bootstrap && make -j4 
if [ "$?" -eq 0 ];then
          action "cmake编译成功,将继续安装....." /bin/true
          else
           action "对不起,编译cmake失败! ! !" /bin/false
          exit 1
fi

make install


echo '4、开始安装ffmpeg'
tar -zxvf /opt/opencv-install/tar/ffmpeg-4.2.2.tar.gz -C /usr/local/
mv /usr/local/ffmpeg-4.2.2 /usr/local/ffmpeg
cd /usr/local/ffmpeg
./configure --enable-shared --enable-pic --enable-static --disable-yasm --prefix=/usr/local/ffmpeg
make 
if [ "$?" -eq 0 ];then
          action "ffmpeg编译成功,将继续安装....." /bin/true
          else
           action "对不起,编译ffmpeg失败! ! !" /bin/false
          exit 1
fi

make install

echo -e 'include ld.so.conf.d/*.conf\n/usr/local/ffmpeg/lib/' >> /etc/ld.so.conf.d/ffmpeg.conf
ldconfig
echo -e '\nexport PATH=$PATH:/usr/local/ffmpeg/bin' >> /etc/profile
source /etc/profile
cp /usr/local/ffmpeg/lib/pkgconfig/*  /usr/share/pkgconfig

echo '5、开始编译opencv-4.5.5'
mv /opt/opencv-install/opencv /usr/local/
cd /usr/local/opencv/build/
/usr/local/bin/cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local  -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/ -D WITH_FFMPEG=ON -D OPENCV_GENERATE_PKGCONFIG=ON ..
make -j4 
if [ "$?" -eq 0 ];then
          action "opencv编译成功,将继续安装....." /bin/true
          else
           action "对不起,编译opencv失败! ! !" /bin/false
          exit 1
fi
make install

ln -s /usr/local/lib64/pkgconfig/opencv4.pc /usr/share/pkgconfig/
ldconfig
echo -e '\nexport PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64' >> /etc/profile
source /etc/profile
cp /usr/local/lib64/pkgconfig/opencv4.pc /usr/lib/pkgconfig
ldconfig
cp /usr/local/opencv/build/lib/libopencv_java455.so /usr/lib


echo -e "\033[32m 检查Opencv4.5.5所依赖的环境是否OK,请稍后..... \033[0m"
java -version
echo -e '\n'
ffmpeg -version
echo -e '\nopencv version '
pkg-config --modversion opencv4
 if [ "$?" -eq 0 ];then
          action "恭喜你,成功安装Opencv_4.5.5!!!" /bin/true 
          else
          action "对不起,安装Opencv_4.5.5失败! ! !" /bin/false
          exit 1
   fi


}


#-----------------------------------node 9.安装mariadb10.0.33--------------------------------------------------------------------
install_mariadb(){

tar -xzvf $CURRENT_DIR/mariadb-10.0.33-linux-x86_64.tar.gz > /dev/null 2>&1
mv  $CURRENT_DIR/mariadb-10.0.33-linux-x86_64  /usr/local/mariadb-10.0.33
useradd -s /sbin/nologin -M mysql
cd /usr/local/mariadb-10.0.33
./scripts/mysql_install_db   --user=mysql
if [ "$?" -eq 0 ];then
          action "mariadb初始化成功,将继续安装....." /bin/true
          else
           action "对不起,mariadb初始化失败! ! !" /bin/false
          exit 1
fi

sleep 2
mv /etc/my.cnf /etc/my.cnf.bak
cp support-files/my-innodb-heavy-4G.cnf  /etc/my.cnf
sed -i '45i basedir=/usr/local/mariadb-10.0.33' /etc/my.cnf
sed -i '46i datadir=/var/lib/mysql' /etc/my.cnf


open_wj

cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
/etc/init.d/mysqld start
if [ "$?" -eq 0 ];then
          action "mariadb服务启动成功....." /bin/true
          else
           action "对不起,mariadb服务启动失败! ! !" /bin/false
          exit 1
fi


echo 'PATH=$PATH:/usr/local/mariadb-10.0.33/bin' >>  /etc/profile
source  /etc/profile
echo -e "\033[32m 2、修改mariadb密码和权限 \033[0m"
read -p "请输入您要设置Mariadb的root用户密码:" passwd
/usr/local/mariadb-10.0.33/bin/mysqladmin -u root password $passwd
/usr/local/mariadb-10.0.33/bin/mysql -uroot -p$passwd -e "grant all privileges on *.* to root@'localhost' identified by '$passwd' with grant option;"
/usr/local/mariadb-10.0.33/bin/mysql -uroot -p$passwd -e "grant all privileges on *.* to root@'%' identified by '$passwd' with grant option;"
/usr/local/mariadb-10.0.33/bin/mysql -uroot -p$passwd -e "FLUSH PRIVILEGES;"
/usr/local/mariadb-10.0.33/bin/mysql -uroot -p$passwd -e "CREATE DATABASE gitlabhq_production;"

echo -e "\033[32m 3、Mariadb使用及目录 \033[0m"
     mysql -uroot -p$passwd  -e "show databases;"
    if [[ $? -eq 0 ]]; then
        echo -e "\033[32m Mariadb安装完成,数据目录: /var/lib/mysql 请使用: mysql -uroot  -p$passwd 命令进行连接\033[0m"
    else
        echo -e "\033[5;41;32m Mariadb安装失败,请排查错误信息。重新安装请输入【32】进行卸载后,重新执行脚本安装 \033[1;m"
    fi
}


#-----------------------------------node 10.安装elasticsearch7.10.2--------------------------------------------------------------------

install_elasticsearch(){

rpm -ivh $CURRENT_DIR/elasticsearch-7.10.2-x86_64.rpm 
#单独创建目录用于存放elasticsearch数据
mkdir -p /home/elasticsearch/data
mkdir -p /home/elasticsearch/logs
chown -R elasticsearch:elasticsearch /home/elasticsearch
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_default
#修改elasticsearch相关配置文件
sed -i "s@#cluster.name: [email protected]: graylog@g" /etc/elasticsearch/elasticsearch.yml
sed -i "s#path.data: /var/lib/elasticsearch#path.data: /home/elasticsearch/data#g" /etc/elasticsearch/elasticsearch.yml
sed -i "s#path.logs: /var/log/elasticsearch#path.logs: /home/elasticsearch/logs#g" /etc/elasticsearch/elasticsearch.yml
#echo "action.auto_create_index: false" >> /etc/elasticsearch/elasticsearch.yml
#修改JVM内存大小
sed -i "s/-Xms1g/-Xms1g/g" /etc/elasticsearch/jvm.options
sed -i "s/-Xmx1g/-Xmx1g/g" /etc/elasticsearch/jvm.options

open_wj

#启动elasticsearch服务
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
if [[ $? -eq 0 ]]; then
        echo -e "\033[32m Elasticsearch安装完成,配置只开放了本机,如需对外请修改配置\033[0m"
    else
        echo -e "\033[5;41;32m Elasticsearch安装失败,请排查错误信息。重新安装请进行卸载后,重新执行脚本安装 \033[1;m"
fi

curl -s -XGET 'http://127.0.0.1:9200/_cluster/health?pretty=true'
curl -s -XGET 'http://127.0.0.1:9200/_cat/nodes?v'

}

#---------------------------------node 20.安装opencv2.4.13函数-----------------------------------------------------------
install_opencv_2.4.13(){
yum install -y unzip >/dev/null 2>&1
unzip $CURRENT_DIR/opencv-2.4.13.zip >/dev/null 2>&1
mv  $CURRENT_DIR/opencv-2.4.13  /usr/local/src

yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm build-essential ant make  ffmpeg -y

echo -e "\033[32m 开始安装JDK,请稍等...... \033[0m"
install_jdk


cd /usr/local/src/opencv-2.4.13
cd build
rm -rf *
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8
if [ "$?" -eq 0 ];then
          action "第一次编译成功,将继续安装....." /bin/true
          else
           action "对不起,第一次编译opencv失败! ! !" /bin/false
          exit 1
fi

make install
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF ..
make -j8
if [ "$?" -eq 0 ];then
          action "第二次编译成功,将继续安装....." /bin/true
          else
           action "对不起,第二次编译opencv失败! ! !" /bin/false
          exit 1
fi

make install
sleep 2
/usr/bin/cp  /usr/local/share/OpenCV/java/libopencv_java2413.so /usr/lib
if [ "$?" -eq 0 ];then
          action "恭喜你,成功安装Opencv_2.4.13!!!" /bin/true
          else
          action "对不起,安装Opencv_2.4.13失败! ! !" /bin/false
          exit 1
   fi


}

#---------------------------------------------gitlab7.10.5初始化函数---------------------------------------------------
init_gitlab(){


echo -e "\033[34m 4、Gitlab即将初始化,初始化提供线上和线下,2种方式进行\033[0m"
echo -e "\033[32m(1)线上方式:一路选择(Y)\033[0m"
echo -e "\033[32m(2)线下方式:\e[31m先选择(N),然后请修改/etc/gitlab/gitlab.rb文件对应的配置项,在初始化这一步再次执行(Y-N)\e[0m 操作\033[0m"
read -p "是否进行Gitlab初始化动作?(Y/N):" choose_gitlab
if [ "$choose_gitlab" == 'Y' ] || [ "$choose_gitlab" == 'y' ];then
echo -e "\033[32m 开始初始化Gitlab,请等待...\033[0m"
echo -e "${NUMBER}说明:(1)线上初始化为:直接输入配置项,进行更改配置操作${NORMAL}"
echo -e "${NUMBER}      (2)线下初始化为:在上一步选择(N)直接退出安装脚本后,进行了线下修改配置项,再次执行初始化操作,选择线下初始化(N)${NORMAL}"
read -p "请选择进行线上初始化(Y)OR 线下初始化(N)?(Y/N):" choose_gitlab_init
if [ "$choose_gitlab_init" == 'Y' ] || [ "$choose_gitlab_init" == 'y' ];then
#####################################线上初始化########################################################################
echo -e "\033[32m 请根据提示输入配置项,如输入错误请按住\033[31m Ctrl+Backspace \033[0m 进行删除操作!.......\033[0m"
w=`grep -w "external_url" /etc/gitlab/gitlab.rb | sed '1d' | awk -F' ' '{print $2}' | cut -d"'" -f2 | awk -F'/' '{print $3}'`
read -p $'请输入gitlab的\033[31mIP\033[0m地址: ' gitlabip
sed -i "s/${w}/${gitlabip}/g"  /etc/gitlab/gitlab.rb

n=`grep -w "db_password" /etc/gitlab/gitlab.rb  | awk -F'=' '{print $2}' | sed 's/\"//g' | sed 's/^[ ]*//g' | sed '1d' | sed '2d'`
read -p $'请输入数据库\033[31mmariadb密码\033[0m: ' gitlabpass
sed -i "s/${n}/${gitlabpass}/g"  /etc/gitlab/gitlab.rb

m=`grep -n "git_data_dir" /etc/gitlab/gitlab.rb | awk -F' ' '{print $3}' | sed 's/\"//g'`
read -p $'请输入\033[31m数据存储路\033[0m径地址,尽量使用容量大的磁盘,目录不存在时会自动创建: ' gitlabdir
sed -i "s#${m}#${gitlabdir}#g"  /etc/gitlab/gitlab.rb


q=`grep -n "backup_path" /etc/gitlab/gitlab.rb  | awk -F'=' '{print $2}' | sed 's/\"//g' | sed 's/^[ ]*//g'`
read -p $'请输入\033[31m数据备份\033[0m路径地址,尽量使用容量大的磁盘,目录不存在时会自动创建: ' gitlabback
sed -i "s#${q}#${gitlabback}#g"  /etc/gitlab/gitlab.rb

gitlab-ctl reconfigure
if [ "$?" -eq 0 ];then
          action "gitlab初始化成功,将继续安装....." /bin/true
          else
           action "对不起,gitlab初始化失败! ,请检查错误后再次初始化" /bin/false
          exit 1
fi

echo -e "\033[32m 开始初始化数据库,请等待......\033[0m"
gitlab-rake gitlab:setup
if [ "$?" -eq 0 ];then
          action "数据库初始化成功,将继续安装....." /bin/true
          else
           action "对不起,数据库初始化失败! ,请检查错误后再次初始化" /bin/false
          exit 1
fi

echo -e "\033[32m 开始初始化检查,请等待.......\033[0m"
gitlab-rake gitlab:check
if [[ $? -eq 0 ]]; then
        echo -e "\033[32m初始化检查成功,正在重启服务,请等待..... \033[0m"
else
        echo -e "\033[5;41;32m 对不起,初始化失败! ,请检查错误后再次初始化 \033[1;m"
fi
else
######################################线下初始化##########################################################
gitlab-ctl reconfigure
if [ "$?" -eq 0 ];then
          action "gitlab初始化成功,将继续安装....." /bin/true
          else
           action "对不起,gitlab初始化失败! ,请检查错误后再次初始化" /bin/false
          exit 1
fi

echo -e "\033[32m 开始初始化数据库,请等待......\033[0m"
gitlab-rake gitlab:setup
if [ "$?" -eq 0 ];then
          action "数据库初始化成功,将继续安装....." /bin/true
          else
           action "对不起,数据库初始化失败! ,请检查错误后再次初始化" /bin/false
          exit 1
fi

echo -e "\033[32m 开始初始化检查,请等待.......\033[0m"
gitlab-rake gitlab:check
if [[ $? -eq 0 ]]; then
        echo -e "\033[32m初始化检查成功,正在重启服务,请等待..... \033[0m"
else
        echo -e "\033[5;41;32m 对不起,初始化失败! ,请检查错误后再次初始化 \033[1;m"
fi
    
fi
else
    exit 0
fi


}

#---------------------------------node 21.安装gitlab7.10.5函数-----------------------------------------------------------
install_gitlab(){

echo -e "\033[34m 1、检查是否安装redis \033[0m"
redis_list=`ps axu  |grep redis| grep -v "grep"`
    if [ -n "$redis_list" ]; then
        echo -e "\033[32m redis检查结果:系统已安装redis,直接跳过安装redis\033[0m"
    else
        install_redis
    fi
sleep 2

echo -e  "\033[34m 2、检查是否安装mariadb \033[0m"
mysql_list=`ps axu  |grep mariadb | grep -v "grep"`
    if [ -n "$mysql_list" ]; then
        echo -e "\033[32m mariadb检查结果:系统已安装mariadb,直接跳过安装mariadb\033[0m"
    else
        install_mariadb
    fi
sleep 2

echo -e "\033[34m 3、Gitlab组件包已安装成功,下一步进行gitlab依赖安装,因脚本使用80端口,确保80端口没被占用,请等待...\033[0m"
read -p "是否进行Gitlab依赖安装,初次安装请选择Y,如之前安装过就无须再次安装了,直接选择(N)进行初始化操作?(Y/N):" choose_gitlab_qianzhi
if [ "$choose_gitlab_qianzhi" == 'Y' ] || [ "$choose_gitlab_qianzhi" == 'y' ];then
echo -e "\033[32m 开始Gitlab依赖安装,因依赖网络速度,时间较长,并保证此机器能联网使用,请耐心等待...\033[0m"
yum install -y gcc ruby-devel mysql-devel >/dev/null 2>&1 
yum install -y $CURRENT_DIR/gitlab-ce-7.10.5~omnibus-1.x86_64.rpm

gem sources --remove https://rubygems.org/
gem sources -a  https://mirrors.cloud.tencent.com/rubygems/

cd /opt/gitlab/embedded/bin/
./gem install -i /opt/gitlab/embedded/service/gem/ruby/2.1.0 mysql2
./gem install -i/opt/gitlab/embedded/service/gem/ruby/2.1.0 mysql2 -v "0.3.16"
sed -i 's/BUNDLE_WITHOUT: development:test:mysql/BUNDLE_WITHOUT: development:test:postgres/g'  /opt/gitlab/embedded/service/gitlab-rails/.bundle/config
mv /etc/gitlab/gitlab.rb   /etc/gitlab/gitlab.rb.back
cp $CURRENT_DIR/gitlab.rb  /etc/gitlab/gitlab.rb

init_gitlab
else
    init_gitlab

fi


gitlab-ctl stop
gitlab-ctl start
IP=`ip addr | grep "inet" | grep "brd"| awk '{print $2}'| awk -F'/' '{print $1}'`
if [[ $? -eq 0 ]]; then
        echo -e "\033[32mgitlab安装成功..... 登录地址为:http://$IP; 管理员用户名和密码为:root/5iveL!fe \033[0m"
else
        echo -e "\033[5;41;32m 对不起,gitlab安装失败 ,请检查错误后再次安装 \033[1;m"
fi


}

#-----------------------------------node 22.安装mysql8.0.25--------------------------------------------------------------------
install_mysql8(){

yum install net-tools  vim-en* -y >/dev/null 2>&1

echo -e "检查是否安装mariadb"
rpm -qa|grep mariadb
if [ $? -eq 0 ];then
   rpm -e --nodeps mariadb-libs
   echo "----- 成功卸载mariadb-libs,脚本继续执行 -----"
else
   echo "----- mariadb-libs不存在,脚本继续执行 -----"
fi


tar xvf mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar > /dev/null 2>&1

#开始安装mysql
rpm -ivh  $CURRENT_DIR/mysql-community-common-8.0.25-1.el7.x86_64.rpm
rpm -ivh  $CURRENT_DIR/mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
rpm -ivh  $CURRENT_DIR/mysql-community-libs*
rpm -ivh  $CURRENT_DIR/mysql-community-client-8.0.25-1.el7.x86_64.rpm
rpm -ivh  $CURRENT_DIR/mysql-community-server-8.0.25-1.el7.x86_64.rpm


mv /etc/my.cnf  /etc/my.cnf.back
cat > /etc/my.cnf << EOF
       [client]
       default-character-set = utf8mb4
       [mysql]
       default-character-set = utf8mb4
       [mysqld]
       datadir=/var/lib/mysql
       socket=/var/lib/mysql/mysql.sock
       port = 3306
       server_id = 1
       log_slave-updates = true
       log-bin = mysql-bin
       log_bin_trust_function_creators = 1
       user = mysql
       character-set-client-handshake = FALSE
       character-set-server = utf8mb4
       collation-server = utf8mb4_general_ci
       init_connect='SET NAMES utf8mb4'
       lower_case_table_names = 1
       max_connections=200
       default-storage-engine=INNODB
       default_authentication_plugin=mysql_native_password
       default-time_zone='+8:00'
       lower_case_table_names=1
       log_timestamps = SYSTEM
       log_bin_trust_function_creators = on
       sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
       symbolic-links = 0
       log-error = /var/log/mysqld.log
       pid-file=/var/run/mysqld/mysqld.pid
       default_password_lifetime = 0
EOF

open_wj

#启动mysql服务,不然会获取不到mysql默认密码
echo -e "\033[32m 启动MySQL服务 \033[0m"
systemctl start mysqld
if [ "$?" -eq 0 ];then
      action "恭喜你,成功安装Mysql!!!" /bin/true    && systemctl enable mysqld
else
      action "对不起,安装Mysql失败! ! !" /bin/false
          exit 1
fi

echo -e "\033[32m 修改mysql密码 \033[0m"
     initpasswd=`cat /var/log/mysqld.log |grep root@localhost |awk '{print $NF}'`   # 初始密码
    echo "MySQL的初始密码是:$initpasswd"
    read -p "请输入您要设置MySQL的root用户密码,密码要符合复杂性,否则会失败:" passwd
    export MYSQL_PWD=$initpasswd  #解决mysql>5.6会提示密码安全问题
    mysql -uroot  -p${initpasswd} --connect-expired-password -e "alter user 'root'@'localhost' identified by \"$passwd\";use mysql;update user set host = '%' where user ='root';flush privileges;"
    if [ "$?" -eq 0 ];then
       action "MySQL数据库安装成功,密码为:$passwd" /bin/true
     else
      action "MySQL数据库安装失败密码初始化失败!" /bin/false
     exit 1
     fi

echo -e "\033[32m mysql使用及目录 \033[0m"
mysql -uroot -p$passwd  -e "show databases;"
if [[ $? -eq 0 ]]; then
        echo -e "\033[32m MySQL8.0安装完成,数据目录: /var/lib/mysql 请使用: mysql -uroot  -p$passwd 命令进行连接\033[0m"
else
        echo -e "\033[5;41;32m MySql8.0安装失败,请排查错误信息。重新安装请卸载后,重新执行脚本安装 \033[1;m"
fi

}

#-------------------------------node 30.卸载mysql5.7函数----------------------------------------------------------------
uninstall_mysql(){
mysql_rpm_list=`rpm -qa |grep mysql`
    if [ -n "$mysql_rpm_list" ]; then
        echo "mysql检查结果:系统已安装mysql,需先卸载,已安装的MySQL如下:"
        rpm -qa | grep mysql | tee
        read -p "是否卸载已安装的MySQL?(Y/N):" choose_UnMySQL
        if [ "$choose_UnMySQL" == 'Y' ] || [ "$choose_UnMySQL" == 'y' ];then
            echo "开始卸载MySQL..."
            systemctl stop mysqld
            systemctl disable mysqld
            rm -rf /var/lib/mysql
            rm -rf /usr/share/mysql
            rm -rf /var/log/mysqld.log
            rpm -qa |grep mysql | xargs rpm -e --nodeps  > /dev/null 2>&1
            sleep 2
            echo "MySQL卸载完成!"
        else
            exit 0
        fi
    else
        echo "mysql检查结果:系统未安装MySQL."
    fi

}

#------------------------------node 31.卸载rabbitmq3.9函数---------------------------------------------------------------
uninstall_rabbitmq(){
rabbit_rpm_list=`rpm -qa |grep rabbitmq`
    if [ -n "$rabbit_rpm_list" ]; then
        echo "rabbitmq检查结果:系统已安装rabbitmq,需先卸载,已安装的rabbitmq如下:"
        rpm -qa | grep rabbitmq | tee
        read -p "是否卸载已安装的rabbitmq?(Y/N):" choose_Unrabbitmq
        if [ "$choose_Unrabbitmq" == 'Y' ] || [ "$choose_Unrabbitmq" == 'y' ];then
            echo "开始卸载rabbitmq..."
            service rabbitmq-server stop
            systemctl disable rabbitmq-server
            rm -rf /var/lib/rabbitmq
            rm -rf /etc/rabbitmq
            rm -rf /var/log/rabbitmq
            rpm -qa |grep rabbitmq | xargs rpm -e --nodeps  > /dev/null 2>&1
            sleep 2
            echo -e "\033[32m rabbitmq卸载完成! \033[0m"
        else
            exit 0
        fi
    else
        echo -e "\033[32m rabbitmq检查结果:系统未安装rabbitmq. \033[0m"
    fi

}

#------------------------------node 32.卸载mariadb10.0.33函数---------------------------------------------------------------
uninstall_mariadb(){

 read -p "是否卸载已安装的mariadb?(Y/N):" choose_Unmariadb
        if [ "$choose_Unmariadb" == 'Y' ] || [ "$choose_Unmariadb" == 'y' ];then
            echo "开始卸载mariadb..."
            /etc/init.d/mysqld stop
            chkconfig --del mysqld
            rm -rf /var/lib/mysql
            rm -rf /usr/local/mariadb10.0.33
            rm -rf /etc/my.cnf
            mv /etc/my.cnf.bak /etc/my.cnf
            echo -e "\033[32m mariadb卸载完成! \033[0m"
        else
            exit 0
        fi

}

#-------------------------------分割线---------------------------------------------------------------------------

#----------------------------------------头部说明函数------------------------------------------------------------
clear
. /etc/init.d/functions
cat <<EOF
+--------------------------------------------------------------------------+
| 使用此脚本说明如下:                                                     |
|  系统适配:此脚本只在Centos7系统下测试过,其它系统请自行修改             |
|  安装方式:RPM安装,多用于离网环境(联网环境下安装更是没毛病)           |
|  安装说明:带(*)标注的是需要联网环境                                   |
|  卸载说明:卸载方式只适用于此脚本的安装方式                              |
+--------------------------------------------------------------------------+
EOF
show_menu


#-----------------------------------安装程序正文-------------------------------------------------------------------------------------

while [ opt != '' ]
do
    if [[ $opt = "" ]]; then 
            exit;
    else
        case $opt in
        1) clear;
        option_picked "Option 1 Picked";
         echo -e "\033[32m 开始关闭防火墙和系统参数优化操作,请稍后....... \033[0m"  
         disable_firewalld
         install_space 
         show_menu;
        ;;
 
        2) clear;
            option_picked "Option 2 Picked";
            echo -e "\033[32m 开始安装Nginx_1.22服务,请稍后.......... \033[0m"
            install_nginx
            install_space 
            show_menu;
            ;;
 
        3) clear;
            option_picked "Option 3 Picked";
            echo -e "\033[32m 开始安装Mysql_5.7服务,请稍后........ \033[0m"
            install_mysql
            install_space
            show_menu;
            ;;
 
        4) clear;
            option_picked "Option 4 Picked";
            echo -e "\033[32m 开始安装Jdk_1.8,请稍后...... \033[0m"
            install_jdk
            install_space
            show_menu;
            ;;

         5) clear;
            option_picked "Option 5 Picked";
            echo -e "\033[32m 开始安装Redis_5.0,请稍后...... \033[0m"
            install_redis
            install_space
            show_menu;
            ;;
          6) clear;
            option_picked "Option 6 Picked";
            echo -e "\033[32m 开始安装Minio,请稍后...... \033[0m"
            install_minio
            install_space
            show_menu;
            ;;
           7) clear;
            option_picked "Option 7 Picked";
            echo -e "\033[32m 开始安装Rabbitmq_3.9,请稍后...... \033[0m"
            install_rabbitmq
            install_space
            show_menu;
            ;;
          8) clear;
            option_picked "Option 8 Picked";
            echo -e "\033[32m 开始安装Opencv_4.5.5,请稍后...... \033[0m"           
            install_opencv_4.5.5
            install_space
            show_menu;
            ;;
           9) clear;
            option_picked "Option 9 Picked";
            echo -e "\033[32m 开始安装mariadb_10.0.33,请稍后...... \033[0m"           
            sleep 2
            install_mariadb
            install_space
            show_menu;
            ;;
           10) clear;
            option_picked "Option 10 Picked";
            echo -e "\033[32m 开始安装elasticsearch_7.10.2,请稍后...... \033[0m"           
            install_elasticsearch
            install_space
            show_menu;
            ;;
      
           20) clear;
            option_picked "Option 20 Picked";
            echo -e "\033[32m 开始安装Opencv_2.4.13,请稍后...... \033[0m"           
            install_opencv_2.4.13
            install_space
            show_menu;
            ;;
           21) clear;
            option_picked "Option 21 Picked";
            echo -e "\033[32m 开始安装Gitlab_7.10.5,因gitlab组件需要mariadb和redis支持,会先安装【5】和【9】,请稍后...... \033[0m"
            sleep 2
            install_gitlab
            install_space
            show_menu;
            ;;
            22) clear;
            option_picked "Option 22 Picked";
            echo -e "\033[32m 开始安装mysql_8.0,请稍后...... \033[0m"           
            install_mysql8
            install_space
            show_menu;
            ;;
           30) clear;
            option_picked "Option 30 Picked";
            echo -e "\033[32m 开始卸载Mysql_5.7,请稍后...... \033[0m"           
            uninstall_mysql
            install_space
            show_menu;
            ;;
           31) clear;
            option_picked "Option 31 Picked";
            echo -e "\033[32m 开始卸载Rabbitmq_3.9,请稍后...... \033[0m"           
            uninstall_rabbitmq
            install_space
            show_menu;
            ;;
           32) clear;
            option_picked "Option 32 Picked";
            echo -e "\033[32m 开始卸载Mariadb_10.0.33,请稍后...... \033[0m"           
            uninstall_mariadb
            install_space
            show_menu;
            ;;
           q)exit;
            ;;
           \n)exit;
            ;;
           *)clear;
              option_picked "您选择的序号不存在!请选择序号内的数字,不要瞎整!!!";
              show_menu;
              ;;
    esac
fi
done

最终显示界面如下:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_31292011/article/details/134964855

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法