LNMP环境搭建zabbix
使用LNMP环境搭建zabbix,zabbix服务器远程连接mysql服务器。环境中使用nfs服务器提供存储服务。

Zabbix服务器:nginx-1.18 + PHP-7.4.8
Mysql服务器: mysql-7.4.8
NFS服务器:nfs-utils-2.3.3
系统环境:
[root@nfs01 ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
[root@nfs01 ~]# uname -a
Linux nfs01 4.18.0-147.el8.x86_64 #1 SMP Wed Dec 4 21:51:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@nfs01 ~]#
1. 安装NFS存储服务器
1.1 NFS创建匿名用户
创建共享目录
[root@nfs01 ~]# mkdir /data/{mysql,web,zabbix} -p
[root@nfs01 ~]#
创建nfsnobody用户
[root@nfs01 ~]#useradd -s /sbin/nologin nfsnobody
[root@nfs01 ~]# id nfsnobody
uid=1001(nfsnobody) gid=1001(nfsnobody) groups=1001(nfsnobody)
[root@nfs01 ~]#
创建zabbix用户
[root@nfs01 ~]#useradd -s /sbin/nologin web
[root@nfs01 ~]# id zabbix
uid=1002(zabbix) gid=1002(zabbix) groups=1002(zabbix)
创建mysql用户
[root@nfs01 ~]#useradd -s /sbin/nologin mysql
[root@nfs01 ~]# id mysql
uid=1003(mysql) gid=1003(mysql) groups=1001(mysql)
[root@nfs01 ~]#
修改共享目录权限
[root@nfs01 ~]# chown mysql.mysql /data -R
1.2 配置共享目录
编辑共享目录权限信息,给mysql用户对/data/mysql的权限,给zabbix用户对/data/zabbix的权限。
[root@nfs01 ~]# vim /etc/exports
/data/mysql 172.16.1.31 (rw,root_squash,all_squash,sync,anonuid=1003,anongid=1003)
/data/zabbix 172.16.1.8 (rw,root_squash,all_squash,sync,anonuid=1002,anongid=1002)
1.3 启动nfs服务
启动nfs服务并添加到系统服务
[root@nfs01 ~]# systemctl start rpcbind.service
[root@nfs01 ~]# systemctl enable rpcbind.service
[root@nfs01 ~]# systemctl start nfs-server.service
2. MySql服务器安装配置
1.1 MYSQL挂载存储
创建mysql和nfsnobody匿名用户若匿名用户,如果匿名用户id与nfs上对应的用户id不同则需要修改。
[root@mysql01 ~]# useradd nfsnobody -s /sbin/nologin -M
[root@mysql01 ~]# id nfsnobody
uid=1001(nfsnobody) gid=1001(nfsnobody) groups=1001(nfsnobody)
[root@mysql01 ~]#
[root@nfs01 ~]# useradd mysql -s /sbin/nologin -M
[root@nfs01 ~]# id mysql
uid=1004(mysql) gid=1002(mysql) groups=1002(mysql)
[root@nfs01 ~]# usermod -u 1003 mysql && groupmod -g 1003 mysql
[root@nfs01 ~]# id mysql
uid=1003(mysql) gid=1003(mysql) groups=1003(mysql)
创建挂载目录:
[root@mysql01 ~]# mkdir /share/data/mysql/
挂载nfs存储:
[root@mysql01 ~]# mount -t nfs 92.0.55.51:/data/mysql /share/data/mysql
[root@mysql01 ~]#
设置开启自动挂载:
1.2 二进制安装mysql5.8
安装流程如下:
Step1下载软件
创建下载目录并下载mysql二进制包,可以通过wget下载的方式下载,也可以离线通过lrzsz工具上传至软件下载目录。
mkdir -p /server/tools && cd /server/tools
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
Step2解压软件
通过tar命令解压mysql软件
tar zxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
创建软件安装目录,将解压后的软件移到软件安装目录
mkdir /application
mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql
Step3环境配置
删除mysql原始安装软件
yum remove mariadb-*
创建mysql用户
useradd -s /sbin/nologin mysql
通过id mysql查看id是否与nfs定义的用户一致,不一致则需要改成一致。
设置mysql环境变量
vim /etc/profile
export PATH=/application/mysql/bin:$PATH
source /etc/profile
挂载nfs数据共享目录:
[root@db01 tools]# mount -t nfs 172.16.1.31:/data/mysql /share/data/mysql
添加开启自动挂载:
echo "172.16.1.31:/data/mysql /share/data/mysql nfs default 0 0" >>/etc/fstab
创建数据存储路径并授权
mkdir /share/data /mysql/data
chown -R mysql.mysql /application/mysql/*
chown -R mysql.mysql /share/data/mysql
初始化mysql
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
Step4配置文件修改
创建临时配置文件
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/share/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
Step5创建service方式启动文件
[root@mysql01 mysql]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@mysql01 mysql]# service mysqld restart
ERROR! MySQL server PID file could not be found!
Starting MySQL.Logging to '/data/mysql/data/mysql01.err'.
SUCCESS!
Step6创建service方式启动文件
vim /lib/systemd/system/mysql.service
文件内容:
[Unit]
Description=mysql
After=network.target
[Service]
Type=forking
ExecStart=/application/mysql/support-files/mysql.server start
ExecStop=/application/mysql/support-files/mysql.server stop
ExecRestart=/application/mysql/support-files/mysql.server restart
ExecReload=/application/mysql/support-files/mysql.server reload
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Step7修改mysql密码
关闭数据库
/etc/init.d/mysqld stop
启动到数据库维护模式
mysqld_safe --skip-grant-tables --skip-networking &
登录并修改mysql密码
#mysql
mysql> alter user root@'localhost' identified by '123456';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '1';
mysql> flush privileges;
报错及解决方案:
错误1:“libncurses.so.5: cannot open shared object file: No such file or directory”
[root@db01 tools]# yum install libncurses* -y
3. 编译安装nginx
step1 依赖包安装
yum install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-devel pcre-devel -y
step2 软件下载
进入软件下载目录并下载nginx软件
[root@zabbix ~]# mkdir /server/tools -p
[root@zabbix ~]# cd /server/tools/
[root@zabbix tools]#wget http://nginx.org/download/nginx-1.18.0.tar.gz
Step3 软件编译安装
[root@zabbix ~]#./configure --prefix=/application/nginx-1.18 --with-http_ssl_module --with-http_stub_status_module --with-pcre
[root@zabbix ~]#make && make install
Step4 设置nginx为系统服务
[root@zabbix ~]# vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/application/nginx-1.18/sbin/nginx
ExecReload=/application/nginx-1.18/sbin/nginx -s reload
ExecStop=/application/nginx-1.18/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Step5 启动Nginx软件
[root@zabbix ~]#systemctl start nginx.service
客户端访问http://172.16.1.8 测试nginx安装是否成功
Step6 设置nginx开机自启
[root@zabbix ~]#systemctl enable nginx.service
4. 安装PHP
Step1 安装php依赖包
yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel linzip-devel -y
若提示yum中没有可用的软件包libmcrypt和libmcrypt-devel,则需要手动编译安装,可以先在windows宿主主机中前往libmcrypt官网下载然后使用rz指令将包上传至centos8进行编译安装
Step2 下载php包并解压
在windows上前往php官网下载php-7.4.8包,然后使用rz指令将下载好的php安装包上传到centos8上,解压:
[root@zabbix ~]# cd /server/tools
[root@ tools]# tar -zxvf php-7.4.8.tar.gz
Step3 编译安装
将php安装到/application/php/7.4.8目录,编译时将用户和用户组设置为zabbix
[root@ tools]# cd php-7.4.8
[root@ php-7.4.8]# ./configure --prefix=/application/php-7.4.8 \
--with-config-file-path=/application/php-7.4.8/etc \
--with-fpm-user=zabbix \
--with-fpm-group=zabbix \
--enable-fpm \
--enable-opcache \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd-compression-support \
--with-iconv-dir \
--with-zlib \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-ftp \
--enable-gd \
--enable-gd-jis-conv \
--with-jpeg \
--with-freetype \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--with-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--with-pear \
--enable-maintainer-zts \
--with-ldap=shared \
--without-gdbm
注意:--with-mcrypt参数指定的是libmcrypt的安装目录。Php7不再使用mysql的库来支持mysql的连接,而是启用了mysqlnd来支持,所以php7的编译已经不再使用--with-mysql参数指定mysql的安装位置了,若想支持mysql,需要设置--enable-mysqlnd、--with-mysqli和--with-pdo-mysql=mysqlnd参数,--with-mysql-sock指定的是编译mysql时-DMYSQL_UNIX_ADDR参数指定的文件
[root@ php-7.4.8~]# make(此过程需花费大概20分钟)
[root@ php-7.4.8~]# make install
创建软连接
[root@ php-7.4.8~]# ln -s /application/php-7.4.8 /application/php
Step4 配置php配置文件
将php包解压目录中的配置文件放置到正确位置(configure命令中的--with-config-file-path设置的位置)
[root@ php-7.4.8]# cp php.ini-development /application/php-7.4.8/etc/php.ini
Step5 创建并设置php-fpm运行账号
设置php-fpm运行账号为zabbix,配置如下:
[root@ etc]# cd /application/php-7.4.8/etc/ php-fpm.d
[root@ php-fpm.d]# cp php-fpm.conf.default php-fpm.conf
[root@ php-fpm.d]# vim www.conf
将user和group设置为zabbix
user=zabbix
group=zabbix
Step6 设置php-fpm为系统服务
[root@ php-fpm.d]# vim /etc/systemd/system/php-fpm.service
文件内容:
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/application/php/sbin/php-fpm
PrivateTmp=True
[Install]
WantedBy=multi-user.target
Step7 设置php-fpm服务开机自启动
[root@ php-fpm.d]# systemctl enable php-fpm.service
Step8 启动php-fpm
[root@ php-fpm.d]# systemctl start php-fpm.service
查看是否启动成功:
ps aux | grep php-fpm
Step9 配置nginx支持php
Nginx.conf配置支持独立conf配置文件
[root@ php-fpm.d]# vim /application/nginx/conf/nginx.conf
添加:include /application/nginx/conf/conf.d/*.conf
添加zabbix.conf配置文件
[root@zabbix ~]# cat /application/nginx/conf/conf.d/zabbix.conf
server {
listen 80;
server_name zabbix.daming.com;
#access_log /share/data/zabbix/logs/access.log main;
index index.php index.html index.html;
root /share/data/zabbix/html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffer_size 32k;
fastcgi_buffers 10240 32k;
fastcgi_param SCRIPT_FILENAME /share/data/zabbix/html$fastcgi_script_name;
include fastcgi_params;
}
}
[root@zabbix ~]#
Step10 客户端测试php关联是否成功
重启nginx服务
[root@zabbix conf]# /application/nginx/sbin/nginx -s reload
添加测试页面,客户端访问测试
[root@zabbix conf]# cat /share/data/zabbix/html/test.php
<?php
phpinfo();
?>
[root@zabbix conf]#
客户端测试

PHP安装过程错误及处理方案:
报错1:Package 'libxml-2.0', required by 'virtual:world', not found
解决:
yum install libxml2-devel
报错2:Package 'krb5', required by 'virtual:world', not found
解决:
yum install krb5-devel
报错3:Package 'openssl', required by 'virtual:world', not found
解决:
yum install openssl-devel
报错4:Package 'sqlite3', required by 'virtual:world', not found
解决:
yum install sqlite-devel
报错5:Package 'libcurl', required by 'virtual:world', not found
解决:
yum install libcurl-devel
报错6:Package 'oniguruma', required by 'virtual:world', not found
解决:
参见: https://www.cnblogs.com/architectforest/p/12433640.html解决方案
yum install autoconf automake libtool
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
tar -zxvf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4/
./autogen.sh && ./configure --prefix=/usr
make && make install
报错7:Package 'libxslt', required by 'virtual:world', not found
解决:
yum install libxslt-devel
报错8:Package 'libjpeg', required by 'virtual:world', not found
解决:
yum install libjpeg-devel
报错9:Package 'libzip', required by 'virtual:world', not found
解决:
yum install libzip-devel
报错10:configure: error: Please reinstall the BZip2 distribution
解决:
yum -y install bzip2-devel
报错11:Package 'libpng', required by 'virtual:world', not found
解决:
yum install libpng-devel
报错12:Package 'freetype2', required by 'virtual:world', not found
解决:
yum install freetype-devel
报错13:Package 'icu-uc', required by 'virtual:world', not found
Package 'icu-io', required by 'virtual:world', not found
Package 'icu-i18n', required by 'virtual:world', not found
解决:
yum install libicu-devel
wget https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-src.tgz
tar -xf icu4c-65_1-src.tgz
cd icu/
./configure --prefix=/usr
make && make install
报错14: configure: error: Cannot find ldap.h
解决:yum install openldap
yum install openldap-devel
报错15:“configure: error: Cannot find ldap libraries in /usr/lib.”
解决:cp -frp /usr/lib64/libldap* /usr/lib/
错误16:“make: *** [Makefile:292: sapi/cli/php] Error 1”
解决:
ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/ 后进行要执行make clean后重新编译
5. 安装zabbix
Step1 创建zabbix数据库及用户
在mysql服务器创建zabbix用户和zabbix数据库并授权zabbix服务器有权限访问。
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@‘172.16.1.%’identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@'172.16.1.%';
mysql> quit;
Step2 导入zabbix数据库
导入初始架构和数据,系统将提示您输入新创建的密码
[root@zabbix ~]# mysql -uzabbix -pzabbix -h 172.16.1.51 zabbix < /server/tools/zabbix-5.0.2/database/mysql/schema.sql
[root@zabbix ~]# mysql -uzabbix -pzabbix -h 172.16.1.51 zabbix < /server/tools/zabbix-5.0.2/database/mysql/images.sql
[root@zabbix ~]# mysql -uzabbix -pzabbix -h 172.16.1.51 zabbix < /server/tools/zabbix-5.0.2/database/mysql/data.sql
Step3 zabbix编译安装
在源码目录下执行configure
[root@blog zabbix-5.0.0]# ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-prefix=/application/zabbix-5.0
安装
[root@blog zabbix-5.0]# make install
configure时报错的解决:
报错1:configure: error: MySQL library not found
解决:[root@blog zabbix-5.0.0]# dnf install mysql-devel
报错2:configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
解决:[root@blog zabbix-5.0.0]# dnf install -y net-snmp-devel
报错3:configure: error: Unable to use libevent (libevent check failed)
解决:[root@blog zabbix-5.0.0]# dnf install libevent-devel -y
报错4:configure: error: Unable to use libpcre (libpcre check failed)
解决:[root@blog zabbix-5.0.0]# dnf -y install pcre*
Step4 查看安装结果
查看zabbix_server的版本
[root@zabbix zabbix-5.0.2]# /application/zabbix-5.0/sbin/zabbix_server --version
zabbix_server (Zabbix) 5.0.2
Revision 352ca05870 13 July 2020, compilation time: Jul 25 2020 22:14:42
Copyright (C) 2020 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.
[root@zabbix zabbix-5.0.2]#
查看zabbix_agentd的版本
[root@zabbix zabbix-5.0.2]# /application/zabbix-5.0/sbin/zabbix_agentd --version
zabbix_agentd (daemon) (Zabbix) 5.0.2
Revision 352ca05870 13 July 2020, compilation time: Jul 25 2020 22:14:42
Copyright (C) 2020 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.
Step5配置zabbix_server
编辑配置文件
[root@blog etc]# vi zabbix_server.conf
修改以下配置文件:
LogFile=/application/zabbix-5.0/logs/zabbix_server.log
DBHost=172.16.1.51
DBName=zabbix
DBUser=zabbix
DBPort=3306
创建日志目录
[root@blog etc]# mkdir /data/zabbix_server/logs
Step6 配置zabbix_agentd
编辑配置文件
[root@blog etc]# vi zabbix_agentd.conf
修改如下配置:
LogFile=/application/zabbix-5.0/logs /zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix Server
创建日志目录:
[root@blog etc]# mkdir /application/zabbix-5.0/logs/
Step7 启动zabbix_server
启动zabbix_server
[root@blog etc]# /usr/local/soft/zabbx-5.0.0/sbin/zabbix_server
启动zabbix_agentd
[root@blog etc]# /usr/local/soft/zabbx-5.0.0/sbin/zabbix_agentd
配置使用systemd管理zabbix-server的服务
[root@blog system]# cat /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=network.target
After=mysqld.service
[Service]
Environment="CONFFILE=/application/zabbix-5.0/etc/zabbix_server.conf"
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/application/zabbix-5.0/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
Step8 配置web界面
将源码包中ui目录下的文件到虚拟主机目录下
[root@ zabbix-5.0.0]# cp -avx /server/tools/zabbix-5.0.2/ui/* /share/data/zabbix/html/
客户端访问zabbix服务url会自动跳转到zabbix配置页面,按照提示安装修改php-ini配置文件即可。
Step9 配置zabbix中文语言环境
系统安装后,web界面不能选择使用中文错误提示如下:

解决方法:手动安装中文语言包:
安装zh_CN语言包
[root@blog include]# dnf install langpacks-zh_CN.noarch
安装glibc-common实现对语言包的识别:
[root@blog include]# dnf install glibc-common
说明;如果已安装过,需要重新安装,用reinstall
[root@blog include]# dnf reinstall glibc-common
测试安装是否成功?
[root@blog dejavu]# locale -a | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
最后刷新web页面就可以配置web语言选择中文


浙公网安备 33010602011771号