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)
。 - 主机名自定义,默认下一步完成安装。