#!/bin/bash
#【一级菜单】
menu_main(){
cat <<EOF
+-----------------------------------------------+
| |
| 1、配置WEB服务 |
| 2、配置MYSQL服务 |
| 3、配置Network服务 |
| 4、更改密码 |
| 5、配置YUM |
| 6、关闭防火墙、Selinux |
| 7、清空当前内存缓存 |
| 8、退出 |
| |
+-----------------------------------------------+
EOF
}
#【二级菜单】
menu_1(){
cat <<EOF
+-----------------------------------------------+
| |
| 0、配置WEB服务 |
| 1、启动WEB服务 |
| 2、停止WEB服务 |
| 3、重启WEB服务 |
| 4、返回上一级 |
| |
+-----------------------------------------------|
EOF
}
menu_2(){
cat <<EOF
+-----------------------------------------------+
| |
| 0、配置MYSQL服务 |
| 1、启动MYSQL服务 |
| 2、停止MYSQL服务 |
| 3、重启MYSQL服务 |
| 4、返回上一级 |
| |
+-----------------------------------------------|
EOF
}
#menu_main
#menu_1
#menu_2
tishi(){
systemctl status httpd >>/dev/null
if [ $? -eq 0 ];then
echo "httpd服务已启动"
else
echo "httpd服务没启动"
fi
systemctl status mysql >>/dev/null
if [ $? -eq 0 ];then
echo "mysql服务已启动"
else
echo "mysql服务没启动"
fi
}
tishi
echo "当前时间为:"`date`
echo "当前主机名为:"`hostname`
echo "当前用户为:$USER"
echo "当前IP地址为:`ip a |awk 'NR==9{print $2}'`"
echo "磁盘使用率为:`df -Th |awk 'NR==2{print $6}'`"
echo "CPU `uptime |awk -F "," '{print $3,$4,$5}'`"
#【关闭防火墙、selinux】
func_mysql(){
systemctl stop firewalld
sed -r -i s/SELINUX=enable/SELINUX=disabled/ /etc/selinux/config
setenforce 0 &>>/dev/null
systemctl disable firewalld
echo "防火墙都已经关了,搞起搞起。"
}
#【阿里云yum源】
ali_yum(){
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && yum clean all && yum makecache && yum -y reinstall epel-release && yum makecache
}
#【配置web服务】
web_server(){
yum -y install httpd >>/dev/null
if [ $? -eq 0 ]
then
clear
echo "httpd服务下载完成"
else
clear
echo "yum源有错误"
fi
}
#【清理MySQL安装环境】
mysql_server_clear(){
/etc/init.d/mysqld stop &>/dev/null
systemctl stop mysqld &>/dev/null
ps aux |grep " /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data" | awk '{print $2}' |kill -9 &>/dev/null
yum remove mysqld &>/dev/null
yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y &>/dev/null
userdel -r mysql &>/dev/null
rm -rf /etc/my* &>/dev/null
rm -rf /var/lib/mysql &>/dev/null
rm -rf /usr/local/mysql &>/dev/null
rpm -e `rpm -qa |grep mysql` &>/dev/null
rm -rf /var/log/mysql.log &>/dev/null
rm -rf /var/log/mysqld.log &>/dev/null
rm -rf /usr/local/mysql &>/dev/null
rm -rf /usr/local/mysql-5.7.27/CMakeCache.txt &>/dev/null
rm -rf /usr/bin/mysql
rm -rf /usr/bin/mysqld
}
#【MySQL编译安装包获取】
wget_mysql(){
while :
do
if [ -f "/root/mysql-boost-5.7.27.tar.gz" ]
then
break
else
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz
if [ $? -eq 0 ]
then
break
fi
fi
done
}
#【MySQL编译安装】
mysql_make_install(){
rm -rf /usr/local/mysql-5.7.27/CMakeCache.txt
cd /usr/local/mysql-5.7.27/
cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
if [ $? -eq 0 ]
then
cd /usr/local/mysql-5.7.27/ && make -j 4 && make install
else
echo "mysql配置失败"
exit
fi
}
#【配置network服务】
net_server(){
clear
read -p "请输入你要指定的网关[返回输入0]: " gw
if [ "$gw" == "0" ]
then
clear
continue
fi
read -p "请输入你要制定的IP : " my_ip
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 <<-EOF
TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=$my_ip
PREFIX=24
GATEWAY=$gw
DNS1=114.114.114.114
EOF
systemctl stop NetworkManager &>/dev/null
systemctl restart network &>/dev/null
if [ $? -eq 0 ]
then
clear
echo -e "IP配置完成!当前IP为:$my_ip"
fi
}
#【更改密码】
passwd_server(){
echo "1" | passwd --stdin $USER
}
clear_cache(){
sync
echo 3 > /proc/sys/vm/drop_caches
}
while :
do
menu_main
read -p "请输入你的选择:【1/2/3/4/5/6/7/8】" num_main
clear
if [ $num_main -eq 1 ];then
while :
do
menu_1
read -p "请输入你的选择:【0/1/2/3/4/】" num_1
case $num_1 in
0)
web_server
;;
1)
systemctl start httpd
if [ $? -eq 0 ];then
clear
echo "启动成功"
else
clear
echo "启动失败"
fi
;;
2)
systemctl stop httpd
if [ $? -eq 0 ];then
clear
echo "服务关闭成功"
fi
;;
3)
systemctl restart httpd
if [ $? -eq 0 ];then
clear
echo "服务重启成功"
else
clear
echo "服务重启失败"
fi
;;
4)
clear
break
;;
*)
clear
echo "输入错误,请输入正确的选项"
;;
esac
done
elif [ $num_main -eq 2 ];then
while :
do
menu_2
read -p "请输入你的选择:【0/1/2/3/4】" num_2
case $num_2 in
0)
#【清理编译环境】
mysql_server_clear
#【下载MySQL安装包】
wget_mysql
yum -y install ncurses nurses-devel openssl-devel bison gcc gcc-c++ make cmake || exit
mkdir -p /usr/local/mysql/{data,log}
if [ ! -d /usr/local/mysql-5.7.27 ];then
tar xzf /root/mysql-boost-5.7.27.tar.gz -C /usr/local/
fi
cd /usr/local/mysql-5.7.27/
userdel -r mysql
useradd mysql -M -s /sbin/nologin
#【编译安装】
mysql_make_install
#【初始化】
chown -R mysql.mysql /usr/local/mysql
/usr/local/mysql/bin/mysql --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &>/root/mysql_init.txt
mysql_init_pw=`grep "A temporary password is generated" /root/mysql_init.txt | awk '{print $NF}'`
#【修改初始化密码为1】
cat>/etc/my.cnf<<-EOF
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
character_set_server = utf8
EOF
#【添加环境变量,简化启动与使用流程】
echo "PATH=$PATH:$HOME/bin:/usr/local/mysql/bin" >>/etc/profile && source /etc/profile
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
sleep 2
while :
do
/etc/init.d/mysqld start
if [ $? -eq 0 ]
then
echo "【启动MySQL成功,即将修改初始密码为:你想要的密码 】"
break
else
pkill -9 mysqld
sleep 2
fi
done
/usr/local/mysql/bin/mysqladmin -u root -p"$mysql_init_pw" password '你想要的密码'
chkconfig mysqld on
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
sleep 3
clear
echo "启动:/etc/init.d/mysqld start"
echo "关闭:/etc/init.d/mysqld stop"
echo "登陆:mysql -u账号 -p密码"
;;
1)
/etc/init.d/mysqld start
;;
2)
/etc/init.d/mysqld stop
;;
3)
/etc/init.d/mysqld restart
;;
4)
clear
break
;;
*)
clear
echo "输入错误,请输入正确的选项:"
;;
esac
done
elif [ $num_main -eq 3 ];then
net_server
elif [ $num_main -eq 4 ];then
passwd_server
elif [ $num_main -eq 5 ];then
ali_yum
elif [ $num_main -eq 6 ];then
func_mysql
elif [ $num_main -eq 7 ];then
clear_cache
elif [ $num_main -eq 8 ];then
exit
else
echo "输入错误,请重新输入选项"
fi
done