设为首页 收藏本站
查看: 538|回复: 0

[经验分享] 服务cacti,独立编译php模块,避开重新编译php

[复制链接]

尚未签到

发表于 2018-12-20 09:05:50 | 显示全部楼层 |阅读模式
  昨天在学习了cacti的安装与配置,但是cacti在调用rrdtool的绘图功能时,需要编译php时加上 --with-snmp=DIR  这一选项,由于笔者之前搭建的LNMP时在编译php时并没有加上这一选项,所以很遗憾的是不能显示将监控信息以图像的方式明晰的呈现出来由于需要将监控信息以图像方式显示出来,php必须编译时使用 --with-snmp=DIR  这一选项,而如果没有添加该选项,是不是就要重新编译php呢,答案:不是。

以下就是笔者解决这一问题的过程,希望能帮到同样遇到这样问题的朋友们。

之前工作:安装net-snmp,net-snmp-devel,rrdtool,rrdtool-perl
启动snmpd
编辑/etc/snmp/snmpd.conf
解压cacti-0.8.8
创建系统cacti用户
编辑cacti目录中include/config.php文件。
创建数据库,创建数据库用户

一切准备就绪,打开网页访问,显示错误如下:

Error
The following PHP extensions are missing:
    * sockets
Please install those PHP extensions and retry


到网上一搜索,原因是在编译php时没有配置socket支持
解决方法一:重新编译php
解决方法二:单独编译socket模块,之后手动为php添加此模块。
  
1.下载到与当前php版本相符的php源码包,将其解压,这里笔者使用的是 php-5.3.10进入php源码文件下的ext/目录,你会发现里面有很多同名的一些目录,找到sockets目录

2.进入sockets目录
#cd sockets
3.生成configure文件
#/usr/local/phpnginx/bin/phpize
4.编译安装sockets模块
#./configure --enable-sockets --with-php-config=/usr/local/phpnginx/bin/php-config
#make

最后输出以下信息:


#make install


将这个路径复制下来 /usr/local/phpnginx/lib/php/extensions/no-debug-non-zts-20090626/
5.手动添加模块
#vim /etc/phpnginx/php.ini
搜索extension,添加扩展模块引用,添加
extension=/usr/local/phpnginx/lib/php/extensions/no-debug-non-zts-20090626/sockets.so
6.检查php.ini配置文件是否正确合法
#php -v
7.重新启动php-fpm
#service php-fpm restart

访问网页,一切正常。


由此可以想到,snmp是否也可以基于扩展模块引用的方式来满足cacti的要求呢?

1.进入snmp目录

#cd snmp/
2.生成configure文件
#/usr/local/phpnginx/bin/phpize
3.编译安装snmp模块
#./configure --with-snmp=/usr --with-php-config=/usr/local/phpnginx/bin/php-config
报错:
checking for init_snmp in -lsnmp... no
configure: error: SNMP sanity check failed. Please check config.log for more information.

解决方法:#yum install elfutils-devel -y

  重新configure
#./configure --with-snmp=/usr --with-php-config=/usr/local/phpnginx/bin/php-config
报错:
configure: error: snmp.h not found. Check your SNMP installation.
解决方法:#yum install net-snmp-devel -y

安装完成后在进行configure
#./configure --with-snmp=/usr --with-php-config=/usr/local/phpnginx/bin/php-config
出现以下内容:

#make
#make install

  出现以下内容:

将该路径复制下来
4.手动添加模块
#vim /etc/phpnginx/php.ini
搜索extension,添加扩展模块引用,添加
extension=/usr/local/phpnginx/lib/php/extensions/no-debug-non-zts-20090626/snmp.so
5.检查php.ini配置文件是否正确合法

#php -v
6.重新启动php-fpm
#service php-fpm restart
7.定义crontab
让poller.php脚本每隔五分钟,对系统进行一次性能参数及其值的获取。
#vim /etc/crontab
添加以下内容:
*/5 * * * * root /usr/local/phpnginx/bin/php /usr/html/cacti/poller.php &> /dev/null

8.访问cacti




  





  
全部正常!


由此可以看出只要在php源码文件的ext/目录中存在的目录,其对应的功能都可单独编译,然后在手动进行模块引用,这就避免了在由于第一次的编译安装时漏掉了某些功能,而导致重新编译php的麻烦了。
其大致步骤就是:
1.进入需要单独编译的功能目录中
2.生成configure文件
3.进行编译检查configure
4.make && make install
5.修改php.ini文件添加引用模块的绝对存放路径
6.重新启动php-fpm



                                            【完】




如有纰漏,欢迎指正。







运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-653416-1-1.html 上篇帖子: PHP开发规范分享 下篇帖子: php 扩展安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表