源码安装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所有文件添加权限,防止系统权限限制后对nginx报权限不足的
chmod -R 755 /usr/local/nginx/*
#启动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:端口"3 、安装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版本,内容仅供参考
[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
basedir = /usr/local/mysql
datadir = /data/mysql-cluster/mysql3306/data
slow_query_log_file = /data/mysql-cluster/mysql3306/logs/3306slow.log
log_error = /data/mysql-cluster/mysql3306/logs/error.log
log_bin=/data/mysql-cluster/mysql3306/binlogs/my3306_bin