源码安装zabbix5.0.36完整版

源码安装zabbix5.0.36完整版

  • 环境:CentOS Linux release 7.9,cpu:16,mem:32G
  • 软件包如下:
    zabbix-5.0.36.tar.gz
    mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz
    nginx-1.6.2.tar.gz

1. 配置前准备

systemctl stop firewalld    # 停止防火墙
systemctl disable firewalld   # 禁用防火墙
systemctl stop NetworkManager
systemctl disable NetworkManager
#查看状态 :systemctl status firewalld

#找到这个参数并修改,然后使用reboot重启系统
vim /etc/selinux/config
SELINUX=disabled    

# 创建组和用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 创建zabbix用户和组
groupadd zabbix

# 新建zabbix用户并将其加入到zabbix组,并将他设置为不可登录的类型的用户。
useradd -g zabbix zabbix -s /sbin/nologin  

# 清理旧数据
yum remove -y mariadb*

# 创建MySQL相关目录,按实际调整
mkdir -p /data/mysql-cluster/mysql3306/{data,binlogs,logs,tmp}

# 习惯软件版放这个目录
mkdir /packages

# 配置yum源,两个都是阿里云的,前提是有网络,ping www.baidu.com
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum clean all  # 清理缓存
yum makecache  # 生成缓存
yum repolist  # 查看有多少个包,这两个装好后,应该有3000+

# 小工具安排上,工具包含netstat、iostat、vmstat这三命令很重要)
yum install -y net-tools

2. 下载并安装nginx


#安装依赖
yum install mysql-devel libcurl libevent libevent-devel fping curl-devel libxml2  libxml2-devel gcc net-snmp-devel pcre-devel zlib-devel openssl-devel -y

#下载nginx源码包,一般软件包放这个目录下
cd /packages
wget http://nginx.org/download/nginx-1.6.2.tar.gz  # 不指定目录,则下载到当前目录

#解压nginx
# 指定解压到 /data 目录下,解压后为名字前面一样的目录
tar zxvf nginx-1.6.2.tar.gz  -C /data/   
cd /data/nginx-1.6.2

# 编译安装
./configure --with-http_ssl_module        #安装目录默认/usr/local/nginx;安装时会自动加nginx用户和nginx用户组,不用额外指定
make && make install
echo $? # 0 则成功,不是0就是报错,有问题

#启动nginx
/usr/local/nginx/sbin/nginx

#修改nginx配置文件,找到如下内容,取消注释
vim /usr/local/nginx/conf/nginx.conf

# 内容如下,找到对应信息并修改,注释掉前面的#,并修改为如下内容,在第65行左右
... ...
location ~ \.php$ {
           root           html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           include        fastcgi.conf;
       }
... ...
# 保存退出

#重启nginx
/usr/local/nginx/sbin/nginx -t   # 成功则看到....ok
/usr/local/nginx/sbin/nginx -s reload   # 应用刚修改后的文件

# 查看端口是否起来,默认端口 80
netstat -nulpt  |grep nginx

# 测试nginx,端口按实际来,成功则如下
192.168.169.100:80

PS:ngingx搭建成功如下,注意ip更换为自己的,然后在浏览器上输入"ip:端口"nginx3 、安装MySQL数据库
my.cnf 配置文件在文末。

# 安装依赖,Nothing to do说明已经安装过了。
yum install libaio -y

# 创建组和用户,上面已经创建了,这里会提示已经存在
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 下载安装包,一般软件包放这个目录下
cd /packages
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz

# 解压
tar xvf mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz

# 放到指定目录下
mv mysql-8.0.28-linux-glibc2.17-x86_64-minimal /usr/local/
cd /usr/local/
mv mysql-8.0.28-linux-glibc2.17-x86_64-minimal mysql # 改名

# 配置环境变量,先看看/etc/profile中是否有echo的内容,若有则跳过
echo 'export PATH=$PATH:/usr/local/mysql/bin:/usr/local/nginx/sbin' | sudo tee -a /etc/profile
source /etc/profile   # 使环境变量立即生效

# 编辑mysql配置文件my.cnf,可参考文末,复制的时候,注意内容是否有缺失
vim /etc/my.cnf 

# 编辑my.cnf文件,末尾有自取,修改实际的目录路径,调整cpu和内存相关

# 对相关目录的修改属性
chown mysql:mysql -R /data/mysql-cluster/mysql3306

# 开始 初始化MySQL
# 用绝对路径是防止用到系统默认版本的命令。而导致初始化报错
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql  

#{
   # 查看MySQL的错误日志,内容里有error,则初始化失败,清除 /data/mysql-cluster/mysql3306/data/下的所有数据
   rm -rf /data/mysql-cluster/mysql3306/data/*     # 再运行上面的初始化命令,知道错误日志没有error 
#}

# 找到MySQL的配置文件my.cnf中的错误日志位置,检查日志内容中是否有erro来判断是否初始化成功
# 生产环境需要把告警Warning信息页全部处理了。
cat /etc/my.cnf |grep -w log_error   

# 通过grep过滤错误信息来判断MySQL初始化是否成功,若有error,则说明初始化不成功
cat /data/mysql-cluster/mysql3306/logs/error.log |grep -i error 
  
# 配置启动文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/

# 启动数据库
/etc/init.d/mysql.server start   #启动成功会看到OK或starting
#{      
       #错误的话
       #Starting MySQL.2023-10-06T10:55:31.176795Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
       #这个一看就是权限问题了
       #ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
       #用WinSCP去看的时候发现并没有/var/log/mariadb/mariadb.log这个路径,那我们就创建, 并给mysql用户授权即可
       mkdir /var/log/mariadb 
       touch /var/log/mariadb/mariadb.log 
       chown -R mysql:mysql  /var/log/mariadb/
#}

#用以下两条命令找到数据库的随机密码
error_log_path=$(ps -ef | grep mysql | awk '{print $13}' | awk -F '=' '{print $2}')
cat $error_log_path |grep root  # 输出结果最右边如root@localhost: )qruePb?K13g        “)qruePb?K13g” 这个就是随机密码

# 内容:2023-08-14T08:25:39.873361Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: JLYwq)wga5kR
ps -ef |grep mysql 

# 登录MySQL
mysql -uroot -p   # ,回车后,输入上面的随机密码

# 登录后,代码输入符变为‘mysql>’,第一件事只能改密码
mysql> ALTER user root@localhost IDENTIFIED BY '123456';  # 修改root的密码

#  创建zabbix需要的数据库账号
mysql> CREATE USER zabbix@localhost IDENTIFIED WITH mysql_native_password BY 'qaz123456'; # 记住密码,配置zabbix_server.conf的时候用到,登录网页的时候也用的
mysql> create database zabbix character set utf8 collate utf8_bin;    # 创建zabbix数据保存的库
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;  # 给zabbix用户分配权限
mysql> set global log_bin_trust_function_creators = 1;
mysql> FLUSH PRIVILEGES;  # 刷新权限
mysql> exit

# 创建别名,方便登录
vim /root/.bashrc 

# 添加下面这条,‘MySQL登录的信息’里面按实际登录信息填写,记得保存退出
alias dba3306='mysql -uroot -p123456'
source /root/.bashrc #使生效

# 测试别名,直接输入就可以登录mysql了
dba3306 

4、安装php

# yum安装php相关依赖,最好执行两次以确认依赖都已经安装成功
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json 
yum install -y php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache 
yum install -y php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip 
yum install -y php73-php-recode php73-php-snmp php73-php-soap php73-php-xml php73-php-ldap

# 配置zabbix所需的参数
vim /etc/opt/remi/php73/php.ini

# 找到以下参数,并修改
date.timezone = Asia/Shanghai    # 设置时区
max_execution_time = 300    # 最大执行时间
post_max_size = 16M    # post数据最大容量
max_input_time = 300    # 服务器接受数据的时间限制
# 以下这两条可不写,但是MySQL的socke需要用默认的,则/tmp下面那个,或者用ln -s创建软连接解决
mysqli.default_socket = /data/mysql-cluster/mysql3306/tmp/mysqld3306.sock  # 按实际填写mysql的socket,用ps看
pdo_mysql.default_socket = /data/mysql-cluster/mysql3306/tmp/mysqld3306.sock   # 按实际填写mysql的socket,用ps看

# 启动php
systemctl start php73-php-fpm

# php占用的端口为9000,用如下命令查看php端口是否存活
netstat -ntlp | grep 9000   
# 重启
systemctl restart php73-php-fpm

# 设置开机启动
systemctl enable php73-php-fpm
#出现则成功:Created symlink from /etc/systemd/system/multi-user.target.wants/php73-php-fpm.service to /usr/lib/systemd/system/php73-php-fpm.service.

5、测试PHP是否成功安装

# 写一个php脚本,测试php是否搭建并启动成功
vim /usr/local/nginx/html/test.php

# 将如下内容编辑进去
<?php
$i=100;
echo $i;
?>
# 保存退出

#测试,有时复制可能会格式不兼容,尽量手敲。
# IP按实际情况填写,ip a 可以查看网卡信息,有输出结果为:100  和所写脚本内容一致,则搭建、启动成功
curl http://192.168.169.100/test.php   

6、安装zabbix服务
官网下载源码包:https://www.zabbix.com/cn/download_sources

# 创建zabbix用户和组
# 新建zabbix用户并将其加入到zabbix组,并将他设置为不可登录的类型的用户。提示已存在,则跳过
useradd -g zabbix zabbix -s /sbin/nologin  

# 直接用wget下载源码安装包
cd /packages

# 如果因为 OpenSSL 问题无法直接wget,则去浏览器直接下载,然后在上传,注意路径,xshell直接上传的时候有可能不成功,可尝试其他渠道,我是用MobaXterm上传的。
wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.36.tar.gz

#解压并安装
tar zxvf zabbix-5.0.36.tar.gz -C /data/ # 解压到指定目录/data/下面
cd /data/zabbix-5.0.36

# 安装依赖
yum install -y net-snmp-devel net-snmp-utils

# 开始编译
# 注意这个文件/usr/local/mysql/bin/mysql_config,按对应的数据库版本的文件为准,本次所用为msyql8.0的,这个文件就用对应的
./configure --enable-server --enable-proxy --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl  # 安装一些zabbix-server所需的功能

make install  # 开始安装
echo $? # 0 则成功,不是0就是报错,有问题

# 创建mysql的socket软连接,不然就要去php的配置文件改
ln -s /data/mysql-cluster/mysql3306/tmp/mysqld3306.sock /tmp/mysql.sock

# 将源码包中的数据导入数据库中
cd /data/zabbix-5.0.36/database/mysql/

# 这三个文件,一定要按顺序来跑
mysql -uzabbix -p'qaz123456' zabbix < schema.sql
mysql -uzabbix -p'qaz123456'  zabbix < images.sql
mysql -uzabbix -p'qaz123456'  zabbix < data.sql

# 修改zabbix-server的配置文件
vim /usr/local/etc/zabbix_server.conf  

# 内容如下, 找到下面内容并修改,密码对应实际情况
LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=zabbix
DBPassword='qaz123456'
DBPort=3306    # mysql数据库的端口,有些不一定是3306,按实际填写
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
# 保存退出

# 检查一下内容
cat /usr/local/etc/zabbix_server.conf | grep -v ^# |grep -v ^$
# 内容如下
LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=zabbix
DBPassword='qaz123456'
DBPort=3306
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

#  将动态库,软连接到指定目录/usr/lib64下
ln -s /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib64   
ln -s /usr/local/mysql/lib/private/libcrypto.so.1.1 /usr/lib64
ln -s /usr/local/mysql/lib/private/libssl.so.1.1 /usr/lib64

# 启动zabbix服务
zabbix_server

# 用netstat 查看进程是否启动成功,占用端口为10051
netstat -nulpt |grep zabbix_server

7、初始化准备zabbix的web数据

#将源码包中的所有关于php页面的文件拷贝到nginx中
cp -a /data/zabbix-5.0.36/ui/* /usr/local/nginx/html

#并将所有文件赋上所有权限
chmod -R 777 /usr/local/nginx/html
chown -R zabbix.mysql /usr/local/nginx/html/*

# 浏览器访问zabbix页面,并做配置
http://192.168.169.100/setup.php  # 替换实际的IP

8、配置web网页

  • 数据库用户
    账号:zabbix
    密码:qaz123456
  • PS:注意数据库类型是MySQL
    在这里插入图片描述
  • 一直点击“下一步”,直到完成
    在这里插入图片描述
  • 默认账号密码为Admin,密码为:zabbix
  • 如果不记得了,直接百度,但是要注意版本
    在这里插入图片描述
  • 点击Sign in,登录到首页
    在这里插入图片描述
    至此,zabbix以全部搭建完成!!

MySQL的配置文件my.cnf内存如下:

# 文档使用版本8.0.28版本,cpu:16,mem:32,按实际调整
[client]
port            = 3306
socket          = /data/mysql-cluster/mysql3306/tmp/mysqld3306.sock

[mysqld]
user = mysql 
port            = 3306
socket          = /data/mysql-cluster/mysql3306/tmp/mysqld3306.sock
pid-file = /data/mysql-cluster/mysql3306/tmp/my3306.pid
server_id = 2203306
basedir = /usr/local/mysql
datadir = /data/mysql-cluster/mysql3306/data

event_scheduler=1
max_connections=2048
binlog_format = row
lower_case_table_names = 1   #忽略大小写

#session menory
sort_buffer_size = 32M
tmp_table_size = 32M

#lock
innodb_print_all_deadlocks = 1 

#innodb
default_storage_engine=innodb
innodb_buffer_pool_size = 24G  #单实例,按总物理内存2/3
innodb_buffer_pool_instances = 16  # 设置为cpu一半,或者持平cpu
innodb_page_size = 16k
innodb_flush_method = O_DIRECT
innodb_write_io_threads = 16  #最高设置为cpu的两倍
innodb_io_capacity = 4000  # 磁盘读写性能的一半
innodb_page_cleaners = 8    # 设置为cpu一半,或者持平cpu
innodb_fast_shutdown = 0
innodb_flush_neighbors = 0
innodb_log_file_size = 4G
innodb_log_buffer_size = 8M
innodb_log_files_in_group = 2

# engine
skip_federated
skip_archive
skip_blackhole

# slow log
slow_query_log = 1
slow_query_log_file = /data/mysql-cluster/mysql3306/logs/3306slow.log
long_query_time = 1
min_examined_row_limit = 100
log_queries_not_using_indexes
log_throttle_queries_not_using_indexes = 10
log_slow_admin_statements
log_slow_slave_statements

# error log
log_error = /data/mysql-cluster/mysql3306/logs/error.log

# replcations
binlog_rows_query_log_events=1   # 将sql语句内容记录到binlog中
binlog_format = row
transaction_isolation = READ-COMMITTED
sync_binlog = 1
relay_log_recovery = 1
relay_log_info_repository = table
master_info_repository = table
log_slave_updates = 1

# binlog
sync_binlog=2
expire_logs_days = 7
log_bin=/data/mysql-cluster/mysql3306/binlogs/my3306_bin
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G

# gtid 
gtid_mode=ON
enforce_gtid_consistency = true
explicit_defaults_for_timestamp=true

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 04:10:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 04:10:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 04:10:03       58 阅读
  4. Python语言-面向对象

    2024-07-14 04:10:03       69 阅读

热门阅读

  1. ref和reactive区别

    2024-07-14 04:10:03       21 阅读
  2. 【随想】闲聊、沟通和谈判

    2024-07-14 04:10:03       20 阅读
  3. nginx防盗链

    2024-07-14 04:10:03       26 阅读
  4. 【C++编程】类的静态 static 成员 & 常 const 函数

    2024-07-14 04:10:03       19 阅读
  5. Python自定义可切片的类

    2024-07-14 04:10:03       20 阅读
  6. 力扣题解(最长的斐波那契子序列的长度)

    2024-07-14 04:10:03       24 阅读
  7. Mojo: 轻量级Perl框架的魔力

    2024-07-14 04:10:03       21 阅读
  8. 最长上升子序列(最长递增子序列,LIS)

    2024-07-14 04:10:03       20 阅读
  9. 【docker镜像如何在不同的架构上运行】

    2024-07-14 04:10:03       19 阅读
  10. 第九十五周周报

    2024-07-14 04:10:03       14 阅读