一键部署zabbbix3.4脚本

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/s295580857/article/details/79460841

测试环境:
系统 CentOS 7.4最小化安装

脚本经本人亲测可用,脚本的设定的密码及用户可自行进行修改。

#!/bin/bash
#Author:Benson
#Blog:http://www.itzui.top
#Time:2018-03-06 10:27:12
#Name:one_key_install_zabbix_3.4.sh
#Version:V1.0
#Description:此脚本用于一键部署zabbix3.4版的服务端,用部署包的方式安装

read -p "请输入数据库所使用的端口:" d
read -p "请输入数据库的用户名:" u
read -p "请输入用户对应的密码:" p
DBNAME="zabbix"

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm  #安装源码库
yum install -y zabbix-server-mysql zabbix-web-mysql  #安装服务端与所需的mysql组件

##########以下步骤进行编译部署mysql5.6请确保mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz源码包与脚本处于同一目录##########
echo "开始编译安装MySQL"
mysql="grant all privileges on *.* to '$u'@'%' identified by '$p';"
flush="flush privileges;"
var=$(ip addr|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}')

yum install perl perl-Data-Dumper.x86_64 libaio.x86_64 -y
if [ $? -eq 0 ]
then
    echo $(date +'%Y-%m-%d %H:%M:%S') "$q 安装完成" >> ~/mysql.log && echo "安装完成"
else
    echo $(date +'%Y-%m-%d %H:%M:%S') "$q 安装失败" >> ~/mysql.log && echo "\033[31m perl perl-Data-Dumper.x86_64 libaio.x86_64安装失败,程序退出\033[0m"
    exit 1
fi

tar zxvf mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz -C /usr/local/src/
if [ $? -eq 0 ]
then
    echo "解压完成" >> ~/mysql.log && echo "mysql解压完成"
else
    echo "解压失败" >> ~/mysql.log && echo "\033[31m mysql解压失败\033[0m"
    exit 1
fi

ln -s /usr/local/src/mysql-5.6.25-linux-glibc2.5-x86_64/ /usr/local/mysql

groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/src/
chown -R mysql:mysql mysql-5.6.25-linux-glibc2.5-x86_64/

mkdir -p /founder/mysql
chown -R mysql:mysql /founder/mysql
chmod -R 700 /founder/mysql

#初始化mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/founder/mysql
if [ $? -eq 0 ]
then
    echo "MySQL初始化完成" >> ~/mysql.log && echo "MySQL初始化完成"
else
    echo "MySQL初始化失败" >> ~/mysql.log && echo "MySQL初始化失败,脚本退出执行"
    exit 1
fi

cp /usr/local/mysql/my.cnf /usr/local/mysql/my.cnf.bak

sed -i '/\[mysqld\]/a\character-set-server=utf8\nlower_case_table_names=1\nbasedir=/usr/local/mysql\ndatadir=/founder/mysql\npid-file=/founder/mysql/mysqld.pid\nport=3306\nsocket=/usr/local/mysql/mysql.sock\nlog_bin\nexpire-logs-days=15' /usr/local/mysql/my.cnf
sed -i '/sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES/a\\[client\]\ndefault-character-set=utf8\nsocket=/usr/local/mysql/mysql.sock\n\n\[mysql\]\ndefault-character-set=utf8\n\n\[mysqld_safe\]\nlog-error=/var/log/mysqld.log' /usr/local/mysql/my.cnf

rm -rf /etc/my.cnf
if [ $? -eq 0 ]
then
    echo "删除/etc/my.cnf文件完成"
fi

ln -s /usr/local/mysql/my.cnf /etc/my.cnf
if [ $? -eq 0 ]
then
    echo "将/usr/local/mysql/my.cnf软连接到/etc/my.cnf下成功" >> ~/mysql.log && echo "将/usr/local/mysql/my.cnf软连接到/etc/my.cnf下成功"
else
    echo "将/usr/local/mysql/my.cnf软连接到/etc/my.cnf下失败" >> ~/mysql.log && echo "将/usr/local/mysql/my.cnf软连接到/etc/my.cnf下失败"
fi

chown -R mysql:mysql /usr/local/mysql/my.cnf
if [ $? -eq 0 ]
then
    echo "my.cnf修改用户组成功" >> ~/mysql.log && echo "my.cnf修改用户组成功"
else
    echo "my.cnf修改用户组失败" >> ~/mysql.log && echo "my.cnf修改用户组失败"
fi

/usr/local/mysql/support-files/mysql.server start
if [ $? -eq 0 ]
then
    echo "MySQL启动成功" >> ~/mysql.log && echo "MySQL启动成功"
else
    echo $(date +'%Y-%m-%d %H:%M:%S') "MySQL启动失败,脚本执行退出" >> ~/mysql.log && echo "MySQL启动失败,脚本执行退出"
    exit 1
fi

ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock
echo "将mysql.sock软连接到/tmp下"

/usr/local/mysql/bin/mysqladmin -u $u password ''$p''
if [ $? -eq 0 ]
then
    echo "密码设置完成" >> ~/mysql.log && echo "密码设置完成"
else
    echo "设置密码失败,脚本运行终止" >> ~/mysql.log && echo "设置密码失败,脚本运行终止"
    exit 1
fi

ln -s /usr/local/mysql/bin/mysql /usr/bin
if [ $? -eq 0 ]
then
    echo "映射mysql目录下bin/mysql到系统/usr/bin下解决mysql -u用户 -p找不到命令的问题" >> ~/mysql.log && echo "映射mysql目录下bin/mysql到系统/usr/bin下解决mysql -u用户 -p找不到命令的问题"
else
    echo "映射mysql目录下bin/mysql到系统失败" >> ~/mysql.log
    exit 1
fi

touch /usr/lib/systemd/system/mysql.service
echo "创建mysql.service文件" >> ~/mysql.log && echo "创建mysql.service文件"

echo "[Unit]
Description=mysql5.6
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile= /founder/mysql/mysqld.pid
ExecStart= /usr/local/mysql/support-files/mysql.server start
ExecReload=/usr/local/mysql/support-files/mysql.server restart
ExecStop=/usr/local/mysql/support-files/mysql.server stop

PrivateTmp=true

[Install]
WantedBy=multi-user.target" >> /usr/lib/systemd/system/mysql.service

systemctl enable mysql.service
if [ $? -eq 0 ]
then
    echo "mysql.service设置开机启动成功" >> ~/mysql.log && echo "mysql.service设置开机启动成功"
else
    echo "mysql.service设置开机启动失败" >> ~/mysql.log && echo    "mysql.service设置开机启动失败"
fi

systemctl restart mysql.service
if [ $? -eq 0 ]
then
    echo "mysql.service MySQL重启成功" >> ~/mysql.log && echo "mysql.service MySQL重启成功"
else
    echo "mysql.service MySQL重启失败" >> ~/mysql.log && echo    "mysql.service MySQL重启失败"
fi

mysql -u$u -p$p -e "${mysql}"
if [ $? -eq 0 ]
then
    echo "允许root远程登录" >> ~/mysql.log && echo "允许root远程登录"
else
    echo "开放roo远程登录失败" >> ~/mysql.log && echo "开放roo远程登录失败"
fi

mysql -u$u -p$p -e "${flush}"
if [ $? -eq 0 ]
then
    echo "刷新数据库权限成功" >> ~/mysql.log && echo "刷新数据库权限成功"
else
    echo "刷新数据库权限失败" >> ~/mysql.log && echo "刷新数据库权限失败"
fi

firewall-cmd --zone=public --add-port=$d/tcp --permanent
firewall-cmd --reload
if [ $? -eq 0 ]
then
    echo "防火墙开放"$d"端口成功" >> ~/mysql.log && echo "防火墙开放"$d"端口成功"
else
    echo "防火墙开放"$d"端口失败" >> ~/mysql.log && echo "防火墙开放"$d"端口失败"
fi

echo "MySQL安装完成
数据库账号:$u
数据库密码:$p
数据库端口:$d
数据库连接地址:${var%/*}" >> ~/mysql.log

tail -n 5 ~/mysql.log

##########mysql5.6编译安装完成##########

CREATE_DB_SQL="create database IF NOT EXISTS ${DBNAME}"
mysql -u$u -p$p -e "${CREATE_DB_SQL}"
echo "新建zabbix库完毕!"

cd /usr/share/doc/zabbix-server-mysql-3.4.7/
zcat create.sql.gz | mysql -u$u -p$p zabbix
echo "导入zabbix原始数据完毕!"
mkdir -p /var/lib/mysql
ln -s /usr/local/mysql/mysql.sock /var/lib/mysql/

sed -i 's/# DBHost=localhost/DBHost=localhost/g' /etc/zabbix/zabbix_server.conf
sed -i 's/DBUser=zabbix/DBUser=root/g' /etc/zabbix/zabbix_server.conf
sed -i 's/# DBPassword=/DBPassword='$p'/g' /etc/zabbix/zabbix_server.conf
sed -i 's/# php_value date.timezone Europe\/Riga/php_value date.timezone Asia\/Shanghai/g' /etc/httpd/conf.d/zabbix.conf
sed -i 's/DocumentRoot "\/var\/www\/html"/DocumentRoot "\/usr\/share\/zabbix"/g' /etc/httpd/conf/httpd.conf

systemctl start zabbix-server
systemctl start httpd
echo "zabbix监控系统部署完毕,请访问http://${var%/*}进行安装操作,默认登录账户为Admin密码为zabbix。"

猜你喜欢

转载自blog.csdn.net/s295580857/article/details/79460841