LNMP环境构建
本次构建LNMP环境采用源码的方式来进行构建
软件包
下载地址
nginx-1.19.2.tar.gz
mysql
mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
php-7.4.10.tar.gz
https://www.php.net/downloads.php
准备工作
11.准备一台centos 8 的系统 22.提前关闭防火墙以及selinux 33.提前解决相关源码包的依赖问题
防火墙以及selinux的关闭
1[root@localhost ~]# hostnamectl set-hostname zabbix //修改主机名 2[root@localhost ~]# su //输入su 或者base 生效主机名的配置 3[root@zabbix ~]# systemctl stop firewalld //关闭防火墙 4[root@zabbix ~]# systemctl disable firewalld 5Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. 6Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. 7[root@zabbix ~]# vim /etc/selinux/config //修改selinux的配置文件 8...... 9SELINUX=disabled 10...... 11[root@zabbix ~]# setenforce 0 //生效配置
源码编译依赖关系解决
[root@zabbix ~]# yum install gcc gcc-c++ autoconf automake libtool make zlib zlib-devel openssl openssl-devel pcre* pcre-devel -y
Nginx的安装
编译安装过程
1[root@zabbix ~]# mkdir /lnmp //创建一个目录用于存放源码包 2[root@zabbix ~]# cd /lnmp/ 3[root@zabbix lnmp]# wget http://nginx.org/download/nginx-1.19.2.tar.gz //下载Nginx源码包 4[root@zabbix lnmp]# useradd -s /sbin/nologin -M nginx //创建Nginx用户 5[root@zabbix lnmp]# tar -xf nginx-1.19.2.tar.gz //解压源码包 6[root@zabbix lnmp]# cd nginx-1.19.2/ //进入Nginx目录 7[root@zabbix nginx-1.19.2]# ./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-pcre //然后进行源码编译 8[root@zabbix nginx-1.19.2]# mkae -j 2 && make install 9make -j 参数 使用这个参数可以加快编译的效率 10[root@zabbix nginx-1.19.2]# cd /usr/local/nginx/ //编译完成以后,在对应的目录下就会多出如下的内容 11[root@zabbix nginx]# ls 12conf html logs sbin
对Nginx进行配置
1[root@zabbix ~]# /usr/local/nginx/sbin/nginx //启动测试 2[root@zabbix ~]# ss -tan | grep 80 //查看端口是否正常开启 3LISTEN 0 128 0.0.0.0:80 0.0.0.0: 4[root@zabbix ~]# vim /usr/local/nginx/conf/nginx.conf //编辑Nginx的配置文件 5...... 64 user nginx nginx; 743 location / { 8 9 1044 root html; 1145 index index.php index.html index.htm; 1246 } 1365 location ~ \.php$ { 14 15 1666 root html; 1767 fastcgi_pass 127.0.0.1:9000; 1868 fastcgi_index index.php; 1969 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; 2070 include fastcgi_params; 2171 } 2272 23[root@zabbix ~]# /usr/local/nginx/sbin/nginx -t //检测配置文件是否有误 24nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok 25nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful 26[root@zabbix ~]# /usr/local/nginx/sbin/nginx -s reload //重启服务即可
访问测试

mysql的安装
安装过程
1[root@zabbix lnmp]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz //下载mysql对应的软件包 2[root@zabbix lnmp]# tar -xf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ //然后进行解压,解压路径为/usr/local/mysql 3[root@zabbix local]# mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql 4[root@zabbix local]# cd mysql/ //进入数据库的目录会发现很多文件 5[root@zabbix mysql]# ls 6bin include LICENSE man README.router support-files 7docs lib LICENSE.router README share 8[root@zabbix mysql]# mkdir data //创建数据目录 9[root@zabbix mysql]# useradd -s /sbin/nologin -M mysql //创建mysql用户 10[root@zabbix mysql]# chown -R mysql:mysql data/ 把data目录的所属组以及用户都给mysql用户 11[root@zabbix mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data //然后初始化数据库 12...... 132020-09-28T06:36:47.435694Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rf!i!svaS6dh 初始化密码登录数据库用 14[root@zabbix mysql]# cd support-files/ 15[root@zabbix support-files]# cp -a mysql.server /etc/init.d/ //复制mysql的启动脚本到/etc/init.d 目录下 16[root@zabbix support-files]# chmod a+x /etc/init.d/mysql.server //给mysql启动脚本执行权限 17[root@zabbix ~]# /etc/init.d/mysql.server start //启动数据库 18Starting MySQL.Logging to '/usr/local/mysql/data/zabbix.err'. 19... SUCCESS! 20[root@zabbix ~]# ss -tan |grep 3306 //查看端口 21LISTEN 0 70 *:33060 *:* 22LISTEN 0 128 *:3306 *:* 23[root@zabbix ~]# vim /etc/profile //编辑环境变量配置文件 24PATH=$PATH:$HOME/bin:/usr/local/mysql/bin //添加mysql bin目录的位置 25[root@zabbix ~]# source .bash_profile //生效环境变量文件 26[root@zabbix ~]# mysql -uroot -p //启动如果出现如下问题 27mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory 28[root@zabbix ~]# ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5 //执行这一步操作即可 29[root@zabbix ~]# mysql -uroot -p //登录验证 30mysql> alter user 'root'@'localhost' identified by '123'; //修改密码 初始密码太复杂
PHP的安装
依赖包安装
1[root@zabbix ~]# yum -y install gcc gcc-c++ libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libicu-devel freetype-devel openldap-devel openldap openldap-devel php-pear sqlite-devel //解决PHP相关的依赖包 2注:7.0以上的PHP还需要支持两个软件包(默认用yum源来下载下载不了 所以我们先进行源码编译安装) 3 4安装libmcrypt 5ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt 软件包下载地址 6[root@zabbix lnmp]# ll 7libmcrypt-2.5.8.tar.gz //准备这个软件包 8[root@zabbix lnmp]# tar -xf libmcrypt-2.5.8.tar.gz //进行解压操作 9[root@zabbix lnmp]# cd libmcrypt-2.5.8/ 10[root@zabbix libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt //然后进行编译安装 11[root@zabbix libmcrypt-2.5.8]# make && make install //然后进行安装操作 12[root@zabbix local]# vim /etc/ld.so.conf //然后编辑这个配置文件 13...... 14/usr/local/libmcrypt/lib 15/usr/local/mysql/lib 16添加如上两条路径 如果不添加后面操作会有误 17[root@zabbix local]# ldconfig //执行这个生效配置 18[root@zabbix local]# echo "ldconfig" >> /etc/rc.local //把这个命令写入开机自启中 19 20安装oniguruma 21https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz //下载地址 22[root@zabbix lnmp]# wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz //下载源码包 23[root@zabbix lnmp]# tar -xf v6.9.4.tar.gz //解压操作 24[root@zabbix lnmp]# cd oniguruma-6.9.4/ //进入目录 25[root@zabbix oniguruma-6.9.4]# ./autogen.sh && ./configure --prefix=/usr //执行这个命令
PHP的安装过程
1[root@zabbix lnmp]# wget https://www.php.net/distributions/php-7.4.10.tar.gz //下载PHP7.4.10源码包 2[root@zabbix lnmp]# cd php-7.4.10/ 3[root@zabbix php-7.4.10]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype --with-jpeg --with-png-dir --with-zlib --with-libxml=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --enable-gd --enable-mysqlnd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --with-gettext 4 //然后在进行编译安装 5注意 --enable-gd 要写为这个 不能够写完 --with-gd 6[root@zabbix php-7.4.10]# make -j 2 && make install //然后在来进行编译安装即可 7[root@zabbix php-7.4.10]# cp php.ini-development /usr/local/php/php.ini //然后复制配置文件到指定目录下 8[root@zabbix php-7.4.10]# cd /usr/local/php/etc/ 9[root@zabbix etc]# mv php-fpm.conf.default php-fpm.conf 10[root@zabbix etc]# mv php-fpm.d/www.conf.default php-fpm.d/www.conf 11[root@zabbix fpm]# cp -a /lnmp/php-7.4.10/sapi/fpm/ 12init.d.php-fpm.in /etc/init.d/php-fpm 13[root@zabbix fpm]# chmod a+x /etc/init.d/php-fpm 14[root@zabbix ~]# /etc/init.d/php-fpm start 15[root@zabbix ~]# ss -tan | grep 9000 16LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*
测试Nginx能否识别PHP文件
1[root@zabbix ~]# echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php 2[root@zabbix ~]# /usr/local/nginx/sbin/nginx -s reload
访问测试

zabbix监控搭建
本次zabbix采用源码的方式来进行搭建
https://cdn.zabbix.com/zabbix/sources zabbix源码包下载地址
zabbix平台搭建
1[root@zabbix ~]# yum install -y net-snmp-devel libevent libevent-devel //解决相关依赖关系 2[root@zabbix ~]# mkdir zabbix //创建一个zabbix目录用于存放zabbix源码包 3[root@zabbix ~]# cd zabbix/ 4[root@zabbix zabbix]# wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.3.tar.gz //然后下载源码包 5[root@zabbix zabbix]# tar -xf zabbix-5.0.3.tar.gz //解压zabbix 6[root@zabbix zabbix]# cd zabbix-5.0.3 7[root@zabbix zabbix-5.0.3]# useradd -s /sbin/nologin -M zabbix //创建zabbix用户 8[root@zabbix zabbix-5.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-mysql //然后进行编译安装 9[root@zabbix zabbix-5.0.3]# make install //最后执行安装即可
导入数据库
1[root@zabbix zabbix-5.0.3]# mysql -uroot -p //登录数据库 2mysql> create database zabbix character set utf8 collate utf8_bin; //创建一个zabbix数据库 3Query OK, 1 row affected, 2 warnings (0.05 sec) 4mysql> create user 'zabbix'@'localhost' identified by 'zabbix'; //创建一个用户为zabbix 5Query OK, 0 rows affected (0.07 sec) 6mysql> grant all privileges on *.* to 'zabbix'@'localhost' with grant option; //赋权操作 7Query OK, 0 rows affected (0.08 sec) 8mysql> flush privileges; 9Query OK, 0 rows affected (0.01 sec) 10 11导入数据库操作如下: 12[root@zabbix zabbix-5.0.3]# mysql -uzabbix -p zabbix < database/mysql/schema.sql 13Enter password: 14[root@zabbix zabbix-5.0.3]# mysql -uzabbix -p zabbix < database/mysql/images.sql 15Enter password: 16[root@zabbix zabbix-5.0.3]# mysql -uzabbix -p zabbix < database/mysql/data.sql 17Enter password: 18[root@zabbix zabbix-5.0.3]#
配置zabbix-server端
1[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf //编辑zabbix_server.conf 285 DBHost=localhost //本地系统的名称 394 DBName=zabbix //数据库的名称 4110 DBUser=zabbix //数据库用户名 5118 DBPassword=zabbix //数据库用户名的密码 6[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf //编辑zabbix_agent.conf 7113 Server=127.0.0.1 //zabbix_server 服务器的地址 8154 ServerActive=127.0.0.1 9165 Hostname=Zabbix server 10 11以上配置完成以后我们就可以启动zabbix_server 服务器了 12[root@zabbix ~]# /usr/local/zabbix/sbin/zabbix_server 13[root@zabbix ~]# netstat -lnupt | grep zabbix 14tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 94031/zabbix_server
zabbix优化配置
1[root@zabbix ~]# cd zabbix/zabbix-5.0.3/misc/init.d/fedora/core //进入这个目录 2[root@zabbix core]# ls 3zabbix_agentd zabbix_server 4[root@zabbix core]# cp -a * /etc/init.d/ //拷贝里面的文件到启动目录下 5[root@zabbix core]# vim /etc/init.d/zabbix_server //编辑zabbix_server 启动脚本 6 22 BASEDIR=/usr/local/zabbix //编辑这一行 7[root@zabbix core]# vim /etc/init.d/zabbix_agentd 8 22 BASEDIR=/usr/local/zabbix //编辑这一行 9启动测试: 10[root@zabbix ~]# /etc/init.d/zabbix_server restart 11Reloading systemd: [ 确定 ] 12正在重启 zabbix_server(通过 systemctl): [ 确定 ] 13[root@zabbix ~]# /etc/init.d/zabbix_agentd start 14正在启动 zabbix_agentd (via systemctl): [ 确定 ] 15[root@zabbix ~]# netstat -lnupt | grep zabbix 16tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 103587/zabbix_agent 17tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 94031/zabbix_server
配置zabbix浏览器登录界面
[root@zabbix ~]# cp -r zabbix/zabbix-5.0.3/ui/* /usr/local/nginx/html/ //复制源码包目录下ui的所有内容到Nginx的发布目录中
登录测试

然后我们点击下一步

1在以上画红框框的地方出现了一些问题,现在我们来进行解决: 2[root@zabbix ~]# vim /usr/local/php/php.ini //编辑PHP的配置文件 32 always_populate_raw_post_data = -1 //这两个是没有的自行添加 43 mysqli.default_socket = /tmp/mysql.sock 5386 max_execution_time = 300 6396 max_input_time = 300 7690 post_max_size = 16M 8958 date.timezone = Asia/Shanghai 9[root@zabbix ~]# /etc/init.d/php-fpm restart //重启php-fpm 服务即可
如下,如果又出现以下警告

1针对以上警告,为了不影响后面的功能,我们现在来进行解决操作 2[root@zabbix ~]# cd /lnmp/php-7.4.10/ext/ldap/ //进入PHP源码编译目录 3[root@zabbix ldap]# /usr/local/php/bin/phpize 4Configuring for: 5PHP Api Version: 20190902 6Zend Module Api No: 20190902 7Zend Extension Api No: 320190902 8[root@zabbix ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap //如果报错如下错误 9configure: error: Cannot find ldap libraries in /usr/lib. 10解决方案: 11[root@zabbix ldap]# cp -r /usr/lib64/libldap* /usr/lib/ //执行这一项即可 然后在来重新编译安装 12[root@zabbix ldap]# make && make install //成功后执行这个即可 13Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ 14 15然后编辑php.ini文件写入如下内容即可: 16[root@zabbix ~]# vim /usr/local/php/php.ini 17extension = ldap.so 18[root@zabbix ~]# /etc/init.d/php-fpm restart /重启PHP服务 19[root@zabbix ~]# /usr/local/nginx/sbin/nginx -s reload //重启Nginx服务
然后点击下一步如下图(输入zabbix 以及zabbix的密码)

然后以下操作默认,点击下一步

然后点击下一步

报了如下的错误
1我们点击红色箭头的位置,然后会下载一个,我们把这个文件上传到Linux服务器上/usr/local/nginx/html/conf 2[root@zabbix /]# ls 3 zabbix.conf.php 4[root@zabbix /]# mv zabbix.conf.php /usr/local/nginx/html/conf 5

然后点击finish即可

登录界面如下图

登录界面如下:

至此,LNMP环境搭建zabbix监控就此完成了,过程当中遇到的问题也是非常多。如有问题,提出加以改进,是一位还在努力中的小白网工