fsl_auto_install

# DATE:2020-03-16
#
# 自動化部署(rhel 7) 
# jdk    1.8.0_141
# redis  3.2.1
# mysql  5.7.27
# tomcat 8.5.51
#################################
# 目錄規劃:
# mysql安裝在/fsl_data
# redis安裝在/usr/local/redis
# tomcat安裝在/home下
# 腳本及安裝包統一放在/opt目錄下
#################################

#指定tomcat\redis\mysql 路徑、端口和密碼
TOMCAT_PATH=/home
TOMCAT_PORT=(7001 8001 9001)
MYSQL_HOME=/fsl_data
MYSQL_PWD=fswl@1234
MYSQL_PORT=3306
REDIS_PATH=/usr/local
REDIS_PORT=16379
REDIS_PWD=fswl@1234
RELAYHOST=[xx.xx.xx.xx]:20025
MAIL_USER=[email protected]
MAIL_PWD=lcp


#調用函數庫
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
source /etc/profile

#Require root to run this script.
[ $(id -u) -gt 0 ] && echo "請用root用戶執行此腳本!" && exit 1

#"stty erase ^H"  設置backspace爲刪除鍵
\cp /root/.bash_profile  /root/.bash_profile_$(date +%F)
erase=`grep -wx "stty erase ^H" /root/.bash_profile |wc -l`
if [ $erase -lt 1 ];then
    echo "stty erase ^H" >>/root/.bash_profile
    source /root/.bash_profile
fi


#基礎變量
centosVersion=$(cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/')
DATE=`date +"%y-%m-%d %H:%M:%S"`
IPADDR=$(ip -f inet addr | grep -v 127.0.0.1 |  grep inet |grep -vE  'inet6|127.0.0.1|virbr0'| awk '{print $NF,$2}' | tr '\n' ',' | sed 's/,$//'|awk '{print $NF}')
MAC=$(ip link | grep -v "LOOPBACK\|loopback" | awk '{print $2}' | sed 'N;s/\n//' | tr '\n' ',' | sed 's/,$//'|awk -F ',' '{print $1}')
GATEWAY=$(ip route | grep default | awk '{print $3}')
DNS=$(grep nameserver /etc/resolv.conf| grep -v "#" | awk '{print $2}' | tr '\n' ',' | sed 's/,$//')
HOSTNAME=`hostname -s`
USER=`whoami`
#disk_check  (grep -w用於字符串精確匹配)
DISK_SDA=`df -h |grep -w "/" |awk '{print $5}'`
#cpu_average_check
cpu_uptime=`cat /proc/loadavg|awk '{print $1,$2,$3}'`


#設置中文字符集
initI18n(){
  echo ""
  echo -e "\033[33m***************************************************更改中文字符集****************************************************\033[0m"
  \cp /etc/locale.conf  /etc/locale.conf.$(date +%F)
cat >>/etc/locale.conf<<EOF
LANG="zh_CN.UTF-8"
#LANG="en_US.UTF-8"
EOF
  source /etc/locale.conf
  grep LANG /etc/locale.conf
  echo -e "\033[33m***********************************************更改字符集zh_CN.UTF-8完成*********************************************\033[0m"
  echo ""
  sleep 5
}

#關閉 Selinux 和防火牆
initFirewall(){
	echo ""
  echo -e "\033[33m*************************************************禁用selinux和防火牆*************************************************\033[0m"
  \cp /etc/selinux/config /etc/selinux/config.$(date +%F)
  systemctl stop firewalld
  sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  setenforce 0
  systemctl status firewalld
  echo '#grep SELINUX=disabled /etc/selinux/config ' 
  grep SELINUX=disabled /etc/selinux/config 
  echo '#getenforce '
  getenforce 
  echo -e "\033[33m************************************************完成禁用selinux和防火牆**********************************************\033[0m"
  echo ""
  sleep 5
}


#時間同步
##$?是指上一次命令執行的成功或者失敗的狀態,成功爲0,失敗爲1
syncSysTime(){
  echo ""
  echo -e "\033[33m******************************************************配置時間同步***************************************************\033[0m"
  \cp /var/spool/cron/root /var/spool/cron/root.$(date +%F) 2>/dev/null
  NTPDATE=`grep ntpdate /var/spool/cron/root 2>/dev/null |wc -l`
  if [ $NTPDATE -eq 0 ];then
  	ping -c 4 0.asia.pool.ntp.org >/dev/null 2>&1
    if [ $? -eq 0 ];then
       echo "#times sync by hwb at $(date +%F)" >>/var/spool/cron/root
       echo "*/5 * * * * /usr/sbin/ntpdate 0.asia.pool.ntp.org;/sbin/hwclock -w &>/dev/null" >> /var/spool/cron/root
       hwclock --systohc  #同步到硬件
    else
       ping -c 4 172.26.150.145 >/dev/null 2>&1
       if [ $? -eq 0 ];then
          echo "#times sync by hwb at $(date +%F)" >>/var/spool/cron/root
          echo "* 8 * * *  /usr/sbin/ntpdate 172.26.150.145;/sbin/hwclock -w" >> /var/spool/cron/root
          hwclock --systohc  #同步到硬件
       else
          echo "==============網絡不通,無法配置時間同步==========="
          #exit $?和exit $1區別
          exit $?
       fi
    fi 
    
  fi 
  echo '#crontab -l'  
  crontab -l
  echo -e "\033[33m*************************************************完成時間同步配置**************************************************\033[0m"
  echo ""
  sleep 5
}


function install_yum(){
  echo ""
  echo -e "\033[33m***************************************************開始配置yum源****************************************************\033[0m"
  ping -c 4  mirrors.aliyun.com  >/dev/null
  if [ $? -eq 0 ];then
     configAliyunYum
  else
     if [ -f /root/CentOS-7-x86_64-Everything-1611.iso ];then
       	configLocalYum
     else
        action "\033[33m**********************網絡不通且本地沒有yum源,請手動配置yum***********************\033[0m"  /bin/true
        exit $?
     fi
  fi 
}


#Config Yum lianyou.repo and save Yum file
configLocalYum(){
  echo ""
  echo -e "\033[33m***************************************************配置聯友本地yum*************************************************\033[0m"
  for i in /etc/yum.repos.d/*.repo;do cp $i ${i%.repo}.bak;done
  rm -rf /etc/yum.repos.d/*.repo
  mkdir -p /mnt/cdrom && mount -o loop -t iso9660 /root/CentOS-7-x86_64-Everything-1611.iso /mnt/cdrom/
  echo "================配置YUM源文件===================="
cat << EOF > /etc/yum.repos.d/localyum.repo 
[InstallMedia]
name=Centos 7.3
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=0 
EOF
  yum clean all && yum makecache  >/dev/null 2>&1
  yum repolist
  echo -e "\033[33m***********************************************完成聯友本地yum配置**************************************************\033[0m"
  echo ""
  sleep 5
}


#Config Yum CentOS-Bases.repo and save Yum file
configAliyunYum(){
  echo ""
  echo -e "\033[33m***************************************************更新爲阿里源*****************************************************\033[0m"
  for i in /etc/yum.repos.d/*.repo;do cp $i ${i%.repo}_bak;done
  rm -rf /etc/yum.repos.d/*.repo
  wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo >/dev/null 2>&1
  echo "================配置YUM源文件===================="
  sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf     
  grep keepcache /etc/yum.conf
  yum clean all &  >/dev/null && yum makecache  >/dev/null 2>&1
  yum repolist
  echo -e "\033[33m***************************************************完成阿里源配置***************************************************\033[0m"
  echo ""
  sleep 5
}

#add user and give sudoers
addUser(){
  echo ""
  echo -e "\033[33m*****************************************************新建用戶*******************************************************\033[0m"
#add user
while true
do  
    read -p "請輸入新用戶名:" name
    NAME=`awk -F':' '{print $1}' /etc/passwd|grep -wx $name 2>/dev/null|wc -l`
    if [ ${#name} -eq 0 ];then
       echo "用戶名不能爲空,請重新輸入。"
       continue
    elif [ $NAME -eq 1 ];then
       echo "用戶名已存在,請重新輸入。"
       continue
    fi
useradd $name
break
done
#create password
while true
do
    read -p "爲 $name 創建一個密碼:" pass1
    if [ ${#pass1} -eq 0 ];then
       echo "密碼不能爲空,請重新輸入。"
       continue
    fi
    read -p "請再次輸入密碼:" pass2
    if [ "$pass1" != "$pass2" ];then
       echo "兩次密碼輸入不相同,請重新輸入。"
       continue
    fi
echo "$pass2" |passwd --stdin $name
break
done
sleep 1

#add visudo
echo "#####add visudo#####"
\cp /etc/sudoers /etc/sudoers.$(date +%F)
SUDO=`grep -w "$name" /etc/sudoers |wc -l`
if [ $SUDO -eq 0 ];then
    echo "$name  ALL=(ALL)       NOPASSWD: ALL" >>/etc/sudoers
    echo '#tail -1 /etc/sudoers'
    grep -w "$name" /etc/sudoers
    sleep 1
fi
  #action "創建用戶$name並將其加入visudo完成"  /bin/true
  echo -e "\033[33m*********************************************創建用戶$name並將其加入visudo完成******************************************\033[0m"
  echo ""
  sleep 5
}



# auto install jdk 1.8
function install_jdk() 
{
  echo ""
  echo -e "\033[33m******************************************************自動部署jdk*******************************************************\033[0m"
  javac -version &>/dev/null 
	if [ $? != 0 ] ; then
		if [ -f /opt/jdk-8u141-linux-x64.tar.gz ];then
  	  echo "*****存在這個jdk壓縮包,無需下載*****"
    else
      ping -c 4 vs125.hand-china.com >/dev/null 2>&1
      if [ $? -eq 0 ];then
        wget -c http://vs125.hand-china.com/111/jdk/jdk8_141.tgz  -O /opt/jdk-8u141-linux-x64.tar.gz
      else
        echo "please download jdk package manual !"
		    exit $?
      fi 
    fi
    tar -zxvf /opt/jdk-8u141-linux-x64.tar.gz -C /usr/local/ &>/dev/null
    mv /usr/local/jdk1.8.0_141 /usr/local/jdk 
    # add user env var
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib 
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile
  fi
  echo -e "\033[33m***************************************************完成jdk環境部署******************************************************\033[0m"
cat > /tmp/jdk.log  << EOF
jdk安裝目錄:/usr/local/jdk 
jdk版本:javac 1.8.0_141
EOF
  cat /tmp/jdk.log
  echo -e "\e[1;31m 以上信息10秒後消失,保存在/tmp/jdk.log文件下 \e[0m"
  echo -e "\033[33m************************************************************************************************************************\033[0m"
  echo ""
  sleep 10
}

# auto install tomcat
function install_tomcat() 
{
	echo ""
  echo -e "\033[33m*****************************************************自動部署tomcat*****************************************************\033[0m"
	if [ -f /opt/apache-tomcat-8.5.51.tar.gz ];then
  	  echo "*****存在這個tomcat壓縮包,無需下載*****"
    else
      ping -c 4 downloads.apache.org >/dev/null 2>&1
      if [ $? -eq 0 ];then
        wget -c https://downloads.apache.org/tomcat/tomcat-8/v8.5.51/bin/apache-tomcat-8.5.51.tar.gz  -O /opt/apache-tomcat-8.5.51.tar.gz
      else
        echo "please download tomcat package manual !"
		    exit $?
      fi 
  fi
  tar -zxvf /opt/apache-tomcat-8.5.51.tar.gz -C ${TOMCAT_PATH}  &>/dev/null && mv ${TOMCAT_PATH}/apache-tomcat-8.5.51 ${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]} &>/dev/null 
  # modify tomcat/conf/context.xml
  sed -i -r -e  '/<\/Context>/i \  <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" name="jdbc/lcp_db" password="root" type="javax.sql.DataSource" url="jdbc:mysql://xx.xx.xx:3306/lcpdb" username="root"/>' ${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]}/conf/context.xml
  
  # modify http_port
  sed -i -r -e 's#.*shutdown="SHUTDOWN">.*#<Server port="'${TOMCAT_PORT[0]}'" shutdown="SHUTDOWN">#' ${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]}/conf/server.xml
  sed -i -r -e 's#.*protocol="HTTP/1.1".*#<Connector port="'${TOMCAT_PORT[1]}'" protocol="HTTP/1.1"#' ${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]}/conf/server.xml
  sed -i -r -e 's#.*protocol="org.apache.coyote.http11.Http11NioProtocol".*#<Connector port="'${TOMCAT_PORT[1]}'" protocol="org.apache.coyote.http11.Http11NioProtocol"#' ${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]}/conf/server.xml
  sed -i -r -e 's#.*protocol="AJP/1.3" redirectPort="8443" />.*#<Connector port="'${TOMCAT_PORT[2]}'" protocol="AJP/1.3" redirectPort="8443" />#' ${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]}/conf/server.xml
  # startup tomcat
  ${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]}/bin/startup.sh &>/dev/null 
  
  echo -e "\033[33m***************************************************完成tomcat環境部署***************************************************\033[0m"
cat > /tmp/tomcat.log  << EOF
tomcat安裝目錄:${TOMCAT_PATH}/tomcat${TOMCAT_PORT[1]}
tomcat端口:${TOMCAT_PORT[1]}
tomcat版本:tomcat-8.5.51
EOF
  cat /tmp/tomcat.log
  echo -e "\e[1;31m 以上信息10秒後消失,保存在/tmp/tomcat.log文件下 \e[0m"
  echo -e "\033[33m************************************************************************************************************************\033[0m"
  echo ""
  sleep 10
}


# auto install redis-3.2
function install_redis() 
{
	echo ""
  echo -e "\033[33m****************************************************自動部署redis*******************************************************\033[0m"
  #創建用戶
  groupadd -r redis && useradd -r -g redis redis -d /home/redis -m
  
  #下載包
	if [ -f /opt/redis-3.2.1.tar.gz ];then
		echo "*****存在redis壓縮包,無需下載*****"
    else
      ping -c 4 download.redis.io >/dev/null 2>&1
      if [ $? -eq 0 ];then
        wget -c http://download.redis.io/releases/redis-3.2.1.tar.gz  -O /opt/redis-3.2.1.tar.gz
      else
        echo "please download redis package manual !"
		    exit $?
      fi 
  fi
  
  #配yum安裝gcc
  rpm -qa|grep gcc-c++
  if [ $? -eq 1 ];then
    install_yum
    yum install -y gcc*  &>/dev/null
    sleep 3
    echo "安裝gcc成功!"
  fi 
  
  #編譯安裝
  tar -xvf /opt/redis-3.2.1.tar.gz -C  ${REDIS_PATH} &>/dev/null
  cd  ${REDIS_PATH}/redis-3.2.1 &>/dev/null && make &>/dev/null && make install  &>/dev/null
  sleep 3
  # check install result
  ${REDIS_PATH}/redis-3.2.1/src/redis-server -v 
  if [ $? -eq 0 ] ;then
    echo "*****redis install successfully!*****"
  else
	  echo "*****redis install error!*****"
	  exit $?
  fi
  
  #安全配置
  sed -i "s/port 6379/port ${REDIS_PORT}/g"   ${REDIS_PATH}/redis-3.2.1/redis.conf   #sed替換變量需要把單引號改成雙引號
  sed -i 's/daemonize no/daemonize yes/g'   ${REDIS_PATH}/redis-3.2.1/redis.conf 
  sed -i 's/protected-mode yes/protected-mode no/g'   ${REDIS_PATH}/redis-3.2.1/redis.conf 
  sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g'   ${REDIS_PATH}/redis-3.2.1/redis.conf   
cat >>  ${REDIS_PATH}/redis-3.2.1/redis.conf << EOF
requirepass ${REDIS_PWD}
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
EOF
  
  #啓動redis
   ${REDIS_PATH}/redis-3.2.1/src/redis-server  ${REDIS_PATH}/redis-3.2.1/redis.conf
  ps -ef |grep redis|grep -v grep
  if [ $? -eq 0 ] ;then
     echo "*****redis start success!*****"
  else
	  exit $?
	  echo "*****redis start error!*****"
  fi
  
  echo -e "\033[33m***************************************************完成redis環境部署***************************************************\033[0m"
cat > /tmp/redis.log  << EOF
redis安裝目錄:/usr/local/redis-3.2.1
redis版本:redis-3.2.1
redis端口:${REDIS_PORT}
redis密碼:${REDIS_PWD}
EOF
  cat /tmp/redis.log
  echo -e "\e[1;31m 以上信息10秒後消失,保存在/tmp/redis.log文件下 \e[0m"
  echo -e "\033[33m************************************************************************************************************************\033[0m"
  echo ""
  sleep 10
}

# auto install el7 mysql 5.7
function install_mysql_el7() 
{
	echo ""
  echo -e "\033[33m******************************************************自動部署mysql*****************************************************\033[0m" 
  #建用戶及目錄
  groupadd -r mysql && useradd -r -g mysql mysql -d /home/mysql -m
  mkdir -p $MYSQL_HOME/datafile
  mkdir -p $MYSQL_HOME/log
  chown -R mysql:mysql $MYSQL_HOME
   
  #下載包
	if [ -f /opt/mysql-community-server-5.7.27-1.el7.x86_64.rpm ] && [ -f /opt/mysql-community-client-5.7.27-1.el7.x86_64.rpm ] && [ -f /opt/mysql-community-libs-5.7.27-1.el7.x86_64.rpm ] && [ -f /opt/mysql-community-common-5.7.27-1.el7.x86_64.rpm ];then
		echo "*****存在mysql安裝包,無需下載*****"
    else
      ping -c 4 cdn.mysql.com >/dev/null 2>&1
      if [ $? -eq 0 ];then
      	wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.27-1.el7.x86_64.rpm  -P /opt
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-client-5.7.27-1.el7.x86_64.rpm  -P /opt
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-libs-5.7.27-1.el7.x86_64.rpm    -P /opt
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-common-5.7.27-1.el7.x86_64.rpm  -P /opt
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm -P /opt
      else
        echo "please download mysql package manual !"
		    exit $?
      fi 
  fi
  
  #安裝mysql
  ps -ef|grep mysql |grep -v grep
  if [ $? -eq 0 ] ;then
     echo "*****已存在mysql進程*****"
     exit $?
  else
	   # 卸載 mysql
     rpm -qa|grep mysql|xargs -i rpm -e --nodeps {} 
     # uninstall mariadb-libs
     rpm -qa|grep "mariadb-libs"|xargs -i rpm -e --nodeps {} 
     # 安裝mysql
	   rpm -ivh /opt/mysql-community-common-5.7.27-1.el7.x86_64.rpm
	   rpm -ivh /opt/mysql-community-libs-5.7.27-1.el7.x86_64.rpm
	   rpm -ivh /opt/mysql-community-client-5.7.27-1.el7.x86_64.rpm
     rpm -ivh /opt/mysql-community-server-5.7.27-1.el7.x86_64.rpm
     rpm -ivh /opt/mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
  fi
  
  #配置my.cnf
  cp /etc/my.cnf /etc/my.cnf_${DATE}bak &>/dev/null 
cat << EOF > /etc/my.cnf 
[mysqld]
port=${MYSQL_PORT}
datadir=${MYSQL_HOME}/datafile
log-error=${MYSQL_HOME}/log/mysqld.log
symbolic-links=0
socket=/var/lib/mysql/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid
lower_case_table_names=1
character_set_server=utf8
max_connections=2000
server-id = 1
log-bin = ${MYSQL_HOME}/log/mysql-bin.log
log-bin-index =${MYSQL_HOME}/log/binlog.index
log_bin_trust_function_creators=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
EOF

  #啓動數據庫
  systemctl start mysqld.service
  MYSQL_TEMP_PWD=$(grep "temporary password" ${MYSQL_HOME}/log/mysqld.log|cut -d "@" -f 2|awk '{print $2}')
  mysql -hlocalhost  -P${MYSQL_PORT}  -uroot -p${MYSQL_TEMP_PWD} -e "set global validate_password_policy=0" --connect-expired-password
  mysql -hlocalhost  -P${MYSQL_PORT}  -uroot -p${MYSQL_TEMP_PWD} -e "SET PASSWORD = PASSWORD('${MYSQL_PWD}')"  --connect-expired-password
  mysql -hlocalhost  -P${MYSQL_PORT}  -uroot -p${MYSQL_PWD} -e "grant all privileges on *.* to root@'%' identified by '${MYSQL_PWD}'" --connect-expired-password
  
  echo -e "\033[33m**************************************************完成mysql數據庫部署***************************************************\033[0m"
cat > /tmp/mysql.log  << EOF
mysql安裝目錄:${MYSQL_HOME}
mysql版本:Mysql-5.7.27
mysql端口:${MYSQL_PORT}
mysql密碼:${MYSQL_PWD}
EOF
  cat /tmp/mysql.log
  echo -e "\e[1;31m 以上信息10秒後消失,保存在/tmp/mysql.log文件下 \e[0m"
  echo -e "\033[33m************************************************************************************************************************\033[0m"
  echo ""
  sleep 10
}

# install mysql
function install_mysql()
{
if [ ${centosVersion} == 6 ];then
	 install_mysql_el6
elif [ ${centosVersion} == 7 ];then
   install_mysql_el7
else
   echo "your select OS version is error,please retry !"
	 exit 1
fi
}


# auto install el6 mysql 5.7(略,留待有緣人)
function install_mysql_el6() 
{
	echo ""
  echo -e "\033[33m******************************************************自動部署mysql*******************************************************\033[0m" 
  #建用戶及目錄
  mkdir -p /fsl_data/datafile
  mkdir -p /fsl_data/log
  chown -R mysql:mysql /fsl_data
   
  #下載包
	if [ -f /opt/mysql*.rpm ];then
		echo "*****存在mysql安裝包,無需下載*****"
    else
      ping -c 4 cdn.mysql.com >/dev/null 2>&1
      if [ $? -eq 0 ];then
      	wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.27-1.el7.x86_64.rpm  -P /opt
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-client-5.7.27-1.el7.x86_64.rpm  -P /opt
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-libs-5.7.27-1.el7.x86_64.rpm    -P /opt
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-common-5.7.27-1.el7.x86_64.rpm  -P /opt
      else
        echo "please download mysql package manual !"
		    exit $?
      fi 
  fi
  
  #安裝mysql
  ps -ef|grep mysql |grep -v grep
  if [ $? -eq 0 ] ;then
     echo "*****已存在mysql進程*****"
     exit $?
  else
	   rpm -qa|grep mysql|xargs -i rpm -e --nodeps {} 
	   rpm -ivh /opt/mysql-community-common-5.7.27-1.el7.x86_64.rpm
	   rpm -ivh /opt/mysql-community-libs-5.7.27-1.el7.x86_64.rpm
	   rpm -ivh /opt/mysql-community-client-5.7.27-1.el7.x86_64.rpm
     rpm -ivh /opt/mysql-community-server-5.7.27-1.el7.x86_64.rpm
  fi
  
  chkconfig mysql on
service mysql start
mysql -hlocalhost  -P3306  -uroot -p${MYSQL_ROOT_PWD} -e "create database ${MYSQL_DB_NAME}"
# 刪除腳本一行
sed -i "/CREATE\ DATABASE/d" ${APP_PATH}weixin_centos6/multi-srm-mobile-dev.sql
mysql -hlocalhost  -P3306  -uroot -p${MYSQL_ROOT_PWD} ${MYSQL_DB_NAME} < ${APP_PATH}weixin_centos6/multi-srm-mobile-dev.sql
sed -i "s/skip/#skip/" /etc/my.cnf
service mysql restart
mysqladmin -u root -p"$(cat /root/.mysql_secret | head -n 2|tail -n 1)"  password ${MYSQL_ROOT_PWD} -b
#mysql -uroot -p${MYSQL_ROOT_PWD} -e "SET PASSWORD = PASSWORD(\'${MYSQL_ROOT_PWD}\');" -b
#mysql -uroot -p${MYSQL_ROOT_PWD} -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD(${MYSQL_ROOT_PWD});" -b
}


# auto install postfix mail 
function install_mail() 
{
	echo ""
  echo -e "\033[33m****************************************************自動部署mail********************************************************\033[0m"
  
 
  #軟件包:2:postfix-2.10.1-7.el7.x86_64 (base)需要:libmysqlclient.so.18(libmysqlclient_18)(64bit)
	if [ -f /opt/mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm ];then
		echo "*****存在libmysqlclient安裝包,無需下載*****"
    else
      ping -c 4 cdn.mysql.com >/dev/null 2>&1
      if [ $? -eq 0 ];then
        wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm -P /opt
      else
        echo "please download libmysqlclient package manual !"
		    exit $?
      fi 
  fi
  
  #配yum安裝postfix
  rpm -qa|grep postfix
  #rpm -qa|grep postfix|xargs -i rpm -e --nodeps {} 
  if [ $? -eq 1 ];then
    install_yum
    yum install -y postfix*  &>/dev/null 
    action "*****安裝postfix完成*****" /bin/true  
  fi 
  
  #配置
  #端口文件:/etc/postfix/master.cf ==》 smtp inet n - n - - smtpd
  sed -i 's/inet_interfaces = localhost/inet_interfaces = all/g'   /etc/postfix/main.cf  
cat >>  /etc/postfix/main.cf << EOF
mynetworks = 0.0.0.0/0
relayhost = ${RELAYHOST}
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
EOF
cat >>  /etc/postfix/sasl_passwd << EOF
${RELAYHOST} ${MAIL_USER}:${MAIL_PWD}
EOF
  #更新配置
  postmap /etc/postfix/sasl_passwd
  
  #啓動postfix
  service postfix restart
  echo -e "\033[33m***************************************************完成郵件環境部署***************************************************\033[0m"
cat > /tmp/mail.log  << EOF
郵件版本:`postconf mail_version`
郵箱地址/端口:${RELAYHOST}
發件人郵箱:${MAIL_USER}
發件人密碼:${MAIL_PWD}
EOF
  cat /tmp/mail.log
  echo -e "\e[1;31m 以上信息10秒後消失,保存在/tmp/mail.log文件下 \e[0m"
  echo -e "\033[33m************************************************************************************************************************\033[0m"
  echo ""
  sleep 10
}

#menu2
menu2(){
while true;
do
 clear
cat <<EOF
----------------------------------------
|****Please Enter Your Choice:[0-11]****|
----------------------------------------
(1)  新建一個用戶並將其加入visudo
(2)  配置YUM源鏡像
(3)  配置中文字符集
(4)  禁用SELINUX及關閉防火牆
(5)  設置時間同步
(6)  自動部署jdk
(7)  自動部署tomcat
(8)  自動部署redis
(9)  自動部署mysql
(10) 自動部署郵件
(0)  返回上一級菜單

EOF
 read -p "Please enter your Choice[0-11]: " input2
 case "$input2" in
   0)
   clear
   break 
   ;;
   1)
   addUser
   ;;
   2)
   install_yum
   ;;
   3)
   initI18n
   ;;
   4)
   initFirewall
   ;;
   5)
   syncSysTime
   ;;
   6)
   install_jdk
   ;;
   7)
   install_tomcat
   ;;
   8)
   install_redis
   ;;
   9)
   install_mysql
   ;;
   10)
   install_mail
   ;;
   *) echo "----------------------------------"
      echo "|          Warning!!!            |"
      echo "|   Please Enter Right Choice!   |"
      echo "----------------------------------"
      for i in `seq -w 3 -1 1`
        do 
          echo -ne "\b\b$i";
          sleep 1;
        done
      clear
 esac
done
}
#initTools
#menu
while true;
do
 clear
 echo "========================================"
 echo '          Linux Optimization            '   
 echo "========================================"
cat << EOF
|-----------System Infomation-----------
| DATE       :$DATE
| HOSTNAME   :$HOSTNAME
| USER       :$USER
| IP         :$IPADDR
| GATEWAY    :$GATEWAY
| DNS        :$DNS
| DISK_USED  :$DISK_SDA
| CPU_AVERAGE:$cpu_uptime
----------------------------------------
|****Please Enter Your Choice:[1-3]****|
----------------------------------------
(1) 一鍵部署yum\jdk\tomcat\redis\mysql\mail
(2) 自定義部署(推薦)
(3) 退出
EOF
 #choice
 read -p "Please enter your choice[0-3]: " input1
 case "$input1" in
 1) 
   install_Yum
   initI18n
   initFirewall
   syncSysTime
   install_jdk
   install_tomcat
   install_redis
   install_mysql
   install_mail
   ;;
 2)
   menu2
   ;;
 3) 
   clear 
   break
   ;;
 *)   
   echo "----------------------------------"
   echo "|          Warning!!!            |"
   echo "|   Please Enter Right Choice!   |"
   echo "----------------------------------"
   for i in `seq -w 3 -1 1`
       do
         echo -ne "\b\b$i";
         sleep 1;
       done
   clear
 esac  
done
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章