跳过正文
  1. Posts/

zabbix4.0的安装与配置

·893 字·5 分钟·
Kubehan
作者
Kubehan
云原生知识栈:深度解析容器技术、Kubernetes、Istio、DevOps 实践、Prometheus 监控、Envoy 代理、Golang 开发及云原生架构与微服务趋势的专业博客

安装zabbix监控首先的先安装LNMP环境,在这里我采用事先准备好的脚本进行安装LNMP环境 脚本内容如下

安装zabbix监控首先的先安装LNMP环境,在这里我采用事先准备好的脚本进行安装LNMP环境 脚本内容如下

安装zabbix监控首先的先安装LNMP环境,在这里我采用事先准备好的脚本进行安装LNMP环境 脚本内容如下

安装zabbix监控首先的先安装LNMP环境,在这里我采用事先准备好的脚本进行安装LNMP环境 脚本内容如下

安装zabbix监控首先的先安装LNMP环境,在这里我采用事先准备好的脚本进行安装LNMP环境 脚本内容如下

#!/bin/bash
# DATE:Wed Jan 17 1# hw226234@126.com  3 #this is a lnmp-install
 
# The Nginx service is being installed
ROOT_ID=0
ML=/usr/local/src
NGINX_ML=/usr/local/src/nginx-1.12.2
PML=/usr/local/src/php-5.6.27
QD=`netstat -anpt | grep 80 | awk '{print $7}' | cut -d "/" -f2 | cut -d ":" -f1`
ADDR=`ip a | grep eth0
<pre wp-pre-tag-0="">

nbsp;| awk ’{print $2}’ | cut -d "/" -f1`
MMM=`netstat -anput | grep mysqld | awk ’{print $4}’ | cut -d ":" -f4`
MAR=`rpm -qa | grep mariadb`
cd $ML && {
wget http://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
mv Centos-7.repo /etc/yum.repos.d/Centos-Base.repo
yum clean all &> /dev/null
yum makecache &> /dev/null
}
 
if [ $? -eq 0 ]
    then
          echo “Yum源更新完毕,开始安装!!!”
    else
        echo “Yum源error”
        exit 1
fi
echo “Yum源配置成功”
 
if [ "$UID" -eq "$ROOT_ID" ]
        then
               echo “root用户运行中” && systemctl stop firewalld && yum install -y gcc gcc-c++  pcre-devel zlib-devel openssl-devel &> /dev/null
        else
               echo “请使用Root用户运行”
               exit 1
fi
echo “依赖包安装完成!”
cd $ML || {
        echo “进入目录失败!!!”
        exit 1
}
 
wget http://nginx.org/download/nginx-1.12.2.tar.gz &> /dev/null && {
tar zxf nginx-1.12.2.tar.gz && groupadd www && useradd -g www www -s /sbin/nologin
}
echo “Nginx包下载成功”
cd $NGINX_ML && {
    ./configure –prefix=/usr/local/nginx –with-http_dav_module –with-http_stub_status_module –with-http_addition_module –with-http_sub_module –with-http_flv_module –with-http_mp4_module –with-http_ssl_module –with-http_gzip_static_module –user=www –group=www &> /dev/null && make &> /dev/null && make install &> /dev/null 
}
 
if [ $? -eq “0” ]
        then
               ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ;nginx && echo “Nginx启动成功,请访问http://$ADDR:80”
        else
              echo “Nginx启动失败!!!”
              exit 1
fi
 
 
#Start installing MySQL5.7!
echo “开始下载MySQL二进制安装包,请稍等…”
if [ -z "$MAR" ]
                then
                        echo “开始安装MySQL”
fi
if [ -n "$MAR" ]
               then
                        rpm -e mariadb-libs –nodeps && echo “卸载mariadb成功!正式安装MySQL”
fi
 
cd $ML || {
    echo “进入目录失败!!!”
    exit 1
}
 
#wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz &> /dev/null && {
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz && {
tar zxf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  && mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/ && mkdir data && mkdir log && echo “export PATH=$PATH:/usr/local/mysql/bin” » /etc/profile
source /etc/profile && groupadd mysql && useradd -r -g mysql -s /bin/false mysql
}
cat « EOF >/etc/my.cnf

socket=/usr/local/mysql/mysql.sock  

basedir=/usr/local/mysql  
datadir=/usr/local/mysql/data  
pid-file=/usr/local/mysql/data/mysqld.pid  
socket=/usr/local/mysql/mysql.sock  
log_error=/usr/local/mysql/log/mysql.err
EOF
if [ ! -d /etc/my.cnf ]
                then
                        chmod 750 data/ && chown -R mysql . && chgrp -R mysql . && bin/mysqld –initialize –user=mysql && cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && service mysqld start &> /dev/null
                else
                         echo “错误!!!”
fi
if [ $? -eq “0” ]
    then
        echo “MySQL正式安装完成杀青!”
    else
        echo “MySQL安装失败!!!”
        exit 1
fi
#PHP install sccessy
yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel &> /dev/null
if [ $? -eq 0 ]
        then
                echo “依赖包安装成功!!!”
        else
                echo “依赖包安装失败!!!”
fi
cd $ML || {
        echo “进入目录失败!!!”
        exit 1
}
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz &> /dev/null  && {
tar zxf libmcrypt-2.5.7.tar.gz && cd libmcrypt-2.5.7/ && ./configure –prefix=/usr/local/libmcrypt &> /dev/null && make &> /dev/null && make install &> /dev/null
}
if [ $? -eq 0 ]
        then
                echo “Libmcrypt安装成功!”
        else
                echo “Libmcrypt-ERROR!”
        exit 1
fi
# PHP install
cd $ML || {
        echo “进入目录失败!!!”
        exit 1
}
wget http://cn2.php.net/distributions/php-5.6.27.tar.gz &> /dev/null && {
tar zxf php-5.6.27.tar.gz && cd php-5.6.27/ &&  ./configure –prefix=/usr/local/php5.6 –with-mysql=mysqlnd –with-pdo-mysql=mysqlnd –with-mysqli=mysqlnd –with-openssl –enable-fpm –enable-sockets –enable-sysvshm –enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –with-mhash –with-mcrypt=/usr/local/libmcrypt –with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d –with-bz2 –enable-maintainer-zts  &> /dev/null
}
if [ $? -eq 0 ]
            then
                 make &> /dev/null  && make install &> /dev/null  &&  echo “PHP编译安装成功,正在配置请稍等….”
            else
                 echo “PHP安装失败”
fi
cd $PML || {
                echo “进入目录失败!!!”
                exit 1
}
cp php.ini-production /etc/php.ini && {
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && chmod +x /etc/init.d/php-fpm && chkconfig –add php-fpm && chkconfig php-fpm on
}
if [ $? -eq 0 ]
                        then
                                cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf && echo “复制主配置成功”
                        else
                                echo “PHP权限失败,请重试!”
fi
if [ ! -d /usr/local/php5.6/etc/php-fpm.conf ]
        then
                sed -i ’s#;pid = run/php-fpm.pid#pid = run/php-fpm.pid#g’ /usr/local/php5.6/etc/php-fpm.conf
                sed -i ’s/listen = 127.0.0.1:9000/listen = 127.0.0.1:9000/g’ /usr/local/php5.6/etc/php-fpm.conf
                sed -i ’s/pm.max_children = 5/pm.max_children = 300/g’ /usr/local/php5.6/etc/php-fpm.conf
                sed -i ’s/pm.start_servers = 2/pm.start_servers = 20/g’ /usr/local/php5.6/etc/php-fpm.conf
                sed -i ’s/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g’ /usr/local/php5.6/etc/php-fpm.conf
                sed -i ’s/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g’ /usr/local/php5.6/etc/php-fpm.conf
        else
                echo “NONONO”
fi
if [ $? -eq 0 ]
                        then
                                systemctl start php-fpm && echo “PHP启动成功”
                        else
                                echo “启动PHP失败”
fi
#配置nginx解析php
if [ ! -d /usr/local/nginx/conf/nginx.conf ]
        then
               sed -i ’s/index  index.html index.htm;/index  index.php index.html index.htm;/g’ /usr/local/nginx/conf/nginx.conf
               sed -i ’s/#    root           html;/    root           html;/g’ /usr/local/nginx/conf/nginx.conf
               sed -i ’s/#    fastcgi_pass   127.0.0.1:9000;/    fastcgi_pass   127.0.0.1:9000;/g’ /usr/local/nginx/conf/nginx.conf
               sed -i ’s/#    fastcgi_index  index.php;/    fastcgi_index  index.php;/g’ /usr/local/nginx/conf/nginx.conf
               sed -i ’s*#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*g’ /usr/local/nginx/conf/nginx.conf
               sed -i ’s/#    include        fastcgi_params;/    include        fastcgi.conf;/g’ /usr/local/nginx/conf/nginx.conf
               sed -i ‘71d’ /usr/local/nginx/conf/nginx.conf && sed -i ‘N;70a}’ /usr/local/nginx/conf/nginx.conf
               sed -i ‘65d’ /usr/local/nginx/conf/nginx.conf && sed -i ‘N;64alocation ~ \.php

nbsp;{’ /usr/local/nginx/conf/nginx.conf
        else
               echo “解析PHP失败!!!”
fi
touch /usr/local/nginx/html/phptest.php
cat « EOF >/usr/local/nginx/html/phptest.php

EOF
if [ ! -d /usr/local/nginx/html/phptest.php ]
    then
        nginx -s reload && systemctl restart php-fpm
    else
        echo “测试目录文件失败”
fi
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  &> /dev/null && yum install -y sl &> /dev/null
sl
if [ $? -eq 0 ]
        then
                echo “LNMP安装成功,请您访问http://$ADDR/phptest.php”
        else
                echo “安装失败”
fi
if [ $? -eq 0 ]
    then
        echo “LNMP安装成功,请您访问http://$ADDR/phptest.php”
    else
        echo “安装失败”
fi
###################################################################################################This is a lnmp-install~
以上为lnmp环境的搭建,不要准备包,全部在线下载,整个过程最多30分钟,这个只是基本的lnmp环境

如果说要安装zabbix4.0的话还需要满足他的先决条件,在这里我们一步步的来,遇到阻挡了再去安装。

 下面开始安装zabbix4.0

软件包下载地址:https://www.zabbix.com/download_sources

解压软件包:

yum install -y net-snmp-devel
tar zxf zabbix-4.0.0.tar.gz
cd zabbix-4.0.0
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

在这里有可能会发生报错:

现象1:

configure: error: Not found mysqlclient library

解决:将编译时的–with-mysql后面跟上数据库的安装路径

1 make && make install

到这里安装成功,下面开始配置各项配置文件

1 vim /usr/local/zabbix/etc/zabbix_server.conf
2 DBHost=localhost #默认注释掉了,直接取消注释即可
3 DBName=zabbix #数据库名字
4 DBUser=zabbix #默认是root,我们授权的用户是zabbix
5 DBPassword=zabbix #密码我们授权的也是zabbix

下面是数据库的导入与授权操作

1.先登录数据库

在这里也许你会不知道数据库该怎么登录,因为你并不知道数据库密码

初始密码获取方法: cat /usr/local/mysql/log/mysql.err | grep password

黄色框里面的就是数据库的初始密码了

登录数据库以后必须更改初密码,否则无法进行建库等操作

更改密码:

1 use mysql;
2 update user set password=password('mysql') where user='root';
3 flush privileges;
4 create database zabbix;
5 grant all on zabbix.* to zabbix@'localhost' identified by 'zabbixmysql';
6 flush privileges;

接下来是导入数据库:

1 cd /usr/src/zabbix-4.0.0
2 mysql -uzabbix -pzabbixmysql zabbix < database/mysql/schema.sql
3 mysql -uzabbix -pzabbixmysql zabbix < database/mysql/images.sql
4 mysql -uzabbix -pzabbixmysql zabbix < database/mysql/data.sql

<p>
  下面我们可以写一个数据库连通性的测试页面放到nginx的html目录下:
</p>

<p>
  <!-- /wp:paragraph -->
</p>

<p>
  <!-- wp:shortcode -->
  
  <br /> vim /usr/local/nginx/html/mysqltest.php<br /> <?php

$link=mysql_connect(’localhost’,‘zabbix’,‘zabbix’); if($link) echo "

The database connection was successful!

  <p>
    ";<br /> else echo "
  </p>
  
  <h1>
    The database connection was Fail!!
  </h1>
  
  <p>
    ";<br /> mysql_close();<br /> ?><br /> <!-- /wp:shortcode -->
  </p>
  
  <p>
    <!-- wp:preformatted {"className":"brush:bash;toolbar:false"} -->
  </p>
  
  <pre class="wp-block-preformatted brush:bash;toolbar:false"></pre>

浏览器访问nginx的IP后面加上测试文件文件名出先下面内容则代表连接成功:

接下来就是进入zabbix的web界面了,这时候需要把前端文件copy到nginx的HTML目录下

mkdir /usr/local/nginx/html/zabbix
cd /usr/src/zabbix-4.0.0/frontends/php/
cp * /usr/local/nginx/html/zabbix/

进入web界面:http://ip/zabbix/

下面是安装过程遇到的问题

提示不满足zabbix的先决条件

根据提示去更改php.ini的相关数值,参考上面的先决条件

在这个过程可能会涉及到php模块的安装,可以参考php扩展模块的安装方法安装就能完成

 php扩展模块安装方法:https://www.cnblogs.com/hw226234/p/9777616.html 

本文来自我的个人博客:https://www.cnblogs.com/hw226234/