前言

环境: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,所以还需要修改这个文件,我靠:

在这里插入图片描述
修改完之后果然能正常访问了,我靠靠
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐