系统拓扑:
zabbix服务器环境:
系统版本:Red Hat Enterprise Linux Server release 6.5 (Santiago)
nginx版本: nginx-0.7.69
mysql版本:mysql Ver 14.14 Distrib 5.7.18
php版本:PHP 5.6.30
概述:平常搭建的时候可能只是使用了系统自带的lamp版本,这次lnmp环境使用的基本都是最新版本的,就是为了多踩坑。其中php出现的问题最多。
一. lnmp安装
1.1 nginx安装与配置
nginx的源码安装没什么说的,因为主要就是web服务器,请求的处理都是扔给后面的php,所以用最基本的配置即可。
./configure --prefix=/usr/local/nginx --with-http_stub_status_module
创建nginx用户
[root@localhost ~]# useradd -s /sbin/nologin nginx
修改nginx配置文件使其可以支持php
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
1.2 mysql的安装与配置
mysql使用官网发布的5.7.18版本的rpm包安装
mysql5.7.18下载地址
我选择mysql全家桶(bundle包)下载。并将除了带有embedded(嵌入式)的包直接使用yum安装。
1.3 php安装与配置
php5.6.30下载地址
源码编译安装php
./configure --prefix=/usr/local/php56 --with-config-file-path=/usr/local/php56/etc \
--enable-inline-optimization --disable-debug --disable-rpath --enable-shared \
--enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx \
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--enable-bcmath -enable-mbstring --enable-sockets --with-png-dir \
--with-jpeg-dir --with-freetype-dir --with-gettext \
在一般的环境下(我的是centos6.5最小安装),需要解决的依赖如下:
libxml2-devel
解决上面的依赖后就可以configure成功,表现如下:
Thank you for using PHP.
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/fpm/php-fpm.conf
config.status: creating sapi/fpm/init.d.php-fpm
config.status: creating sapi/fpm/php-fpm.service
config.status: creating sapi/fpm/php-fpm.8
config.status: creating sapi/fpm/status.html
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
接下来直接make && make install
安装完成后开始配置
[root@localhost etc]# ls
pear.conf php-fpm.conf.default
[root@localhost etc]# pwd
/usr/local/php56/etc
由于是源码安装,我们的配置目录是我们自己规定的,不是正常情况下的/etc/php,但是发现上面的配置目录中少了一些东西,比如php.ini,这时切记,php的源码目录是个百宝箱,一会大家也会看出,一旦发现什么东西没有,第一时间先看下源码目录。
现在确定我们缺的配置文件:
php.ini #php的主配置文件
php-fpm.conf #php的fastcgi配置文件,因为我们是要用php作为处理web请求的一个服务,还使用以前的cgi脚本效率就太低,至于这个fpm是什么,下面有一篇文章很好的解释了这个问题
从源码包中将配置文件复制到我们指定的配置目录。
[root@localhost php-5.6.30]# cp php.ini-development /usr/local/php56/etc/
[root@localhost php-5.6.30]# cp sapi/fpm/php-fpm.conf /usr/local/php56/etc/
添加php-fpm启动脚本
[root@localhost php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-5.6.30]# chmod a+x /etc/init.d/php-fpm
将php的bin目录添加到环境变量中
启动php-fpm,并测试php是否正常
[root@localhost php-5.6.30]# /etc/init.d/php-fpm status
php-fpm (pid 12760) is running...
[root@localhost php-5.6.30]# php -v
PHP 5.6.30 (cli) (built: Apr 17 2017 17:02:57)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
到此为止基础的lnmp配置就结束了。下面开始与zabbix相关的配置
二. zabbix3.2对php的配置需求
我们先从zabbix安装时候的界面看下他对php的要求
这是我经过反复修改已经解决了全部的依赖,但是如果你只是按照上面的方式配置了php,那会有很多令人恼火的问题等着你。
按照上面配置php在安装zabbix时候会与到的配置问题:
配置文件不满足
PHP option "post_max_size" #php默认安装是8M,我们需要16M
PHP option "max_execution_time"#默认30,我们需要300
PHP option "max_input_time" #默认60,我们需要300
PHP option "always_populate_raw_post_data" #如过你的php版本是5.6以上的一定要将这个功能关闭,方法是让这个值为-1'always_populate_raw_post_data = -1'
缺少的模块
#这里我们通过源码包的方式安装gd图形模块,而且需要phpize的帮助
PHP gd
PHP gd PNG support
PHP gd JPEG support
PHP gd FreeType support
我们发现系统中没有gd模块的时候,首先肯定会想着去下载,但是我们刚才说过,php的源码目录是个百宝箱,我们先去源码目录看看。
[root@localhost gd]# pwd
/root/php-5.6.30/ext/gd
在源码目录下确实有这个gd的源码,但是查看后发现没有configure文件。这怎么安装?
[root@localhost gd]# ls
config.m4 CREDITS gdcache.c gd_compat.c gd_ctx.c libgd tests
config.w32 gd.c gdcache.h gd_compat.h gd.dsp php_gd.h
现在phpize就有用处了,他就是专门来为php的模块生成环境的。
[root@localhost gd]# phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@localhost gd]# ls
acinclude.m4 config.h.in config.w32 gd_compat.c libgd php_gd.h
aclocal.m4 config.m4 CREDITS gd_compat.h ltmain.sh run-tests.php
autom4te.cache config.sub gd.c gd_ctx.c Makefile.global tests
build configure gdcache.c gd.dsp missing
config.guess configure.in gdcache.h install-sh mkinstalldirs
现在有了conifgure文件,就可以进行安装了。
./configure --with-php-config=/usr/local/php56/bin/php-config --with-png-dir --with-freetype-dir --with-jpeg-dir --with-gd
但在这前提要先安装好系统的jpeg,png等库。使用yum命令安装即可。
[root@localhost gd]# yum install libjpeg-devel -y
[root@localhost gd]# yum install libpng-devel -y
[root@localhost gd]# yum install freetype-devel.x86_64 -y
configure成功后执行make && make install 即可。
[root@localhost gd]# make install
Installing shared extensions: /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/
Installing header files: /usr/local/php56/include/php/
在make install最后看到上面的提示,可以确定我们的gd库安装在了/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/目录下。
重启php-fpm,看下gd库是否安装成功。
[root@localhost etc]# php -m | grep gd
发现gd库并没有安装,所以需要在php.ini文件中添加模块所在路径。
extension_dir = "/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/"
extension=gd.so
修改之后重启php。
再查看一下模块是否已经加载成功。
[root@localhost etc]# php -m | grep gd
gd
经过以上的配置你的lnmp环境就可以适合zabbix的部署了。
三. zabbix的安装
zabbix3.2我们使用的是官网上rpm包进行安装,官网上有很详尽的文档
zabbix3.2官方文档
官方rpm包下载地址
上面有很多rpm包可以去下载,但是并不是所有都要下载,最后我们选择下载的包如下所示。
[root@zabbix1 zabbix3]# ls | grep zabbix
zabbix-agent-3.2.0-1.el6.x86_64.rpm
zabbix-release-3.2-1.el6.noarch.rpm
zabbix-server-mysql-3.2.0-1.el6.x86_64.rpm
zabbix-web-3.2.0-1.el6.noarch.rpm
zabbix-web-mysql-3.2.0-1.el6.noarch.rpm
依赖包如下:
[root@zabbix1 zabbix3]# ls | grep -v zabbix
fping-2.4b2-16.el6.x86_64.rpm
iksemel-1.4-2.el6.x86_64.rpm
安装过程很简单,只要yum就可以了,但是安装好后,我们还要生成zabbix的数据库,也就是说需要一个sql文件,用源码包安装过的同学一定使用过,但在rpm包中很难找到,最后通过rpm命令才发现
[root@zabbix1 zabbix3]# rpm -ql zabbix-server-mysql| grep sql
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.2.0
/usr/share/doc/zabbix-server-mysql-3.2.0/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.2.0/COPYING
/usr/share/doc/zabbix-server-mysql-3.2.0/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.2.0/NEWS
/usr/share/doc/zabbix-server-mysql-3.2.0/README
/usr/share/doc/zabbix-server-mysql-3.2.0/create.sql.gz
最后一个gz结尾的文件就是我们需要的数据库备份文件。
通过mysql命令直接导入就安装好了zabbix的数据库。