一键部署 Zabbix-Server 6.0.1

本次安装环境

操作系统版本CentOS 7.8
Nginx版本1.20
Mysql版本8.0.30
PHP版本7.2
Zabbix版本6.0.1

详细环境需求可以参考官网文档:Zabbix官网-安装要求

一键部署脚本

#!/bin/bash

#如果脚本退出码非0则执行这个函数
set -eo pipefail

trap "on_ERR;" ERR
on_ERR() {
    local ret=$? cmd="$BASH_COMMAND" f="${BASH_SOURCE:--}" lino="${BASH_LINENO[0]}"
    printf >&2 "ERROR: %s:%s: \033[7m%s\033[0m exit with code %s.\n" "$f" "$lino" "$cmd" "$ret"
    exit 24
}


printf "\n"
echo "本脚本可重复执行,是否执行脚本? 按任意键继续, 按Ctrl+C退出"
read

echo -e "\033[32m 关闭系统防火墙 \033[0m"
echo '--------------------------------------------------------------------------------'


systemctl stop firewalld
systemctl disable firewalld
setenforce 0 || :
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config



printf "\n"
printf "\n"
echo -e "\033[32m 开始部署 Mysql8.0.30 \033[0m"
echo '--------------------------------------------------------------------------------'
sleep 3
cd /usr/local/src/

if [ ! -f mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar  ]; then
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
fi
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-*  --force --nodeps
mkdir -p /data/mysql
chown mysql:mysql /data/mysql

cat > /etc/my.cnf << EOF
[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
port=3306
lower_case_table_names=1
max_connections=500
EOF
yum install libaio -y
systemctl enable mysqld
systemctl start mysqld
#修改YUM 源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -cO /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo



#安装密码生成工具
yum install -y expect

#获取默认密码
MYSQL_PASSWD=`cat /var/log/mysqld.log | grep password |awk  '{print $13}'`

update_passwd (){
set -e
trap "on_ERR;" ERR
cat > ~/.my.cnf << EOF
[mysql]
user=root
password='$MYSQL_PASSWD'
EOF

#生成新密码,并删除密码中的双引号和单引号
NEW_PASSWD=`mkpasswd -l 18 -d 2 -c 3 -C 4 -s 5 | sed $'s/[\'\"]//g'`

#修改root密码
mysql --connect-expired-password -e "alter user 'root'@'localhost' identified by '$NEW_PASSWD'; flush privileges;"

cat > ~/.my.cnf << EOF
[mysql]
user=root
password='$NEW_PASSWD'
EOF
}

if [ ! -f ~/.my.cnf ];
  then
  update_passwd
fi

if [ $(sed -n '3p' ~/.my.cnf |awk -F '=' '{print $2}' |sed  "s/'//"g) == "$MYSQL_PASSWD" ];
  then
  update_passwd
fi


#由于MySQL8.0 有密码验证组件,若希望设置简单的密码,需要修改服务验证条件
# 1、密码检查等级,0/LOW、1/MEDIUM、2/STRONG  # 2、密码的最短长度 # 3、密码至少要包含的小写字母个数和大写字母个数
mysql -e "set global validate_password.policy=0; set global validate_password.length=6; set global validate_password.mixed_case_count=0;"
#创建zabbix库(这里zabbix对库的编码格式有需求)

 ZABBIX_DB=`mysql -e "show databases;" | grep  -w zabbix || :`
 
 if [ -z "$ZABBIX_DB" ]
  then
    mysql -e "create database zabbix character set utf8 collate utf8_bin;"
  else  
    echo "zabbinx 数据库已存在"
fi

#创建用户(指定使用的身份验证插件)
MYSQL_ZABBIX_USER=`mysql -e "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'zabbix');" |sed -n '2p'`
if [ "$MYSQL_ZABBIX_USER" == 0 ]
  then
    mysql -e "create user 'zabbix'@'localhost' identified with mysql_native_password by 'Zabbix@123';"
  else  
    echo "zabbinx 用户已存在"
fi



#给'zabbix'@'localhost' 这个用户,授予所有操作权限
mysql -e "grant all privileges on zabbix.* to 'zabbix'@'localhost'; flush privileges;"



printf "\n"
printf "\n"
echo -e "\033[32m 开始部署 Hginx-1.20.0 \033[0m"
echo '--------------------------------------------------------------------------------'
sleep 3
rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm --force
mkdir -p /data/web
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
sed  -i '30i  server { \
      listen       80; \
      server_name  localhost; \
      root         /data/web; \
      location / { \
        index  index.php index.html index.htm; \
      } \
      location ~ \.php$ { \
        fastcgi_pass   127.0.0.1:9000; \
        fastcgi_index  index.php; \
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; \
        include        fastcgi_params; \
      } \
  }' /etc/nginx/nginx.conf
systemctl  enable nginx 
systemctl  start nginx

NGINX_PROT=`netstat -lntp |grep -w 80 || :` 
if [ -z  "$NGINX_PROT" ]; 
  then
    echo "端口未监听,请查看nginx服务状态和日志"
    exit 2
fi



printf "\n"
printf "\n"
echo -e "\033[32m 开始部署php7及其它依赖软件 \033[0m"
echo '--------------------------------------------------------------------------------'
sleep 3
yum -y install epel-release
trap - ERR
timeout 30 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm --force
if [ $? != 0 ]
  then
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm --force
fi

trap ERR

yum clean all
yum makecache

printf "\n"
echo -e '\033[34m 
如果下载比较慢,可以先下载安装后再执行部署脚本

https://gitee.com/hejianzhao/source/raw/master/php72w.tar.gz

tar xf php72w.tar.gz


#解压后,执行下面命令安装,注意安装顺序,别乱改
yum -y install gcc gcc-c++ libargon2 -y
rpm -Uvh php72w-cli-7.2.34-1.w7.x86_64.rpm \
php72w-common-7.2.34-1.w7.x86_64.rpm \
php72w-fpm-7.2.34-1.w7.x86_64.rpm \
php72w-cli-7.2.34-1.w7.x86_64.rpm \
php72w-gd-7.2.34-1.w7.x86_64.rpm \
php72w-mbstring-7.2.34-1.w7.x86_64.rpm \
php72w-bcmath-7.2.34-1.w7.x86_64.rpm \
php72w-xml-7.2.34-1.w7.x86_64.rpm \
php72w-ldap-7.2.34-1.w7.x86_64.rpm \
php72w-pdo-7.2.34-1.w7.x86_64.rpm \
php72w-mysqlnd-7.2.34-1.w7.x86_64.rpm \033[0m'


sleep 3

yum -y install gcc gcc-c++ libargon2 php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd

sed -i 's/max_execution_time = 30/max_execution_time = 300/' /etc/php.ini
sed -i 's/max_input_time = 60/max_input_time = 300/' /etc/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 16M/' /etc/php.ini

#创建php测试页面
echo '<?php
phpinfo();
?>' > /data/web/index.php

#启动php
systemctl  enable php-fpm
systemctl  start php-fpm


PHP_PORT=`netstat -lntp |grep -w 9000 || :`
if [ -z "$PHP_PORT" ]; then
    echo "端口未监听"
    exit 3
fi


if [ $(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1) == 200 ] ; 
  then
    :
  else
    echo "访问nginx 状态码非200"
fi



printf "\n"
printf "\n"
echo -e "\033[32m 开始部署zabbix-server \033[0m"
echo '--------------------------------------------------------------------------------'
sleep 3

#创建用户

ZABBIX_USER=`getent passwd zabbix || :`
if [ -z "$ZABBIX_USER" ]
  then
    groupadd zabbix
    useradd -g zabbix -M -s /sbin/nologin zabbix
  else
    echo "zabbinx 用户已存在"

fi

cd /usr/local/src
if [ ! -f zabbix-6.0.1.tar.gz ]; then
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.1.tar.gz
fi
tar -xf zabbix-6.0.1.tar.gz
cd zabbix-6.0.1/
#安装依赖
yum -y install  mysql-devel pcre-devel openssl-devel zlib-devel \
libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel \
libevent-devel openldap-devel   libcurl-devel
#编译安装
./configure --sysconfdir=/etc/zabbix --enable-server --with-mysql \
--with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib \
--with-libpthread --with-libevent --with-openssl --with-ldap \
--with-libcurl --with-libpcre

make clean
make install
#修改配置文件
sed -i 's/# ListenPort=10051/ListenPort=10051/' /etc/zabbix/zabbix_server.conf 
sed -i 's/# DBHost=localhost/DBHost=localhost/' /etc/zabbix/zabbix_server.conf 
sed -i 's/# DBPassword=/DBPassword=Zabbix@123/' /etc/zabbix/zabbix_server.conf

#向数据库中导入zabbix的库表及数据,-f表示强制导入,会覆盖原有的数据

mysql -uzabbix -pZabbix@123 -f zabbix < /usr/local/src/zabbix-6.0.1/database/mysql/schema.sql >/dev/null 2>&1
mysql -uzabbix -pZabbix@123 -f zabbix < /usr/local/src/zabbix-6.0.1/database/mysql/images.sql >/dev/null 2>&1
mysql -uzabbix -pZabbix@123 -f zabbix < /usr/local/src/zabbix-6.0.1/database/mysql/data.sql   >/dev/null 2>&1


\cp -rp /usr/local/src/zabbix-6.0.1/ui/* /data/web/

cat > /usr/lib/systemd/system/zabbix-server.service << EOF 
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
EOF

#重新加载system文件
systemctl daemon-reload
systemctl enable zabbix-server
systemctl start zabbix-server

\cp /data/web/conf/zabbix.conf.php.example /data/web/conf/zabbix.conf.php
chown zabbix:zabbix /data/web/conf/zabbix.conf.php
sed -i "/PASSWORD/s/.*/\$DB['PASSWORD']                 = 'Zabbix@123';/" /data/web/conf/zabbix.conf.php


printf "%-60s\n" "*********************************************************"
printf "%-60s\n" "*                       部署已完成                      *"
printf "%-60s\n" "*                   浏览器输入 IP 访问                  *"
printf "%-60s\n" "*               Admin用户默认密码: zabbix               *"
printf "%-60s\n" "*            Mysql zabbix用户密码: Zabbix@123           *"
printf "%-60s\n" "*       Mysql root密码和免密登录配置文件在: ~/.my.cnf   *"
printf "%-60s\n" "*********************************************************"

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值