服務cacti,獨立編譯php模塊,避開重新編譯php

昨天在學習了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



                                            【完】




如有紕漏,歡迎指正。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章