# 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
fsl_auto_install
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.