CentOS 9上从源码到监控:手把手编译安装Zabbix 7.0全栈(含MySQL 8.0、Nginx 1.26、PHP 8.4)

张开发
2026/4/11 4:29:40 15 分钟阅读

分享文章

CentOS 9上从源码到监控:手把手编译安装Zabbix 7.0全栈(含MySQL 8.0、Nginx 1.26、PHP 8.4)
CentOS 9上从源码到监控手把手编译安装Zabbix 7.0全栈含MySQL 8.0、Nginx 1.26、PHP 8.4在当今复杂的IT基础设施环境中一套可靠的监控系统已经成为运维工作的基石。Zabbix作为企业级开源监控解决方案的佼佼者其7.0版本带来了多项性能优化和新特性。本文将带你从零开始在CentOS 9系统上构建一个基于最新技术栈的Zabbix监控平台涵盖MySQL 8.0数据库、Nginx 1.26 Web服务器和PHP 8.4运行环境的完整部署过程。不同于简单的软件安装我们将深入探讨每个组件的版本选择考量、性能调优技巧以及系统间的兼容性配置。这套方案特别适合对系统可控性要求高、需要长期稳定运行的生产环境。通过源码编译安装你可以获得更好的性能优化空间和定制灵活性。1. 环境准备与规划1.1 系统要求与初始配置在开始部署前确保你的CentOS 9系统满足以下最低要求硬件配置CPU至少4核推荐8核内存8GB以上大型环境建议16GB磁盘50GB可用空间监控数据增长迅速网络配置确保以下端口可用10050Zabbix Agent10051Zabbix Server80/443Web界面执行基础系统更新dnf update -y dnf upgrade -y dnf install -y epel-release1.2 安全加固措施生产环境部署前建议完成以下安全配置配置防火墙规则firewall-cmd --permanent --add-port{80,443,10050,10051}/tcp firewall-cmd --reload创建专用运维用户useradd -m -s /bin/bash zabbix_admin passwd zabbix_admin usermod -aG wheel zabbix_admin安装基础安全工具dnf install -y fail2ban selinux-policy-devel systemctl enable --now fail2ban2. 数据库层MySQL 8.0部署与优化2.1 MySQL 8.0安装配置MySQL 8.0为Zabbix提供了更好的JSON支持和性能优化。以下是安装步骤下载官方RPM包wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm dnf install -y mysql80-community-release-el9-1.noarch.rpm dnf module disable -y mysql安装MySQL服务器dnf install -y mysql-community-server mysql-community-devel安全初始化systemctl start mysqld grep temporary password /var/log/mysqld.log mysql_secure_installation2.2 Zabbix专用数据库配置为Zabbix创建专用数据库和用户CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER zabbixlocalhost IDENTIFIED BY Complex_Pssw0rd!; GRANT ALL PRIVILEGES ON zabbix.* TO zabbixlocalhost; FLUSH PRIVILEGES; SET GLOBAL log_bin_trust_function_creators 1;注意生产环境应使用更复杂的密码并考虑定期轮换2.3 性能调优建议在/etc/my.cnf中添加以下优化参数[mysqld] innodb_buffer_pool_size 4G innodb_log_file_size 512M innodb_flush_log_at_trx_commit 2 innodb_flush_method O_DIRECT max_connections 200 character-set-server utf8mb4 collation-server utf8mb4_bin3. Web服务层Nginx与PHP集成3.1 Nginx 1.26源码编译安装最新版Nginx提供了更好的HTTP/2支持和性能优化wget https://nginx.org/download/nginx-1.26.0.tar.gz tar xzf nginx-1.26.0.tar.gz cd nginx-1.26.0编译配置选项./configure \ --prefix/usr/local/nginx \ --usernginx --groupnginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre \ --with-stream编译并安装make make install创建systemd服务单元cat /etc/systemd/system/nginx.service EOF [Unit] DescriptionThe NGINX HTTP and reverse proxy server Afternetwork.target [Service] Typeforking ExecStart/usr/local/nginx/sbin/nginx ExecReload/usr/local/nginx/sbin/nginx -s reload ExecStop/usr/local/nginx/sbin/nginx -s quit PIDFile/usr/local/nginx/logs/nginx.pid PrivateTmptrue [Install] WantedBymulti-user.target EOF3.2 PHP 8.4编译与FPM配置PHP 8.4带来了显著的性能提升和新特性wget https://www.php.net/distributions/php-8.4.0.tar.gz tar xzf php-8.4.0.tar.gz cd php-8.4.0安装编译依赖dnf install -y libxml2-devel sqlite-devel oniguruma-devel libzip-devel \ libwebp-devel libjpeg-turbo-devel freetype-devel openssl-devel编译配置./configure \ --prefix/usr/local/php \ --enable-fpm \ --with-fpm-usernginx \ --with-fpm-groupnginx \ --with-mysqlimysqlnd \ --with-pdo-mysqlmysqlnd \ --with-openssl \ --with-zlib \ --with-curl \ --with-gd \ --enable-mbstring \ --enable-exif \ --enable-intl \ --enable-opcache优化php.ini配置opcache.enable1 opcache.memory_consumption128 opcache.interned_strings_buffer8 opcache.max_accelerated_files4000 opcache.revalidate_freq604. Zabbix 7.0源码编译与集成4.1 依赖安装与用户准备安装编译依赖dnf install -y libevent-devel net-snmp-devel OpenIPMI-devel \ libssh2-devel libcurl-devel pcre2-devel创建专用用户groupadd --system zabbix useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin zabbix4.2 源码编译安装下载并解压Zabbix源码wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.0.tar.gz tar xzf zabbix-7.0.0.tar.gz cd zabbix-7.0.0配置编译选项./configure \ --prefix/usr/local/zabbix \ --enable-server \ --enable-agent \ --with-mysql \ --with-net-snmp \ --with-libcurl \ --with-libxml2 \ --with-openssl \ --enable-ipv6 \ --with-libpcre2编译并安装make make install4.3 数据库初始化导入初始数据库结构mysql -uzabbix -p zabbix database/mysql/schema.sql mysql -uzabbix -p zabbix database/mysql/images.sql mysql -uzabbix -p zabbix database/mysql/data.sql4.4 服务配置与启动配置zabbix_server.confLogFile/usr/local/zabbix/logs/zabbix_server.log DBHostlocalhost DBNamezabbix DBUserzabbix DBPasswordComplex_Pssw0rd! StartPollers20 StartPollersUnreachable10 StartTrappers15 StartPingers10 CacheSize256M HistoryCacheSize128M HistoryIndexCacheSize64M创建systemd服务单元cat /etc/systemd/system/zabbix-server.service EOF [Unit] DescriptionZabbix Server Afternetwork.target mysqld.service [Service] Typeforking ExecStart/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf Userzabbix Groupzabbix Restarton-failure [Install] WantedBymulti-user.target EOF启动服务systemctl daemon-reload systemctl enable --now zabbix-server5. Web界面部署与配置5.1 Nginx虚拟主机配置创建Zabbix Web配置server { listen 80; server_name zabbix.example.com; root /usr/local/nginx/html/zabbix; index index.php; access_log /var/log/nginx/zabbix.access.log; error_log /var/log/nginx/zabbix.error.log; location / { try_files $uri $uri/ /index.php?$args; } 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; } }5.2 前端文件部署复制前端文件到Web目录cp -r ui/* /usr/local/nginx/html/zabbix/ chown -R nginx:nginx /usr/local/nginx/html/zabbix5.3 完成Web安装向导通过浏览器访问Zabbix Web界面按照向导完成检查所有前置条件配置数据库连接设置服务器详细信息安装完成并登录默认用户Admin密码zabbix6. 高级配置与优化6.1 Zabbix Agent分布式部署在生产环境中你需要在所有被监控主机上部署Zabbix Agentdnf install -y zabbix-agent配置/etc/zabbix/zabbix_agentd.confServerzabbix_server_ip ServerActivezabbix_server_ip Hostnameclient_hostname EnableRemoteCommands1 LogRemoteCommands16.2 自定义监控项开发创建自定义监控脚本示例mkdir -p /usr/local/zabbix/scripts cat /usr/local/zabbix/scripts/check_sshd.sh EOF #!/bin/bash if pgrep -x sshd /dev/null; then echo 1 else echo 0 fi EOF chmod x /usr/local/zabbix/scripts/check_sshd.sh在agent配置中添加UserParameterservice.sshd.status,/usr/local/zabbix/scripts/check_sshd.sh6.3 告警通知配置配置邮件通知示例在Zabbix前端创建报警媒介类型配置SMTP服务器信息创建用户并关联报警媒介配置触发器动作7. 维护与监控7.1 定期备份策略数据库备份脚本示例#!/bin/bash BACKUP_DIR/backup/zabbix DATE$(date %Y%m%d) mysqldump -uzabbix -pComplex_Pssw0rd! --single-transaction zabbix | gzip $BACKUP_DIR/zabbix_db_$DATE.sql.gz find $BACKUP_DIR -type f -name *.gz -mtime 30 -delete7.2 性能监控与调优关键监控指标Zabbix队列情况数据库性能指标服务器资源使用率监控项处理延迟使用内置模板Template App Zabbix Server监控Zabbix自身健康状态

更多文章