Linux下安装zabbix详细介绍
前言环境:centos 7.9 nginx-1.18.0.tar.gzmysql-5.7.33-linux-glibc2.12-x86_64.tar.gzphp-7.3.29.tar.gzzabbix-5.4.3.tar.gzzabbix是一个监控工具,非常适合监控Linux服务器的各种信息,这对我们工作上有很大的帮助,zabbix监控工具的代码是php写的,所以我们需要安装PHP引擎和nginx
前言
环境:centos 7.9 nginx-1.18.0.tar.gz mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz php-7.3.29.tar.gz zabbix-5.4.3.tar.gz
zabbix是一个监控工具,非常适合监控Linux服务器的各种信息,这对我们工作上有很大的帮助,zabbix监控工具的代码是php写的,所以我们需要安装PHP引擎和nginx(Apache也可以),同时还需要安装mysql来存储zabbix的数据,mysql的安装可以不与zabbix在同一台服务器,但php、nginx、zabbix就建议安装在同一台服务器上了。这里我们就基于LNMP架构搭建zabbix。
安装 LNMP
以下我们就给出安装的lnmp的大致命令,不熟悉的可以看本人的另外文章。
nginx的安装
如果已经安装有了nginx,则可以不用再次安装,如果没有安装nginx,则开始下面步骤安装。
useradd -s /sbin/nologin -M nginx
yum -y install make zlib* pcre* gcc gcc-c++ openssl*
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --with-http_stub_status_module --prefix=/usr/local/nginx --user=nginx --group=nginx #如果出现依赖缺失报错,则安装对应的依赖即可
make -j 4
make install
chown -R nginx.nginx /usr/local/nginx
cd /usr/local/nginx && ./sbin/nginx
mysql的安装
如果已经安装有了mysql,则可以不用再次安装,如果没有安装mysql,则开始下面步骤安装。
rpm -qa|grep mysql #先查看下系统有没有安装有mysql包,有的话就卸载
rpm -qa| grep mariadb #查看有没有其他的数据库,如mariadb ,有的话需要卸载
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps #卸载mariadb
rpm -qa| grep glibc #先查询glic版本是否等于或高于你下载的mysql安装包
glibc-2.17-324.el7_9.x86_64
rpm -qa|grep libaio #查看有没有安装libaio,没有就yum安装
libaio-0.3.109-13.el7.x86_64
rpm -qa|grep ncurses-compat-libs #查看有没有安装ncurses,没有就yum安装
yum install ncurses*
useradd -M -s /bin/false mysql
tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
cd mysql-5.7.33-linux-glibc2.12-x86_64/
ln -s /mysql/mysql-5.7.33-linux-glibc2.12-x86_64/ /usr/local/mysql #创建一个软连接
chown -R mysql:mysql mysql-5.7.33-linux-glibc2.12-x86_64/ #授权
cd /usr/local/
chown -R mysql:mysql mysql/ #授权
cd mysql/bin
./mysqld --initialize --user=mysql #初始化并指定数据目录,会生成root密码,记住这个密码
./mysql_ssl_rsa_setup --uid=mysql #设置mysql加密通讯
./mysqld_safe --user=mysql &
cp mysql.server /etc/init.d/mysql.server #复制mysql的启动文件到/etc/init.d/目录
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile #定义全局变量
/etc/init.d/mysql.server stop
/etc/init.d/mysql.server start
mysql -uroot -p
Enter password: #输入初始化时生成的随机密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘manager001’; #修改root密码
flush privileges; #刷新权限
use mysql;
update user set host='%’ where user=‘root’ and host=‘localhost’; #修改root能从任何客户端登陆
flush privileges;
exit;
PHP的安装
如果已经安装有了php,则可以不用再次安装,如果没有安装php,则开始下面步骤安装。
yum -y install sqlite-devel zlib zlib-devel libxmi2 libxmi2-devel libjpeg libjpeg-devel libjpeg-turbo libjpeg-turbo-devel libiconv libiconv-devel
tar -zxvf php-7.3.29.tar.gz -C /php/
cd /php/php-7.3.29
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm -user=nginx --with-fpm-group=nginx --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd --with-iconv-dir--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib-- with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --enable-ftp --with-gd --enable-gd-jis --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap - -with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --with-ldap=shared --without-gdbm #这里肯定会因为缺少依赖报错,需要自己安装对应的依赖即可
make -j 8 #由于预编译太慢,所以开启8个进程编译,不写-j 默认单个进程编译
make install
cd /usr/local/php/etc/
cp /phpl/php-7.3.29/php.ini-production ./php.ini #复制解压缩包配置文件到php安装目录的etc目录下
cp /usr/local/php/etc/php-fpm.conf.default ./php-fpm.conf #把配置文件复制一份
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf #把配置文件复制一份
vim /usr/local/php/etc/php.ini #修改php.ini文件以下几个参数,不然web安装zabbix时会报错
date.timezone = Asia/Shanghai
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
upload_max_filesize = 2M
/usr/local/php/sbin/php-fpm #启动php
lsof -i:9000 #查看php的默认9000端口是否开启成功
自此,我们已经搭建好了LNMP架构,下面我们来使nginx能正常解析php,如下进行测试:
cat >>/usr/local/nginx/html/index_info.php<<'EOF'
<?php
phpinfo();
?>
EOF
chown -R nginx.nginx /usr/local/nginx #重新更改属主,因为index_info.php是root用户创建的
vim /usr/local/nginx/conf/nginx.conf #修改nginx.conf文件,启用以下的参数
user nginx;
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #这句要改为$document_root$fastcgi_script_name
include fastcgi_params;
}
网页测试nginx是否能解析php文件: http://192.168.43.25:80/index_info.php 能正常显示php的信息即可,如果不能,去nginx的日志查看报错信息并排错。
安装 zabbix
下面我们来正式安装zabbix服务。
tar -xvf zabbix-5.4.3.tar.gz
cd zabbix-5.4.3
注意:执行预编译之前请注意,如果你的mysql和zabbix不在同一台机器上,则你需要在zabbix这台机器上安装mysql的头文件和开发包,网络上不一定能找得到你对应的mysql的版本的mysql-devel包,所以,这里本人去mysql的官网下载了对应于我已经在另外一台服务器上安装好了的mysql版本的rpm包,即mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar,因为我知道这个tar包里有11个mysql相关的rpm包,有些就是我需要的,把mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar解压到服务器上,依次安装 mysql-community-common-5.7.33-1.el7.x86_64.rpm、 mysql-community-libs-5.7.33-1.el7.x86_64.rpm、mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm、mysql-community-devel-5.7.33-1.el7.x86_64.rpm即可,不需要安装server包,因为我不是安装mysql,我只是需要安装mysql的类库而已。
./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-net-snmp --with-libcurl --with-mysql #如果因缺少依赖包报错,则需要自己安装对应的依赖包
make -j 4
make install
vim /usr/local/zabbix/etc/zabbix_server.conf #编译zabbix_server.conf,修改以下几个参数
DBHost=192.168.1.137 #指定数据库的主机IP
DBName=zabbix #指定zabbix的数据库
DBUser=zabbix #指定zabbix的数据库的用户名
DBPassword=zabbix #指定zabbix的数据库的用户名的密码
#先指定以上的几个参数,下面我们将会为zabbix创建数据库。
#这里我们先不启动zabbix,因为zabbix数据库还没创建,启动zabbix肯定报错,下面我们就来创建zabbix数据库。
#zabbix的默认端口是10051
创建zabbix数据库
登陆到你的mysql服务器,同时,在zabbix服务器上把zabbix的源码包目录里面的 mysql的脚本拷贝出来并传送到mysql服务器上,文件路径大概在/zabbix-5.4.3/database/mysql/下面,一共有schema.sql、data.sql、double.sql、images.sql,不同的zabbix版本可能SQL文件不同。
mysql -uroot -p'manager001'
create database zabbix character set utf8 collate utf8_bin; #注意:字符集要为 utf8 collate utf8_bin,不要web网页安装zabbix时会报错
create user zabbix@'%';
grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
flush privileges;
exit;
mysql -uzabbix -p'zabbix' #zabbix用户进入mysql准备开始导入初始化脚本
use zabbix;
source /zabbix-5.4.3/database/mysql/schema.sql; #依次导入创建表、插入数据的脚本到zabbix数据中
source /zabbix-5.4.3/database/mysql/data.sql;
source /zabbix-5.4.3/database/mysql/double.sql;
source /zabbix-5.4.3/database/mysql/images.sql
exit;
启动zabbix、启动nginx
以上,我们已经搭建好了lnmp、已经安装并初始化了zabbix数据库,下面我们来启动zabbix和nginx。
/usr/local/zabbix/sbin/zabbix_server #启动zabbix_server,默认端口10051,如果报错,查看日志,一般都是因为连不上数据库报错
/usr/local/zabbix/sbin/zabbix_agentd #启动zabbix_sagentd,默认端口10050
mkdir -p /usr/local/nginx/html/zabbix #为zabbix程序单独创建一个存放文件的目录
cp -r /zabbix-5.4.3/ui/* /usr/local/nginx/html/zabbix #复制源码包里面的文件到zabbix目录,-r表示目录级联复制
vim /usr/local/nginx/conf/zabbix.conf #为zabbix单独建立一个虚拟主机
server {
listen 8080;
server_name localhost;
access_log logs/access.log main;
location / {
root /usr/local/nginx/html/zabbix;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root /usr/local/nginx/html/zabbix; #直接定位到zabbix的根目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #一定要为$document_root
include fastcgi_params;
}
}
vim /usr/local/nginx/conf/nginx.conf #在nginx.conf倒数第2行加入下面这行参数
include /usr/local/nginx/conf/zabbix.conf
chown -R nginx.nginx /usr/local/nginx #重新更改属组,因为新建了zabbix.conf文件
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
网页安装zabbix
http://192.168.118.129:8080/setup.php
根据页面信息一步一步的安装即可,安装页面主要就是检查PHP的配置即php.ini文件的参数是否符合要求,以及设定mysql参数等,安装页面比较简单。这里需要注意一点的就是zabbix的数据库字符集问题,如果创建zabbix数据库时字符集不是utf8 collate utf8_bin,这里的安装页面会报错的,办法就是删库重建吧。
登陆zabbix
http://192.168.118.129:8080/index.php,默认超级管理员账号密码是:Admin/zabbix
总结
1、安装好mysql,或者已有现成的mysql;
2、安装好nginx,或者已有现成的nginx,nginx能正常解析PHP文件;
3、安装好php引擎,或者已有现成的php,修改php.ini文件,启动php /usr/local/php/sbin/php-fpm
,端口是9000;
4、安装zabbix并修改zabbix_server.conf,zabbix的默认端口是10051,zabbix-agent客户端默认的端口是10050;
5、创建zabbix数据库,字符集要为utf8 collate utf8_bin,从zabbix的源码包里面导入对应的SQL脚本来初始化zabbix数据库;
6、在nginx下创建目录并复制源码包里面的zabbix网页文件到创建的目录: mkdir -p /usr/local/nginx/html/zabbix && cp -r /zabbix-5.4.3/ui/* /usr/local/nginx/html/zabbix
7、nginx添加虚拟主机,写一个zabbix.conf文件,如下:
vim /usr/local/nginx/conf/zabbix.conf
server {
listen 8080;
server_name localhost;
access_log logs/access.log main;
location / {
root /usr/local/nginx/html/zabbix;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root /usr/local/nginx/html/zabbix;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
8、在nginx.conf里面include进去上面创建的虚拟主机,重新更改属组和重启nginx。
9、网页访问开始安装zabbix,http://192.168.118.129:8080/setup.php
10、登陆:http://192.168.118.129:8080/index.php,默认账号密码:Admin/zabbix
排错经验
半个月前我的zabbix已经安装好了,过了很多天之后,由于我使用的是WiFi,所以mysql虚拟机IP不是固定的,所以需要修改zabbix.conf的配置文件的mysql的IP地址,但即使我修改了还是报错如下:
原来,是这样,还记得我们当初安装zabbix的时候一步一步的配置mysql地址账号密码的过程吗,原来页面配置这个mysql的时候会把数据库的IP地址账号密码等等都记录到/usr/local/nginx/html/zabbix/conf/zabbix.conf.php,所以还需要修改这个文件,我靠:
修改完之后果然能正常访问了,我靠靠
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)