openEuler 22.03 离线源码编译 Zabbix 7.0.27 完整最终整合手册
一、外网统一打包全套离线资源(一次性补齐所有依赖,不再反复拷包)
1. 构建目录
bash
mkdir -p /zabbix_offline/{rpm,zabbix_src}
cd /zabbix_offline/rpm
2. 批量下载编译环境+所有devel依赖+数据库+Nginx+PHP整套rpm
bash
# 编译工具链
dnf groupinstall "Development Tools" --downloadonly --downloaddir=/zabbix_offline/rpm -y
# Zabbix编译必备所有开发包
dnf install -y --downloadonly --downloaddir=/zabbix_offline/rpm \
mysql-devel libevent-devel pcre-devel openssl-devel libcurl-devel libxml2-devel \
net-snmp-devel OpenIPMI-devel libssh2-devel fping pkgconfig unzip zlib-devel libzstd-devel
# MySQL、Nginx、PHP运行环境(前端网页依赖)
dnf install -y --downloadonly --downloaddir=/zabbix_offline/rpm \
mysql-server mysql nginx php-fpm php-mysqlnd php-bcmath php-mbstring php-gd php-xml php-ldap php-openssl
3. 下载Zabbix源码包
bash
cd /zabbix_offline/zabbix_src
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.27.tar.gz
4. 整体打包传输内网
bash
cd /zabbix_offline
tar -zcvf zabbix7_oe2203_full_offline.tar.gz rpm/ zabbix_src/
将压缩包上传至内网服务器 /root。
二、内网离线部署全程操作(无外网)
步骤1:解压+批量安装全部rpm依赖
bash
cd /root
tar -zxvf zabbix7_oe2203_full_offline.tar.gz
cd zabbix_offline/rpm
# 一次性批量解决所有依赖链
dnf localinstall *.rpm -y --nogpgcheck --disablerepo=*
步骤2:MySQL8初始化+重置root密码(适配openEuler无mysqld_safe)
bash
systemctl start mysqld
systemctl enable mysqld
# 临时跳过权限校验启动MySQL
systemctl stop mysqld
systemctl edit mysqld
粘贴内容:
ini
[Service]
ExecStart=/usr/libexec/mysqld --basedir=/usr --skip-grant-tables --skip-networking
保存退出,重载启动:
bash
systemctl daemon-reload
systemctl start mysqld
免密登录改密码:
bash
mysql -u root
sql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
exit;
恢复MySQL正常启动模式:
bash
systemctl revert mysqld
systemctl daemon-reload
systemctl restart mysqld
步骤3:创建Zabbix专属数据库+账号授权
bash
mysql -uroot -pRoot@123456
sql
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'Zabbix@Pass123';
GRANT ALL ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
exit;
步骤4:源码编译安装Zabbix Server+Agent
bash
cd /root/zabbix_offline/zabbix_src
tar -zxvf zabbix-7.0.27.tar.gz
cd zabbix-7.0.27
# 创建运行专用系统用户
groupadd --system zabbix
useradd --system -g zabbix -d /usr/local/zabbix -s /sbin/nologin zabbix
# configure完整参数(所有依赖已补齐,一次通过)
./configure \
--prefix=/usr/local/zabbix \
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-openipmi \
--with-ssh2 \
--with-openssl \
--enable-ipv6
# 编译+安装
make -j$(nproc)
make install
步骤5:导入数据库初始化SQL表结构
bash
mysql -uzabbix -pZabbix@Pass123 zabbix < database/mysql/schema.sql
mysql -uzabbix -pZabbix@Pass123 zabbix < database/mysql/images.sql
mysql -uzabbix -pZabbix@Pass123 zabbix < database/mysql/data.sql
# 恢复MySQL函数创建权限
mysql -uroot -pRoot@123456 -e "SET GLOBAL log_bin_trust_function_creators = 0;"
步骤6:修改Zabbix核心配置文件
① zabbix_server.conf
bash
mkdir -p /usr/local/zabbix/{logs,var}
chown -R zabbix:zabbix /usr/local/zabbix
vim /usr/local/zabbix/etc/zabbix_server.conf
ini
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@Pass123
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/var/zabbix_server.pid
# RuntimeControlSocket=/usr/local/zabbix/var/zabbix_server.sock
② zabbix_agentd.conf
bash
vim /usr/local/zabbix/etc/zabbix_agentd.conf
ini
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=oe2203-zabbix
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
PidFile=/usr/local/zabbix/var/zabbix_agentd.pid
# RuntimeControlSocket=/usr/local/zabbix/var/zabbix_agentd.sock
步骤7:编写标准systemd服务单元(适配Zabbix7无-d参数、前台常驻)
zabbix-server.service
ini
[Unit]
Description=Zabbix Server
After=network.target mysqld.target
[Service]
Type=simple
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf --foreground
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
zabbix-agentd.service
ini
[Unit]
Description=Zabbix Agent
After=network.target
[Service]
Type=simple
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf --foreground
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
写入路径:/etc/systemd/system/
步骤8:清理残留锁文件、启动服务
bash
# 杀掉残留进程、删除套接字/pid锁
pkill -f zabbix_server
pkill -f zabbix_agentd
rm -f /tmp/zabbix_*.sock /tmp/zabbix_*.pid
# 重载systemd并开机自启
systemctl daemon-reload
systemctl enable --now zabbix-server zabbix-agentd
systemctl status zabbix-server zabbix-agentd
正常显示 active (running) 即为服务部署成功。
三、部署Web前端(Nginx+PHP-FPM)
1. 部署网页代码
bash
cp -r ui /usr/share/nginx/html/zabbix
chown -R nginx:nginx /usr/share/nginx/html/zabbix
2. 修改PHP时区配置
bash
vim /etc/php.ini
ini
max_execution_time = 300
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
max_input_time = 300
date.timezone = Asia/Shanghai
3. Nginx站点配置
bash
vim /etc/nginx/conf.d/zabbix.conf
nginx
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html/zabbix;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
给 socket 文件权限(openEuler 必做)
systemctl restart php-fpm nginx
chown nginx:nginx /run/php-fpm/www.sock
chmod 660 /run/php-fpm/www.sock
nginx -t && systemctl reload nginx
curl http://127.0.0.1
4. 启动Web服务+放行防火墙端口
bash
systemctl enable --now nginx php-fpm
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port={10050,10051}/tcp --permanent
firewall-cmd --reload
四、浏览器初始化安装
- 访问地址:
http://内网IP - 环境自检全部OK,下一步;
- 数据库填写:
- 主机:
localhost - 库名:
zabbix - 用户:
zabbix - 密码:
Zabbix@Pass123
- 主机:
- 自定义站点名称,时区选择
Asia/Shanghai; - 自动生成配置文件,安装完成;
- 默认登录账号:
Admin,密码:zabbix; - 后台添加本机主机
oe2203-zabbix,消除agent主机不存在告警。
安装时提示收到创建配置文件,下载后复制即可 cp zabbix.conf.php /usr/share/nginx/html/zabbix/conf/zabbix.conf.php
五、排坑汇总
- configure反复报xxx library not found :外网未一次性下载全部
*-devel,统一批量下载全套rpm再内网批量安装; - OpenIPMI包名错误 :openEuler包名为大写
OpenIPMI-devel,小写无法检索; - systemd Type=forking超时退出 :Zabbix7不再支持
-d后台参数,改用Type=simple + --foreground前台常驻; - rtc服务已运行、套接字残留锁 :pkill杀残留进程,删除
/tmp下sock/pid,固定sock/pid到安装目录var下永久解决; - MySQL无mysqld_safe :用
systemctl edit临时追加启动参数跳过授权表重置密码; - agent提示主机未找到:Web后台手动添加对应主机名即可,不影响服务运行。
六、常用运维路径速查
- 安装目录:
/usr/local/zabbix - 配置文件:
/usr/local/zabbix/etc/ - 日志目录:
/usr/local/zabbix/logs/ - PID/套接字:
/usr/local/zabbix/var/ - Web网页:
/usr/share/nginx/html/zabbix - 实时查看日志:
tail -f /usr/local/zabbix/logs/zabbix_server.log
=================================================================================================
杀残留进程+删锁文件
- pkill -f zabbix_server
- pkill -f zabbix_agentd
- rm -f /tmp/zabbix_.sock /tmp/zabbix_.pid
重载并启动
- systemctl daemon-reload
- systemctl restart zabbix-server zabbix-agentd
- systemctl status zabbix-server zabbix-agentd