apache+php+mysql+nagios+cacti
我是在完全干净的Ubuntu10.04下源码编译安装的,如有些地方不妥,还请指出。由于本人运气不太好,安装配置过程中把网上出现的问题都遇见了,顾也写出FAQ解决方法。
Begin 安装前保证一些开发包如gcc,g++已经装上。
1. 安装apache2.2.19
tar zxvf httpd-2.2.19.tar.gz
cd httpd-2.2.19
./configure --prefix=/usr/local/apache --enable-so
#记得enable-so,不然后面会出问题
make
make install
vim /usr/local/apache/conf/httpd.conf
设置 ServerName 为 0.0.0.0:80
ln -s /usr/local/apache/bin/apachectl /etc/init.d/httpd #启动项
/usr/local/apache/bin/apachectl start
打开浏览器,输入http://0.0.0.0:80 会出现It's works #查看apache是否安装正确
2. 安装mysql-5.5.14
如果没有安装cmake,首先安装cmake才能编译。
tar -zxvf cmake-2.8.5.tar.gz
cd cmake-2.8.5
./bootstrap;make;make install
安装完后,安装mysql
tar zxvf mysql-5.5.14.tar.gz
cd mysql-5.5.14
groupadd mysql
useradd -r -g mysql mysql
/usr/local/bin/cmake . #cmake当前文件,注意有个点“.”
安装过程中可能会报以下错误
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
发现少库, Ubuntu下要安装libncurses5-dev
apt-get install libncurses5-dev
不知道库名可以用aptitude-search 来搜索
删除mysql文件夹,重新解压,tar zxvf mysql-5.5.14.tar.gz
cd mysql-5.5.14
重新 执行 /usr/local/bin/cmake .
make
make install
cd /usr/local/mysql/
chown -R mysql:mysql *
scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
chown -R root .
chown -R mysql data
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysql
/usr/local/bin/mysqld_safe --user=mysql
bin/mysqladmin -u root password '123'
/etc/init.d/mysql start
3. 安装php-5.3.6
在安装PHP之前要先安装zlib libpng jpeg freetype fontconfig gd,
/usr/local/zlib apt-get install libxml2-dev
/usr/local/libpng apt-get install libpng12-dev
/usr/local/jpeg ubuntu 默认安装
/usr/local/freetype apt-get install libfreetype6-dev
/usr/local/fontconfig ubuntu 默认安装
安装 /usr/local/gd
tar zxvf gd-2.0.35.tar.gz
cd gd/2.0.35/
./configure --prefix=/usr/local/gd
make
make install
tar xvf php-5.3.6.tar.bz2
cd php-5.3.6
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-gd=/usr/local/gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --enable-gd-native-ttf --enable-gd-jis-conv --enable-xml --enable-mbstring --enable-sockets --enable-bcmath
#--enable-bcmath 是以后装zabbix需要的。
make
make install
vim /usr/local/apache/conf/httpd.conf
在合适位置加上 LoadModule php5_module modules/libphp5.so
4.安装rrdtool
Rrdtool需要一些库文件的支持,这些库文件的安装非常耽误时间,在此我们使用
apt-get install 相关库文件来装,装得不全会报错的。一定要装完
cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel intltool
不然就会 configure: error: Please fix the library issues listed above and try again.
tar -zxvf rrdtool-1.4.5.tar.gz
cd rrdtoos-1.4.5
./configure --prefix=/usr/local/rrdtool --disable-tcl
make
make install
ln -s /usr/local/rrdtool/bin/* /usr/local/bin/
cp -r gbsn00lp.ttf /usr/share/fonts/zh_CN/TrueType/ 复制字体给rrdtool 使用
5.安装net-snamp
tar zxvf net-snmp-5.4.2.1.tar.gz
cd net-snmp-5.4.2.1
./configure --prefix=/usr/local/net-snmp --enable-developer
make
如果报错
/usr/bin/ld: cannot find -lperl
collect2: ld returned 1 exit status
ln -s /usr/lib/libperl.so.5.10 /usr/lib/libperl.so
make install
vim /usr/local/neit-snmp/share/snmp/snmpd.conf修改可以访问SNMP的网段和community
比如
# sec.name source community
com2sec local localhost public
com2sec mynetwork 192.168.15.1 public
com2sec mynetwork 192.168.1.1 public
ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
启动
/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf
测试
snmpwalk -v 2c -c public 127.0.0.1 有数据返回则成功。
6.安装cacti
tar zxvf cacti-0.8.7g.tar.gz
cd cacti-0.8.7g
cp -r * /usr/local/apache/htdocs
useradd cacti
chown -R cacti /usr/local/apache/htdocs/rra
chown -R cacti:cacti /usr/local/apache/htdocs
登录MySQL,新建数据,并授权
mysql -uroot -p123
Mysql>create database cacti;
Mysql>grant all on cacti.* to cacti@'localhost' identified by 'cacti';
Mysql>flush privileges;
导入cacti数据库
#cd /usr/local/apache/htdocs
gedit cacti.sql
将 TYPE=MyISAM 全部替换为 ENGINE=MyISAM
导入数据库
#mysql -uroot -p123 cacti < cacti.sql
修改cacti安装配置文件
#vim /usr/local/apache/htdocs/include/config.php
修改为
* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
终端运行 crontab -e,加入以下内容
*/5 * * * * /usr/local/php/bin/php /usr/local/apache2/htdocs/poller.php > /dev/null 2>&1
运行以下步骤
启动apahce ,mysql,snmp
/etc/init.d/httpd start
/etc/init.d/mysql
/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf
访问http://0.0.0.0/install/index.php
如果出现以下情况:
1.直接显示php代码,php没有装好,重装php。
2.页面是空白
vim /usr/local/apache/conf/httpd.conf
在相应位置加入
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .phtml .php3 .php4
AddType application/x-httpd-php-source .phps
AddType image/x-icon .ico
设置为以下
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
重启apache
这个时候cacti可以正常运行了。
7.安装nagios
/usr/sbin/useradd nagios
passwd nagios
/usr/sbin/groupadd nagios
/usr/sbin/usermod -G nagios nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -G nagcmd nagios
/usr/sbin/usermod -G nagcmd www-data
tar -xvf nagios-cn-3.2.3.tar.bz2
cd nagios-cn-3.2.3
先要安装用apt-get install
libgd
libgd-devel
libpng
libpng-devel
libjpeg
libjpeg-devel
zlib
./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include --with-command-group=nagcmd gd非常重要,不然不能生成nagios的stausmap.cgi
make install
make install-init
make install-config
make install-commandmode
创建一个 nagiosadmin 的用户用于 Nagios 的 WEB 接口登录。记下你所设置的登录口令,一会儿你会用到它。
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagios
验证 Nagios 的样例配置文件
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
编译并安装 Nagios 插件
tar -zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
vim /usr/local/apache/conf/httpd.conf
添加以下到最后
# SAMPLE CONFIG SNIPPETS FOR APACHE WEB SERVER
# Last Modified: 11-26-2005
#
# This file contains examples of entries that need
# to be incorporated into your Apache web server
# configuration file. Customize the paths, etc. as
# needed to fit your system.
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
由于创建的用户为nagios,所以还要修改cgi.cfg,不然权限不够。
vim /usr/local/nagios/etc/cgi.cfg
在nagiosadmin后加上nagios 注意用‘,’号隔开
重启apache,启动nagios
/etc/init.d/httpd restart
/etc/init.d/nagios start
正常工作。
以下是在安装过程中出现的问题和处理方法。
1.It appears as though you do not have permission to view information for any of the services you requested...
打开cgi.cfg配置文件,里面有个参数:
use_authentication=1
为了保障系统的安全性,nagios设置了这个参数,默认为1,改为0即可
这个只是临时解决方案,其实该在cgi.cfg的nagiosadmin后面加上你建立的nagios用户名,我就用的nagios
2.It seems that you have chosen to not use the authentication functionality of the CGIs.
I don't want to be personally responsible for what may happen as a result of allowing unauthorized users to issue commands to Nagios,so you'll have to disable this safeguard if you are really stubborn and want to invite trouble.
原因 : 认证用户不正确
开启认证 认证的用户必须是 cgi.cfg 配置文件里有的 默认是 nagiosadmin
如果你新建的其他用户 需要添加进去 多用户用逗号分开
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
如果不是 nagiosadmin 需要到后面添加
例子 authorized_for_system_information=nagiosadmin,admin
3.Ubuntu下安装MySQL出现FATAL ERROR: Could not find mysqld的处理
错误信息:
#./bin/mysql_install_db �Cuser=mysql
FATAL ERROR: Could not find mysqld
The following directories were searched:
/usr/libexec
/usr/sbin
/usr/bin
If you compiled from source, you need to run ‘make install’to copy the software into the correct location ready for operation.
If you are using a binary release, you must either be at the top of the level of the extracted archivem or pass the �Cbasedir option pointing to that location.
解决办法:
在安装目录下运行 scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
(这里mysql是所使用的用户名,basedir是mysql的安装目录)
4.安装cacti时,在导入cacti.sql 这个文件时报错:
The command "mysql -u root -p cacti < cacti.sql' gets the following error:
ERROR 1064 (42000) at line 5: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 6
原因是mysql5这后不再支持 TYPE=MyISAM 这样的语法了,改成 ENGINE=MyISAM 就可以了。
5.Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /usr/local/apache2/htdocs/include/global_constants.php on line 154
解决方法
1:改 php.ini
cp php-5.3.6/php.ini-production /usr/local/php/lib/php.ini
改date.timezone ='Asia/Shanghai'
date.timezone=PRC 重启apache 然后再试试
2:在程序代码中写入
第一行写入:date_default_timezone_set ('Asia/Shanghai');
ini_set('date.timezone','Asia/Shanghai');
6.cacti无法显示图片,在rra文件夹下没有生成*.rra文件。
解决方法:
/usr/local/php/bin/php /usr/local/apache/htdocs/poller.php > /dev/null 2>&1
php 问题,重新编译php
cacti配置中rrdtool 版本选1.2,rra文件夹权限问题
7.进入cacti后显示白板
解决方法:
php-mysql 没装好,重装php,编译加入php-mysql
8.访问cacti会提示:Error
解决方法:
编译php 需要加参数--enable-sockets
9.编译net-snmp出现 command 'gcc' failed with exit status 1
重新编译 net-snmp ./configure --prefix=/usr/local/net-snmp --enable-developer --with-python-modules=/usr/local/bin/python --with-ipython-modules=/usr/local/bin/ipython
10.nagios 乱码问题
在apache http.conf 中加入AddDefaultCharset UTF-8
11.nagios 无法执行命令开通知
在apache http.conf 中加入 User nagios Group nagios
如还有不全,请大家提出。