Debian 12 部署 Zabbix 7.2 自动化脚本

一、前期准备

#!/bin/bash

# 自动化脚本:在 Debian 12 上部署 Zabbix 7.2 
# 以 root 身份运行

# 遇到错误时退出
set -e

# 定义变量
MYSQL_PASSWORD="12345678" # 生产环境请改为强密码
ZABBIX_DB_NAME="zabbix"
ZABBIX_DB_USER="zabbix"
ZABBIX_DB_PASSWORD="12345678" # 生产环境请改为强密码
NGINX_PORT="8080"
NGINX_SERVER_NAME="example.com"
SIMSUN_FONT_PATH="/usr/share/zabbix/ui/assets/fonts/graphfont.ttf"

# 检查是否为 root 用户
if [ "$(id -u)" != "0" ]; then
  echo "错误:请以 root 权限运行此脚本"
  exit 1
fi

# 检查网络连接
echo "检查网络连接..."
if ! ping -c 1 mirrors.aliyun.com &> /dev/null; then
  echo "错误:网络不可用,请检查网络连接"
  exit 1
fi

# 更新软件包列表
apt update

apt install sudo -y

# 安装依赖
echo "安装依赖..."
apt install -y gnupg2 wget gnupg

# 安装 MySQL (修改为静默安装)
echo "安装 MySQL 仓库..."
wget https://repo.mysql.com/mysql-apt-config_0.8.29-1_all.deb

# 添加静默配置
debconf-set-selections <<EOF
mysql-apt-config mysql-apt-config/select-server select mysql-8.0
mysql-apt-config mysql-apt-config/select-tools select enabled
mysql-apt-config mysql-apt-config/select-preview select disabled
mysql-apt-config mysql-apt-config/unsupported-platform select abort
EOF

DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.8.29-1_all.deb
rm mysql-apt-config_0.8.29-1_all.deb

# 设置MySQL root密码
debconf-set-selections <<EOF
mysql-community-server mysql-community-server/root-pass password $MYSQL_PASSWORD
mysql-community-server mysql-community-server/re-root-pass password $MYSQL_PASSWORD
EOF

# 静默安装MySQL
echo "安装 MySQL 服务器..."
DEBIAN_FRONTEND=noninteractive apt update
DEBIAN_FRONTEND=noninteractive apt install -y mysql-server

# 安装 Zabbix (保持原样)
echo "安装 Zabbix 仓库..."
wget https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.2+debian12_all.deb
dpkg -i zabbix-release_latest_7.2+debian12_all.deb
rm zabbix-release_latest_7.2+debian12_all.deb
apt update

# 安装 Zabbix 组件
echo "安装 Zabbix 组件..."
proxychains apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
# apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

# 创建 Zabbix 数据库
echo "创建 Zabbix 数据库..."
mysql -uroot -p${MYSQL_PASSWORD} -e "CREATE DATABASE ${ZABBIX_DB_NAME} CHARACTER SET utf8 COLLATE utf8_bin;"
mysql -uroot -p${MYSQL_PASSWORD} -e "CREATE USER '${ZABBIX_DB_USER}'@'localhost' IDENTIFIED BY '${ZABBIX_DB_PASSWORD}';"
mysql -uroot -p${MYSQL_PASSWORD} -e "GRANT ALL PRIVILEGES ON ${ZABBIX_DB_NAME}.* TO '${ZABBIX_DB_USER}'@'localhost';"
mysql -uroot -p${MYSQL_PASSWORD} -e "SET GLOBAL log_bin_trust_function_creators = 1;"

# 导入 Zabbix 数据库脚本
echo "导入 Zabbix 数据库脚本..."
zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u${ZABBIX_DB_USER} -p${ZABBIX_DB_PASSWORD} ${ZABBIX_DB_NAME}

# 配置 Zabbix
echo "配置 Zabbix Server..."
sed -i "s/# DBPassword=/DBPassword=${ZABBIX_DB_PASSWORD}/" /etc/zabbix/zabbix_server.conf

echo "配置 Nginx..."
sed -i "s/#[ \t]*listen[ \t]\+[0-9]\+;/        listen ${NGINX_PORT};/" /etc/zabbix/nginx.conf
sed -i "s/#[ \t]*server_name[ \t]\+[^;]\+;/        server_name ${NGINX_SERVER_NAME};/" /etc/zabbix/nginx.conf

# 启动并启用服务
echo "启动 Zabbix 相关服务..."
systemctl restart zabbix-server zabbix-agent nginx php8.2-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.2-fpm

# 解决监控图形界面乱码
 if [ -f "$SIMSUN_FONT_PATH" ]; then
   echo "从私人服务器下载字体文件替换字体以解决图形界面乱码..."
   wget https://console.yumesakura.com/down/0EKF7a5Hj7Eh.TTF -O /usr/share/zabbix/ui/assets/fonts/graphfont.ttf
 else
   echo "警告:未找到Zabbix的 graphfont.ttf 字体文件"
 fi

# 输出部署完成信息
echo "Zabbix 7.2 部署完成!"
echo "Web 访问地址: http://$(hostname -I | awk '{print $1}'):${NGINX_PORT}"
echo "默认登录用户: Admin"
echo "默认登录密码: zabbix"
echo "请立即登录并修改 Admin 密码(特别是公网环境)!"

二、Web 访问

1. Web 界面配置

访问路径:http://<服务器IP>:8080

  • 检查必要条件,确保全部为 OK 状态,否则根据提示修改参数。
  • 输入创建数据库时的用户名和密码。
  • 设置时区为 Asia/Shanghai (UTC +08:00)
  • 主机名自定义,默认下一步完成安装。
梦葉樱 all right reserved,powered by Gitbook该文件最后修改时间: 2025-08-08 23:45:02

results matching ""

    No results matching ""