Zabbix的安装与部署---问题处理(php65.6.28 mysqli 报错误 处理)

1)php65.6.28  mysqli  报错误 处理

http://www.xiaochengfu.com/index.php/index/detail/aid/92.html

2)linux下php添加mysqli扩展mysqli_api.lo错误

http://jingyan.baidu.com/article/a3f121e4cb684afc9152bb73.htmljavascript

1、前期准备

  • MySQL的安装与配置
    具体步骤参见我以前的博客:(二)MySQL的安装与配置
  • 为了配置Zabbix前端,我须要Nginx和PHP的支持,具体步骤参见:Nginx的安装与配置以及如何支持PHP。可是由于安装配置Zabbix前端,所以安装PHP须要加入特定选项,所以PHP的具体安装方法将在文章末尾根据排错过程给出。
  • 依赖包安装php

    # yum -y install net-snmp net-snmp-devel perl-DBI php-gd php-xml php-bcmath fping OpenIPMI-devel php-mbstring

    二. 安装zabbix

  • 1.将源码中的zabbix-3.0.4/database/mysql 下的sql文件导入zabbix数据库(必须按照如下顺序到入)html

首先建立名为 zabbix 的数据库
mysql> create database zabbix default character set utf8; # tar -xvzf zabbix-3.0.4.tar.gz # cd zabbix-3.0.4 # /usr/local/mysql/bin/mysql -u root -h localhost zabbix < schema.sql # /usr/local/mysql/bin/mysql -u root -h localhost zabbix < images.sql # /usr/local/mysql/bin/mysql -u root -h localhost zabbix < data.sql
  • 2.建立用户和组
# groupadd zabbix # useradd -g zabbix zabbix
  • 3.安装zabbix服务端(服务端自己也要监控,所以同时安装agent)
# ./configure --prefix=/usr/local/zabbix/ --enable-server  --enable-agent --with-mysql --with-net-snmp
安装zabbix提示:
checking for net-snmp-config... no configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config 解决方案: # yum install net-snmp-devel -y
  • 4.修改配置文件

ListenPort=10051
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=root #我直接用root用户做为zabbix数据库的用户,且没有设置密码
ListenIP=127.0.0.1前端

  • 5.启动zabbix
# /usr/local/zabbix/sbin/zabbix_server 启动时报错: Starting zabbix_server: /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory 解决方案: # locate libmysqlclient.so.18 # echo "/usr/local/mysql/lib" >> /etc/ld.so.conf # ldconfig

3、配置 web界面支持

若要web界面的支持,则须要Nginx(须要php-fpm)和PHP的支持,安装方法参见文章开头的传送链接。Nginx和PHP安装完成后,进行以下操做。java

  • 1.将zabbix-3.0.4/frontends/php中的全部文件拷贝进入web服务的root目录下中的zabbix中,此处我用的是Nginx做为web服务器。
# cd zabbix-3.0.4/frontends/php # mkdir /usr/local/nginx/html/zabbix/ # cp -a . /usr/local/nginx/html/zabbix/ 启动nginx和php-fpm # /usr/local/nginx/sbin/nginx # /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini

在安装PHP时,必定要看清Zabbix的官方文档上给出的 Requirements,不然在编译安装PHP时会漏掉不少支持组件的信息,致使没法顺利的在web界面配置Zabbix前端。mysql

如下是我所踩过的坑:linux

  • 错误1
相似出现:PHP option "post_max_size" 8M 16M Fail 等 须要更改php.ini文件,可是在安装PHP时须要指定php的配置文件的存放位置,如个人指定为: --with-config-file-path=/usr/local/php/etc 而后将源码里面的php.ini-production 拷贝到/usr/local/php/etc/php.ini 注意:在编译安装完成php后,配置完成启动php-fpm时,直接执行/usr/local/php/sbin/php-fpm 虽然可 以启动,可是这样的话,php.ini文件是没有生效的,这就会致使即便你更改了php.ini里面的参数,Zabbix前端检测依然没法经过。解决方法是按照如下方式启动php-fpm: # /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini
  • 错误2
PHP bcmath    off        Fail                --enable-bcmath PHP mbstring off Fail --enable-mbstring PHP sockets off Fail --enable-sockets等 这些错误只要在安装PHP时加上对应选项便可,如:--enable-bcmath
  • 错误3
PHP databases support    off        Fail    --with-mysql=/usr/local/mysql 解决方案: 这种错误是提示不支持MySQL,可是咱们在编译安装时是指定了的,为什么出错了?由于更新后的PHP版本,如今须要mysqli的支持才能行,mysqli是对mysql函数(注意这里指的是PHP中的函数)的优化,所以咱们须要安装进入PHP源码中的mysqli目录下就可安装,方法以下: # cd php-5.6.25/ext/mysqli/ # phpize # ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config # make && make install # cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226 # ls 若是有mysqli.so文件,就说名安装好了。 接着编辑php配置文件 /usr/local/php/etc/php.ini,加入extension=mysqli.so(能够写全路径) 在make && make install时出现: /root/soft/php-5.6.25/ext/mysqli/mysqli_api.c:36:47: error: ext/mysqlnd/mysql_float_to_double.h: No such file or directory make: *** [mysqli_api.lo] Error 1 解决方法:编辑mysqli_api.c,而后注释掉mysql_float_to_double.h这个头文件(讲真,我不知道这样作会有什么后果)
  • 系列错误4
PHP gd JPEG support    off        Fail        --with-jpeg-dir=DIR GD: Set the path to libjpeg install prefix 解决方案:编译安装jpeg # wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz # mkdir /usr/local/jpeg # ./configure --prefix=/usr/local/jpeg --enable-shared PHP gd PNG support off Fail --with-png-dir=DIR GD: Set the path to libpng install prefix 解决方案:编译安装libpng # wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.24.tar.gz?download # mkdir /usr/local/libpng # ./configure --prefix=/usr/local/libpng 要编译 GD 库,须要libpng 和 libjpeg(前面已经安装了) PHP gd unknown 2.0 Fail --with-gd=DIR Include GD support. DIR is the GD library base install directory BUNDLED 解决方案:进入PHP源码的ext/gd目录下编译安装GD库 # yum install gd-devel # cd php-5.6.8/ext/gd # phpize # ./configure --with-jpeg-dir=/usr/local/jpeg --with-php-config=/usr/local/php/bin/php-config 提示:configure: error: png.h not found. 解决:# yum install libpng-devel # make clean # make install 我在编译php时执行源码安装的 gd(/usr/local/gd)目录,编译就不能经过。直接加--with-gd就行(我怀疑是我用yum安装了 gd-devel的缘故) PHP gd FreeType support off Fail --with-freetype-dir=DIR GD: Set the path to FreeType 2 install prefix 解决方案:编译安装FreeType # wget https://sourceforge.net/projects/freetype/files/freetype2/2.6.5/freetype-2.6.5.tar.gz/download # mkdir /usr/local/freetype # ./configure --prefix=/usr/local/freetype/ # make && make install PHP gettext off Warning --with-gettext=DIR Include GNU gettext support 解决方案: # wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.tar.gz # mkdir /usr/local/gettext # ./configure --prefix=/usr/local/gettext

所以为了支持Zabbix前端,编译安装PHP时须要如下选项:nginx

--prefix=/usr/local/php \ --with-mysql=/usr/local/mysql \ --enable-fastcgi \ --enable-fpm \ --with-config-file-path=/usr/local/php/etc \ -with-zlib=/usr/local/zlib \ --enable-bcmath \ --enable-mbstring \ --enable-sockets \ --with-gettext=/usr/local/gettext \ --with-jpeg-dir=/usr/local/jpeg \ --with-png-dir=/usr/local/libpng \ --with-freetype-dir=/usr/include/freetype2/freetype \ --with-gd

注意:web



文/简单超人(简书做者) 原文连接:http://www.jianshu.com/p/68016c9006f4 著做权归做者全部,转载请联系做者得到受权,并标注“简书做者”。
相关文章
相关标签/搜索