首先要准备对应的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: my-application@cluster.name: 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 <

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

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

最终显示界面如下:

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: