ZABBIX搭建 亲测可用

本文详细介绍了在Linux环境下,从源码编译安装Nginx、PHP、MySQL(LNMP)的过程,以及Zabbix监控系统的安装与配置。涵盖了依赖安装、编译参数设定、服务管理等关键步骤,提供了丰富的故障排查与解决经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、说明

1.本次安装使用LNMP架构,nginx版本为1.14.2,mysql版本为5.6.39,php版本为5.6.40。

2.本次安装教程中大部分命令是参考《实践哥企业级Zabbix4.0+Grafana6.0入门实战视频》中的内容,另结合了一些本人在安装过程中遇到的一些故障的解决方式。实践哥课程地址为:https://edu.51cto.com/course/17413.html,有兴趣的可以购买观看,着实讲的不错受益颇深。

3.本次安装基本为源码编译安装

4.本人也是新手上路,能力十分有限,如有错误和疏漏欢迎批评指正。

二、LNMP架构的安装

本次安装主要分为yum源设定、Nginx安装、php安装、mysql安装设置这几个步骤。

1.yum源安装

网易yum源:

wget  -O   /etc/yum.repos.d/CentOS-Base.repo    http://mirrors.163.com/.help/CentOS7-Base-163.repo   
yum   clean   all            ;清除缓存
yum   makecache      ;生成缓存

2.Nginx安装

 1)编译安装

yum install -y wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel              ;安装依赖

cd /usr/local/src                                ;进入下载文件存储目录

wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'          ;下载nginx包

tar -zxvf nginx-1.14.2.tar.gz                                             ;解压nginx文件

cd nginx-1.14.2                                                               ;进入安装目录

./configure --prefix=/usr/local/nginx                               ;设定安装参数,安装到指定目录

make && make install                                                     ;执行编译以及安装

2)nginx启动命令的相关设置

(1)环境变量的设定

           进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/nginx/sbin/后保存并退出

           source /etc/profile              ;刷新环境变量

 

(2)相关命令

            检查Nginx配置: nginx -t

            启动Nginx:nginx

            关闭Nginx:nginx -s stop

(3)验证nginx是否启动成功

             查看进程:ps auxfww|grep nginx

             查看端口:netstat -tulnp|grep nginx

             查看日志:tail -d /usr/local/nginx/logs/error.log

             查看网页:出现Welcome to nginx !

(4)使用systemctl管理nginx

              vim    /usr/lib/systemd/system/nginx.service           ;创建相关文件, 服务名称是什么,文件的名称就写什么

             在文件中输入以下内容并保存退出

               [Unit]

               Description=nginx                                              ;服务名称

               After=network.target                                          ;网络启动后启动

               [Service]

               Type=forking                                                       ;低软件层 forking方式(没听懂啥意思)

               ExecStart=/usr/local/nginx/sbin/nginx              ; 启动命令路径

              [Install]

               WantedBy=multi-user.target                              ;开机启动设置(当前为多用户模式)

至此nginx部分安装完成

3.PHP安装

1)编译安装

yum -y install epel-release             ;安装epel源

yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel                  ;安装依赖

cd /usr/local/src/                    ;进入下载目录

wget 'http://hk1.php.net/distributions/php-5.6.40.tar.gz'                                           ;下载php源码包,由于下载速度过慢且安装时报错不晓得为啥,有需要的朋友可以去csdn搜索下载,没有分的话可以找我要源码包

tar -zxf php-5.6.40.tar.gz                        ;解压源码包

cd php-5.6.40                                         ;进入安装目录

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm                               ;设定安装参数

make && make install                             ;编译并且安装

cp php.ini-production /usr/local/php/etc/php.ini                        ;拷贝配置文件

2)部分安装参数说明

--prefix                                                        指定php的安装目录

--with-config-file-path                                指定php的配置文件位置

--with-mysql、--with-mysqli                      让php可以操作mysql

--enable-fpm                                               主要是nginx要来调用php语言得使用php-fpm

3)nginx启动命令的相关设置

(1)环境变量的设定

           进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/后保存并退出

           source /etc/profile              ;刷新环境变量

           检查配置文件:php-fpm -t 发现报错

php-fpm报错

 

 

           原因是系统编译安装时生成的配置文件名为php-fpm.conf.default,与系统默认配置文件名php-fpm.conf不一样,仅需要将配置

           文件名称更改为默认的配置文件名称即可

           使用默认配置文件:mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.con

 

(3)验证php是否启动成功

            进程 ps auxf |grep php-fpm

            端口 netstat -tulnp |grep php-fpm

 

(4)使用systemctl管理php

              vim /usr/lib/systemd/system/php-fpm.service           ;创建相关文件, 服务名称是什么,文件的名称就写什么

             在文件中输入以下内容并保存退出

              [Unit]

              Description=php-fpm

              After=network.target

              [Service]

              Type=forking

              ExecStart=/usr/local/php/sbin/php-fpm

              [Install]

              WantedBy=multi-user.target

5)nginx和php-fpm联动配置

             由于nginx的默认配置无法处理php程序,我们测试一下

             vim /usr/local/nginx/html/test.php                 ;创建测试页面

             <?php

              echo "taobao zabbix";

             ?>

保存并退出

这时的现象是打开网页后提示下载PHP文件,所以我们需要修改nginx的配置文件,修改如下:

              vim /usr/local/nginx/conf/nginx.conf                   ;进入相关配置文件修改配置

             location / {

                                  root   html;

                                  index  index.html index.htm index.php;                       ;增加index.php

                               }

             location ~ \.php$ {

             root           html;

             fastcgi_pass   127.0.0.1:9000;

             fastcgi_index  index.php;

             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

             include        fastcgi_params;

                                                                               

将绿色部分的注释符全部删去,将$fastcgi前面的一段配置删去改成$document_root

如此本次php编译安装以及调试完成

4.Mysql安装

1)编译安装

yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel                    ;安装依赖

useradd -s /sbin/nologin mysql                                 ;增加数据库用户

cd /usr/local/src                                                          ;进入下载目录

wget 'https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.39.tar.gz'                                                ;下载mysql源码包,反正我是没下下来同样的可以去csdn找,或者找我要

tar -zxvf mysql-5.6.39.tar.gz                                       ;解压源码包

cd mysql-5.6.39                                                          ;进入安装目录

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1                                                                          ;设定安装参数

make && make install                                                ;编译并且安装,时间很长很长需要耐心等待

cp support-files/mysql.server /etc/init.d/mysqld       ;拷贝启动命令

chmod a+x /etc/init.d/mysqld                                     ;给予执行权限

2)安装代码说明

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql     ;指定安装路径

-DMYSQL_DATADIR=/data/mysql                            ;指定数据存储路径

-DDEFAULT_CHARSET=utf8                                   ;指定字符集

-DDEFAULT_COLLATION=utf8_general_ci            ;指定字符集

 

3)nginx启动命令的相关设置

(1)环境变量的设定

           进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/mysql/bin/后保存并退出

           source /etc/profile              ;刷新环境变量

4)mysql初始化的一些配置

    (1)配置初始化

       更新mysql配置/etc/my.cnf 注意是否有其他位置存在my.cnf,会冲突导致mysql无法正常启动

       将以下配置写入/etc/my.cnf(注意是清空原有配置写入新配置)

            [mysqld]

            bind-address=127.0.0.1                                                           ;监听IP

            port=3306                                                                                   ;监听端口

            datadir=/data/mysql                                                                   ;数据路径

            user=mysql                                                                                  ;用户名

            skip-name-resolve

            long_query_time=2

            slow_query_log_file=/data/mysql/mysql-slow.log

            expire_logs_days=2

            innodb-file-per-table=1

            innodb_flush_log_at_trx_commit = 2

            log_warnings = 1

            max_allowed_packet  = 512M

            connect_timeout = 60

            net_read_timeout = 120

           [mysqld_safe]

           log-error=/data/mysql/mysqld.log

           pid-file=/data/mysql/mysqld.pid

 

(2)数据库初始化

            mkdir -pv /data/mysql       

            chown -R mysql:mysql  /usr/local/mysql /data/mysql/

            yum install -y perl-Module-Install

            /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql  --datadir=/data/mysql/

5)使用systemctl管理mysql      

        vim /usr/lib/systemd/system/php-fpm.service           ;创建相关文件, 服务名称是什么,文件的名称就写什么

             在文件中输入以下内容并保存退出

              [Unit]

              Description=php-fpm

              After=network.target

              [Service]

              Type=forking

              ExecStart=/usr/local/php/sbin/php-fpm

              [Install]

              WantedBy=multi-user.target

6)启动mysql服务器

      systemctl start mysqld

      (1)验证Mysql是否启动

                 查看进程: ps auxf|grep mysql

                 查看监听: nststat -tulnp|gerp mysql

                 查看日志: cat /data/mysql/mysqld.log

 

(2)mysql安全

           mysql加密码

                mysqladmin -h 127.0.0.1 -u root password '********'

                mysql -h 127.0.0.1 -uroot -pzabbixpwd -A

           mysql授权某ip登录

                 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'jishuzhu1209' WITH GRANT OPTION;

                  flush privileges;//刷新权限

          命令解释

                   ALL PRIVILEGES ON 所有权限

                   *.* 所有数据库

                   IDENTIFIED BY 密码

以上LNMP环境安装配置完成

二、LNMP环境介绍

1、LNMP的组成

L即linux系统,N即nginx,M即mysql,P即php。LNMP是linux系统下一种常用的架构。

2、LNMP流程

用户访问nginx,nginx通过php写入数据,php调用数据库mysql将数据写入后返回数据给php,php再返回数据给nginx,nginx最后将数据展示给用户。

           1)    用户 -> php文件

           2)   请求到达nginx,nginx通过127.0.0.1:9000去调用php-fpm fastcgi_pass   127.0.0.1:9000;

           3)    php-fpm -> 运行php程序

           4)   php -> 操作mysql

三、LNMP搭建完毕后测试代码

vim /usr/local/nginx/html/test_mysql.php

       <?php

           $link=mysql_connect("127.0.0.1","root","zabbixpwd"); 

            if(!$link){

            echo "mysql_connect fail";

            }else{

            echo "mysql_connect success";

            }

           ?>

保存并退出,登录网页能见到success

三、zabbix安装

本次安装主要分为yum源设定、Nginx安装、php安装、mysql安装设置这几个步骤。

zabbix-server安装、zabbix-web安装、zabbix-web页面初始化

 

1.zabbix-server安装

1)编译安装

yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel                                ;安装依赖

useradd -s /sbin/nologin zabbix                                               ;创建zabbix账户

cd /usr/local/src/

wget 'https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz'                ;下载zabbix包,建议从官网直接下载后上传linux

tar -zxvf zabbix-4.0.3.tar.gz                                                      ;解压源码包

cd zabbix-4.0.3                                                                         ;进入安装目录

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2                                                          ;设定安装参数

make  && make install                                                             ;编译并且安装

2)代码说明

         --prefix                                                                               ;指定安装目录

         --enable-server                                                                 ;安装zabbix server

         --enable-agent                                                                  ;安装zabbix agent

         --with-mysql                                                                       ;用mysql来存储

3).zabbix启动命令相关设置

(1)环境变量的设定

           进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/后保存并退出

           source /etc/profile              ;刷新环境变量

(2).查看版本

            zabbix_server --version

3).zabbix初始化

(1)      需要到mysql里做数据库初始化

mysql -h 127.0.0.1 -uroot -pzabbixpwd -A                                                                         ;进入数据库

create database zabbix character set utf8 collate utf8_bin;                                            ;设置数据库字符集

grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'jishuzhu1209';      ;分配用户权限

flush privileges;                                                                                                                     ;刷新权限

set names utf8;                                                                                                                     ;定义客户端字符集为UTF8(不知描述是否准确)

use zabbix;                                                                                                                           ;/进入zabbix数据库

source /usr/local/src/zabbix-4.2.3/database/mysql/schema.sql;                                    ;建立对应表项

source /usr/local/src/zabbix-4.2.3/database/mysql/data.sql;                                          ;建立对应表项

source /usr/local/src/zabbix-4.2.3/database/mysql/images.sql;                                     ;建立对应表项

(2)配置zabbix server,最主要是配置连接mysql的用户名和密码

vim /usr/local/zabbix/etc/zabbix_server.conf                                                                     ;进入zabbix_server的配置文件

LogFile=/usr/local/zabbix/zabbix_server.log

DBHost=127.0.0.1                                                                                                             ;数据库ip

DBName=zabbix                                                                                                               ;数据库名称

DBUser=zabbix                                                                                                                  ;数据库用户名

DBPassword=zabbixpwd                                                                                                 ;数据库密码

DBPort=3306                                                                                                                     ;数据库端口

Timeout=30                                                                                                                         ;数据库退出时间

AlertScriptsPath=/usr/local/zabbix/alertscripts                                                                ;告警信息、脚本

ExternalScripts=/usr/local/zabbix/externalscripts

LogSlowQueries=3000

将文件内配置清空将以上配置粘贴进去  注意 用户名和密码自己记得修改

4)   启动zabbix server

chown zabbix:zabbix -R /usr/local/zabbix/                                ;赋予zabbix对zabbix文件夹的权限

zabbix_server                                                                              ;启动zabbix

5)验证zabbix

进程              ps -axuf|grep zabbix_server

端口              nststat -tulnp|grep zabbix_server

日志              cat /usr/local/zabbix/zabbix_server.log

2、zabbix web安装

mkdir /usr/local/nginx/html/zabbix                                                                           ;创建zabbix web目录用于存放zabbix web的web文件

cp -a /usr/local/src/zabbix-4.2.3/frontends/php/* /usr/local/nginx/html/zabbix/   ;将源码包的web文件拷贝到对应目录

五、zabbix web初始化配置

1.进入对应web页,进行初始化配置,对以下报错配置进行优化,可根据具体的报错类型进行针对排错

vim /usr/local/php/etc/php.ini

      post_max_size = 32M

      max_execution_time = 350

      max_input_time = 350

      date.timezone = Asia/Shanghai

      always_populate_raw_post_data = -1

      保存并退出

      systemctl restart php-fpm               ;重启php-fpm服务

填写相关参数      Database host   如果是本机建议填写127.0.0.1

配置完成后,会有一个报错提示无法自动更新配置文件,要求下载后手动上传到指定文件夹,我们自己操作一下就可以了 很简单,这里就不截图了。

 

 

以下是本次安装遇到的各种坑,请视具体情况具体处理

1.zabbix未启动成功

查看zabbix进程只启动了一个,查看相关端口未启动,查看/usr/local/zabbix/zabbix_server.conf日志,发现数据库连接报错。登录数据库发现登录不上,最后使用mysql命令竟然直接登录成功,晕死,故障的原因应该是没有设置密码。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY '*********' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'192.168.1.%' IDENTIFIED BY '*********' WITH GRANT OPTION;

flush privileges;//刷新权限

问题解决完美启动。

2.字体乱码问题

字体路径/usr/local/nginx/html/zabbix/assets/fonts/

vim /usr/local/nginx/html/zabbix/include/defines.inc.php

/Deja VuSans 更改为msyh

默认是DejaVuSans字体,改成msyh微软雅黑字体

刷新网页 验证中文是否正常

3.遇到zabbix_server启动报错,提示zabbix_server.conf 报错

解决方法:取消掉注释的中文内容,启动成功

4.mysql 起不来 报错ERROR!

The server quit without updating PID file (/data/mysql/zabbix-server.pid)

进入mysql报错ERROR 2002 (HY000):

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)

故障原因:编译安装mysql时系统会自动在安装目录生成my.cnf配置文件,我们在修改配置文件时是自己在/etc目录建立的my.cnf的文件,这样子会导致系统产生两个my.cnf的文件从而导致mysql没有办法正常启动。

解决方案;删除掉其中一个my.cnf即可

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值