基本环境 centos7.9 centos7x不支持通过yum安装zabbix-server-6.0, 在主机上安装的话就需要通过编译源码包进行安装.
shell脚本和 zabbix源码包 路径如下:
具体脚本内容如下:
#!/bin/bash
set -e
centos_base_repo_url="http://mirrors.aliyun.com/repo/Centos-7.repo"
epel_repo_url="http://mirrors.aliyun.com/repo/epel-7.repo"
webtatic_repo_url="https://mirror.webtatic.com/yum/el7/webtatic-release.rpm"
nginx_repo_url="http://nginx.org/packages/centos/\$releasever/\$basearch/"
nginx_gpgkey_url="https://nginx.org/keys/nginx_signing.key"
# 安装 CentOS Base 源
curl -o /etc/yum.repos.d/CentOS-Base.repo $centos_base_repo_url
yum install epel-release.noarch -y
curl -o /etc/yum.repos.d/epel.repo $epel_repo_url
if [ $? -eq 0 ];then
echo "epel源安装成功"
else
echo "epel源安装失败,请检查"
fi
# 安装 webtatic 源
echo "#########开始安装webtatic源#########"
if [ ! -f /etc/yum.repos.d/webtatic.repo ]; then
rpm -Uvh $webtatic_repo_url
echo "########webtatic源安装成功########"
else
echo "webtatic源已经安装,跳过安装步骤"
fi
sleep 5
# 安装 PHP 7.2
echo "########开始安装php72########"
yum install php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd -y
echo "########php72安装成功########"
sleep 5
# 设置 nginx yum 源
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=$nginx_repo_url
gpgcheck=1
enabled=1
gpgkey=$nginx_gpgkey_url
module_hotfixes=true
EOF
# 安装 Nginx
echo "########开始安装nginx########"
yum install nginx -y
echo "########安装nginx成功########"
sleep 5
# 配置 Nginx
mkdir -p /app/code/zbx
NGINX_CONF='
server {
listen 80;
server_name localhost;
root /app/code/zbx;
access_log /var/log/nginx/host.access.log main;
location / {
index index.php;
}
location ~ \.php$ {
# root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
'
echo "$NGINX_CONF" > /etc/nginx/conf.d/app.zabbix.conf
echo "导入nginx配置文件成功"
sleep 3
# 修改 PHP-FPM 的用户和组
sed -ri '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf
echo "修改www.conf用户组成功"
# 配置 PHP
index_php='
<?php
phpinfo();
?>
'
echo "$index_php" > /app/code/zbx/index.php
echo "导入php配置文件成功"
systemctl restart nginx
sleep 3
systemctl restart php-fpm
echo "nginx && php 启动成功"
sleep 3
# 添加Mariadb的yum源
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name=MariaDB
baseurl=http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey=http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
enable=1
EOF
# 安装Mariadb
yum -y install mariadb-server
# 启动Mariadb服务
systemctl start mariadb
# 设置Mariadb开机自启动
systemctl enable mariadb
# 执行mysql_secure_installation初始化
mysql_secure_installation <<EOF
n
admin
admin
y
y
y
y
EOF
# 创建zabbix数据库并授权
mysql -e "create database zabbix charset utf8 collate utf8_bin;"
mysql -e "grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';"
# 重启Mariadb服务
systemctl restart mariadb
sql_dir="/opt/zabbix-6.0.16/database/mysql"
tar -zxvf zabbix-6.0.16.tar.gz
sleep 3
mysql -uroot -padmin zabbix < $sql_dir/schema.sql
mysql -uroot -padmin zabbix < $sql_dir/images.sql
mysql -uroot -padmin zabbix < $sql_dir/data.sql
mysql -uroot -padmin zabbix < $sql_dir/double.sql
mysql -uroot -padmin zabbix < $sql_dir/history_pk_prepare.sql
echo "mysql数据导入成功!"
sleep 3
echo "开始编译安装zabbix6"
#安装 zabbix-server 依赖
yum install -y 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 gcc-c++
sleep 3
cd zabbix-6.0.16
export CFLAGS="-std=gnu99"
./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 install
echo $?
echo "Mariadb&&zabbix6安装和配置完成!"
sleep 3
useradd -s /sbin/nologin -M zabbix
echo "zabbix系统用户添加成功!"
#cd zabbix-6.0.16/ui/ && cp -r ./* /app/code/zbx/
#chown -R nginx.nginx /app/code/zbx
#echo "复制web ui数据成功!"
#sleep 3
sed -i 's/# DBPassword=/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf
echo "修改zabbix配置文件成功"
sleep 3
echo "开始书写zabbix"
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
systemctl daemon-reload
echo "启动文件 成功配置"
sleep 3
cp -r /opt/zabbix-6.0.16/ui/* /app/code/zbx/
chown -R nginx.nginx /app/code/zbx
echo "复制web ui数据成功!"
systemctl restart zabbix-server
echo "启动zabbix-server成功"
脚本流程大概如下:
- 配置CentOS Base、EPEL、Webtatic 软件源, 以及安装php72和相关依赖.
- 配置nginx源, 安装nginx服务, 然后创建工作目录,再进行nginx+php的相关配置.
- 安装mariadb10.5数据库, zabbix6不再支持mariadb5.5版本的数据库.
- 安装完之后,执行
mysql_secure_installation
命令进行 MariaDB 的安全初始化。 然后创建zabbix相关的数据库用户与授权. - 解压zabbix源码包, 从源码包导入zabbix要求的sql文件, 注意导入顺序.
- 接着开始安装zabbix编译安装所需依赖, 然后进入zabbix目录,开始进行编译安装.
- 编译安装完成之后,就是进行一些常规的配置了, 比如书写Service文件,让zabbix能够通过systemctl start,stop相关命令来执行. 并且需要复制ui文件到 /app/code/zbx工作目录里来安装 Zabbix Web 界面,并配置 Nginx 以支持 Zabbix Web.
建议在网络状态良好的环境里执行该脚本, 不然安装相关服务的话可能因为网络问题容易反复报错.
这只是一个简化的示例脚本,实际部署 Zabbix 时,可能需要根据具体环境和需求进行适当的修改和配置。在运行脚本之前,请确保已经备份了重要的数据,并对脚本中的命令和配置进行了充分的了解和确认,以避免意外的数据丢失或系统配置错误。