<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GzV8.com &#187; PHP</title>
	<atom:link href="http://www.gzv8.com/archives/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gzv8.com</link>
	<description>互联网引擎</description>
	<lastBuildDate>Thu, 06 Jan 2011 04:08:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP 缓存加速器 eAccelerator 配置参数详解</title>
		<link>http://www.gzv8.com/archives/250</link>
		<comments>http://www.gzv8.com/archives/250#comments</comments>
		<pubDate>Thu, 11 Mar 2010 09:08:46 +0000</pubDate>
		<dc:creator>qbanke</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[eaccelerator.shm_only]]></category>
		<category><![CDATA[eaccelerator.shm_prune_period]]></category>
		<category><![CDATA[eaccelerator.shm_ttl]]></category>

		<guid isPermaLink="false">http://www.gzv8.com/?p=250</guid>
		<description><![CDATA[eaccelerator.shm_size=&#8221;32&#8243;
eAccelerator 可以使用的共享内存的数量 (以兆为单位) . &#8220;0&#8243; 是指操作系统的默认值. 默认值是 &#8220;0&#8243;.可根据服务器的实际情况来调整，16，32，64，128都是可以的。
eaccelerator.cache_dir=&#8221;/home/php/tmp&#8221;
这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 &#8220;/tmp/eaccelerator&#8221;.
eaccelerator.enable=&#8221;1&#8243;
开启或关闭 eAccelerator。&#8221;1&#8243; 为开启，&#8221;0&#8243; 为关闭。默认值为 &#8220;1&#8243;。
eaccelerator.optimizer=&#8221;1&#8243;
启或关闭内部优化器，可以提升代码执行速度。&#8221;1&#8243; 为开启，&#8221;0&#8243; 为关闭。默认值为 &#8220;1&#8243;。
eaccelerator.check_mtime=&#8221;1&#8243;
打开或者关闭 PHP 的文件修改检查. &#8220;1&#8243; 是指打开, &#8220;0&#8243; 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 &#8220;1&#8243;. 默认值是 &#8220;1&#8243;.
eaccelerator.debug=&#8221;0&#8243;
开启或关闭调试日志记录。&#8221;1&#8243; 为开启，&#8221;0&#8243; 为关闭。默认值为 &#8220;0&#8243;。会将缓存命中得记录写入日志。
eaccelerator.filter=&#8221;"
判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型（如 &#8220;*.php *.phtml&#8221;等）
如果参数以 &#8220;!&#8221; 开头，则匹配这些参数的文件被忽略缓存。默认值为 &#8220;&#8221;，即，所有 PHP 文件都将被缓存。
eaccelerator.shm_max=&#8221;0&#8243;
当使用 &#8221; eaccelerator_put() &#8221; 函数时禁止其向共享内存中存储过大的文件。该参数指定允许存储的最大值，单位：字节 (10240, 10K, 1M)。&#8221;0&#8243; 为不限制。默认值为 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>eaccelerator.shm_size=&#8221;32&#8243;</strong><br />
eAccelerator 可以使用的共享内存的数量 (以兆为单位) . &#8220;0&#8243; 是指操作系统的默认值. 默认值是 &#8220;0&#8243;.可根据服务器的实际情况来调整，16，32，64，128都是可以的。</p>
<p><strong>eaccelerator.cache_dir=&#8221;/home/php/tmp&#8221;</strong><br />
这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 &#8220;/tmp/eaccelerator&#8221;.</p>
<p><strong>eaccelerator.enable=&#8221;1&#8243;</strong><br />
开启或关闭 eAccelerator。&#8221;1&#8243; 为开启，&#8221;0&#8243; 为关闭。默认值为 &#8220;1&#8243;。</p>
<p><strong>eaccelerator.optimizer=&#8221;1&#8243;</strong><br />
启或关闭内部优化器，可以提升代码执行速度。&#8221;1&#8243; 为开启，&#8221;0&#8243; 为关闭。默认值为 &#8220;1&#8243;。</p>
<p><strong>eaccelerator.check_mtime=&#8221;1&#8243;</strong><br />
打开或者关闭 PHP 的文件修改检查. &#8220;1&#8243; 是指打开, &#8220;0&#8243; 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 &#8220;1&#8243;. 默认值是 &#8220;1&#8243;.</p>
<p><strong>eaccelerator.debug=&#8221;0&#8243;</strong><br />
开启或关闭调试日志记录。&#8221;1&#8243; 为开启，&#8221;0&#8243; 为关闭。默认值为 &#8220;0&#8243;。会将缓存命中得记录写入日志。</p>
<p><strong>eaccelerator.filter=&#8221;"</strong><br />
判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型（如 &#8220;*.php *.phtml&#8221;等）<br />
如果参数以 &#8220;!&#8221; 开头，则匹配这些参数的文件被忽略缓存。默认值为 &#8220;&#8221;，即，所有 PHP 文件都将被缓存。</p>
<p><strong>eaccelerator.shm_max=&#8221;0&#8243;</strong><br />
当使用 &#8221; eaccelerator_put() &#8221; 函数时禁止其向共享内存中存储过大的文件。该参数指定允许存储的最大值，单位：字节 (10240, 10K, 1M)。&#8221;0&#8243; 为不限制。默认值为 &#8220;0&#8243;。</p>
<p><strong>eaccelerator.shm_ttl=&#8221;0&#8243;</strong><br />
当 eAccelerator 获取新脚本的共享内存大小失败时，它将从共享内存中删除所有在最后 &#8220;shm_ttl&#8221; 秒内没有存取的脚本缓存。默认值为 &#8220;0&#8243;，即：不从共享内春中删除任何缓存文件。</p>
<p><strong>eaccelerator.shm_prune_period=&#8221;0&#8243;</strong><br />
当 eAccelerator 获取新脚本的共享内存大小失败时，他将试图从共享内存中删除早于&#8221;shm_prune_period&#8221; 秒的缓存脚本。默认值为 &#8220;0&#8243;，即：不从共享内春中删除任何缓存文件。</p>
<p><strong>eaccelerator.shm_only=&#8221;0&#8243;</strong><br />
允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 &#8220;0&#8243;，即：使用磁盘和共享内存进行缓存。</p>
<p><strong>eaccelerator.compress=&#8221;1&#8243;</strong><br />
允许或禁止压缩内容缓存。默认值为 &#8220;1&#8243;，即：允许压缩。</p>
<p><strong>eaccelerator.compress_level=&#8221;9&#8243;</strong><br />
指定内容缓存的压缩等级。默认值为 &#8220;9&#8243;，为最高等级。</p>
<p><strong>eaccelerator.keys = &#8220;disk_only&#8221;</strong><br />
<strong>eaccelerator.session = &#8220;disk_only&#8221;</strong><br />
<strong>eaccelerator.content = &#8220;disk_only&#8221;</strong><br />
设置内容缓存的存放的地方，可以设置为：<br />
<strong>shm_and_disk</strong> 在共享缓存和硬盘(默认值)<br />
<strong>shm </strong>默认存在共享内存，如果共享内存已满或大小超过 &#8220;eaccelerator.shm_max&#8221; 的值，就存到硬盘<br />
<strong>shm_only </strong>只存放在共享内存<br />
<strong>disk_only </strong>只存放在硬盘<br />
<strong>none </strong>不缓存数据</p>
<p><strong>eaccelerator.allowed_admin_path = &#8220;/var/www/html/21andy.com/eaccelerator&#8221;</strong><br />
这是控制面板的地址<br />
安装包里有个control.php，你把它复制到网站的任意目录，可以用它查看和管理，这个必须指定，否则查看缓存内容的时候会出错</p>
<p>最后，来看一下我的 eAccelerator 设置</p>
<p>; eaccelerator<br />
[eaccelerator]<br />
zend_extension=&#8221;/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so&#8221;<br />
eaccelerator.shm_size=&#8221;128&#8243;<br />
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221;<br />
eaccelerator.enable=&#8221;1&#8243;<br />
eaccelerator.optimizer=&#8221;1&#8243;<br />
eaccelerator.check_mtime=&#8221;1&#8243;<br />
eaccelerator.debug=&#8221;0&#8243;<br />
eaccelerator.filter=&#8221;"<br />
eaccelerator.shm_max=&#8221;0&#8243;<br />
eaccelerator.shm_ttl=&#8221;3600&#8243;<br />
eaccelerator.shm_prune_period=&#8221;3600&#8243;<br />
eaccelerator.shm_only=&#8221;0&#8243;<br />
eaccelerator.compress=&#8221;1&#8243;<br />
eaccelerator.compress_level=&#8221;9&#8243;<br />
eaccelerator.keys = &#8220;disk_only&#8221;<br />
eaccelerator.sessions = &#8220;disk_only&#8221;<br />
eaccelerator.content = &#8220;disk_only&#8221;<br />
eaccelerator.allowed_admin_path = &#8220;/var/www/html/21andy.com/eaccelerator&#8221;</p>
<p>另外，再说下 eAccelerator 的安装</p>
<p># wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2<br />
# tar -jxvf eaccelerator-0.9.6.tar.bz2<br />
# cd eaccelerator-0.9.6<br />
# /usr/local/php/bin/phpize<br />
# ./configure &#8211;enable-eaccelerator=shared &#8211;with-php-config=/usr/local/php/bin/php-config<br />
# make &amp;&amp; make install</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gzv8.com/archives/250/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache CPU 无端端卡住在 100%</title>
		<link>http://www.gzv8.com/archives/229</link>
		<comments>http://www.gzv8.com/archives/229#comments</comments>
		<pubDate>Thu, 11 Mar 2010 07:35:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[100%]]></category>
		<category><![CDATA[cpu]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[卡]]></category>
		<category><![CDATA[慢]]></category>

		<guid isPermaLink="false">http://www.gzv8.com/?p=229</guid>
		<description><![CDATA[这个问题实在好怪，折腾了的一个多月。
情况是这样的：
新配了一台服务器，全新 RedHat 5.4 X64 的OS ，Intel 5500系列的CPU
Apache 2.2.14  + PHP 5.2.6 + Zend 3.3.x + eaccelerator 0.9.4
每到了一段时间，八核CPU就会有2核 始终恒定在 100% 占用进程是 httpd 即 apache
由于还有其他6核的资源，所以访问没有任何影响。
找了好久原因，一度怀疑是 mod_mpm 的问题，调整了无数次参数。
后来由于流量越来越高，出现的频率越来越频繁，差不多2天就又变成这样了。
查看 error_log 看到不断有提示：
child pid ***** exit signal Segmentation fault (11)
child pid ***** exit signal Segmentation fault (11)
child pid ***** exit signal Segmentation fault (11)
重启 Apache 的时候还更会一堆过来。
好不容易找到原因，原来是因为 PHP 加速器 eaccelerator 0.9.4 跟 [...]]]></description>
			<content:encoded><![CDATA[<p>这个问题实在好怪，折腾了的一个多月。<br />
情况是这样的：</p>
<p>新配了一台服务器，全新 RedHat 5.4 X64 的OS ，Intel 5500系列的CPU<br />
Apache 2.2.14  + PHP 5.2.6 + Zend 3.3.x + eaccelerator 0.9.4</p>
<p>每到了一段时间，八核CPU就会有2核 始终恒定在 100% 占用进程是 httpd 即 apache<br />
由于还有其他6核的资源，所以访问没有任何影响。<br />
找了好久原因，一度怀疑是 mod_mpm 的问题，调整了无数次参数。<br />
后来由于流量越来越高，出现的频率越来越频繁，差不多2天就又变成这样了。<br />
查看 error_log 看到不断有提示：</p>
<p>child pid ***** exit signal Segmentation fault (11)<br />
child pid ***** exit signal Segmentation fault (11)<br />
child pid ***** exit signal Segmentation fault (11)</p>
<p>重启 Apache 的时候还更会一堆过来。<br />
好不容易找到原因，原来是因为 PHP 加速器 eaccelerator 0.9.4 跟 As5.4 X64 内核的兼容有问题。<br />
之前在 As5.3 X64 上是完全正常的</p>
<p>于是下载了最新的 eaccelerator V0.9.6<br />
重新编译 eaccelerator 升级覆盖，问题解决！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gzv8.com/archives/229/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用 cacti 批量监控服务器以及其 PHP 运作环境配置</title>
		<link>http://www.gzv8.com/archives/89</link>
		<comments>http://www.gzv8.com/archives/89#comments</comments>
		<pubDate>Thu, 11 Mar 2010 04:24:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cacti]]></category>
		<category><![CDATA[Linux & Unix]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.gzv8.com/?p=89</guid>
		<description><![CDATA[本文转载自：http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/index.html?ca=drs-cn-0430
级别： 初级
范 绰耘 (qbanke@163.com), 系统管理员, 广州市摩网信息技术有限公司
2009 年 4 月 30 日
本文主要介绍说明用于支持 Cacti 运作的 PHP+RRDtool 环境的详细配置方法。使其能集中式监控多台，不同平台类型的服务器。以及支持 SNMP 网络设备运作状态。前言
Cacti 功能类似于我们所熟悉的 MRTG 。 MRTG 确实是非常好的老牌系统监控工具，但由于他历史实在很久了，使得许多功能以及配置等方面都比较落后。实现得比较费劲，管理起来很麻烦。比如我有几百个被监测点，分布在不同的机房，而且我需要将这些服务器和网络设备分类，这样的话我就要将这些被监测点放在不同的 mrtg 配置文件中，运行多个 crontab，而且还要自己写了一些 html 页面对其进行管理。
Cacti 其实是一套 php 程序，一个 rrdtool 工具。它运用 snmpget 采集数据，使用 rrdtool 绘图。界面非常漂亮，它提供了强大的数据管理和用户管理功能，一张图是属于一个 host 的，每一个 host 又可以挂载到一个树状的结构上。
用户的管理上，作为一个开源软件，它做到为指定一个用户能查看的“树”、host、甚至每一张图，还可以与 LDAP 结合进行用户的验证。 Cacti 还提供自己增加模板的功能，让你添加自己的 snmp_query 和 script 。功能相当强大！
本文前半部分是教程，主要介绍了 Cacti 以及其 PHP 运行环境的安装配置。后半部分将实际举例如何使用 Cacti 监控诸如 Linux，Windows [...]]]></description>
			<content:encoded><![CDATA[<p>本文转载自：<a href="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/index.html?ca=drs-cn-0430">http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/index.html?ca=drs-cn-0430</a></p>
<p>级别： 初级</p>
<p><a href="http://www.oschina.net/bbs/thread/432?lp=5#author">范 绰耘</a> (<a href="mailto:qbanke@163.com?subject=使用 cacti 批量监控服务器以及其 PHP 运作环境配置">qbanke@163.com</a>), 系统管理员, 广州市摩网信息技术有限公司</p>
<p>2009 年 4 月 30 日</p>
<blockquote><p>本文主要介绍说明用于支持 Cacti 运作的 PHP+RRDtool 环境的详细配置方法。使其能集中式监控多台，不同平台类型的服务器。以及支持 SNMP 网络设备运作状态。<a name="1.前言|outline">前言</a></p></blockquote>
<p>Cacti 功能类似于我们所熟悉的 MRTG 。 MRTG 确实是非常好的老牌系统监控工具，但由于他历史实在很久了，使得许多功能以及配置等方面都比较落后。实现得比较费劲，管理起来很麻烦。比如我有几百个被监测点，分布在不同的机房，而且我需要将这些服务器和网络设备分类，这样的话我就要将这些被监测点放在不同的 mrtg 配置文件中，运行多个 crontab，而且还要自己写了一些 html 页面对其进行管理。</p>
<p>Cacti 其实是一套 php 程序，一个 rrdtool 工具。它运用 snmpget 采集数据，使用 rrdtool 绘图。界面非常漂亮，它提供了强大的数据管理和用户管理功能，一张图是属于一个 host 的，每一个 host 又可以挂载到一个树状的结构上。</p>
<p>用户的管理上，作为一个开源软件，它做到为指定一个用户能查看的“树”、host、甚至每一张图，还可以与 LDAP 结合进行用户的验证。 Cacti 还提供自己增加模板的功能，让你添加自己的 snmp_query 和 script 。功能相当强大！</p>
<p>本文前半部分是教程，主要介绍了 Cacti 以及其 PHP 运行环境的安装配置。后半部分将实际举例如何使用 Cacti 监控诸如 Linux，Windows 。以及支持 SNMP 管理协议的路由器等网络设备。</p>
<p> Cacit 运行环境需要 PHP + Mysql + rrdtool 以及 snmp 工具的支持。</p>
<p>下边是本次配置需要用到的软件。</p>
<p><strong>Catci:</strong></p>
<ol type="1">
<li>cacti-0.8.6j.tar.gz</li>
<li>rrdtool-1.2.27.tar</li>
<li>net-snmp-5.0.9-2.30E.15</li>
<li>net-snmp-devel-5.0.9-2.30E.15</li>
<li>net-snmp-libs-5.0.9-2.30E.15</li>
<li>net-snmp-utils-5.0.9-2.30E.15</li>
</ol>
<p><strong>PHP:</strong></p>
<ol type="1">
<li>php-5.2.6.tar.gz</li>
<li>curl-7.15.0.tar.gz</li>
<li>freetype-2.1.9.tar.gz</li>
<li>gettext-0.16.1.tar.gz</li>
<li>gd-2.0.35.tar.gz</li>
<li>jpegsrc.v6b.tar.gz</li>
<li>libart_lgpl-2.3.17.tar.gz</li>
<li>libpng-1.2.18.tar.gz</li>
<li>libxml2-2.6.32.tar.gz</li>
<li>ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz</li>
<li>zlib-1.2.3.tar.gz</li>
<li>libxml2-2.6.32.tar.gz</li>
</ol>
<p><strong>Apache：</strong></p>
<p>httpd-2.2.6.tar.gz</p>
<p><strong>Mysql:</strong></p>
<p>mysql-5.1.24-rc.tar.gz</p>
<p>开始构建完整的 PHP 运行的环境，我们以全新安装的 RedHatAs4 updata4 操作系统环境为例。</p>
<p><strong>首先编译安装</strong><strong>Apache httpd server</strong></p>
<ol type="1">
<li># tar zxvf httpd-2.2.6.tar.gz</li>
<li># cd httpd-2.2.6</li>
<li># ./configure &#8211;prefix=/usr/local/apache26 &#8211;enable-module=so &#8211;with-mpm=worker &#8211;enable-module=rewrite</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>第二步安装 PHP+GD 等所需的支持插件</strong></p>
<p><strong>编译安装</strong><strong>libxml</strong></p>
<ol type="1">
<li># tar zxvf libxml2-2.6.32.tar.gz</li>
<li># cd libxml2-2.6.32.tar.gz</li>
<li># ./configure &#8211;prefix=/usr/local/libxml2/</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装</strong><strong>zlib</strong></p>
<ol type="1">
<li># tar zxvf zlib-1.2.3.tar.gz</li>
<li># cd zlib-1.2.3</li>
<li>#./configure &#8211;prefix=/usr/local/zlib2/</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装</strong><strong>jpeg</strong><strong>支持</strong></p>
<ol type="1">
<li># tar -zxf jpegsrc.v6b.tar.gz</li>
<li># cd jpeg-6b/</li>
<li># ./configure &#8211;prefix=/usr/local/jpeg6</li>
<li># make</li>
<li># make install-lib</li>
<li># make install</li>
</ol>
<p>( 该版本的 jpeg 在实际安装过程中，make install 的时候会出现好几个找不到目录，或目录不存在的 error 。只需按照提示人手创建缺失目录，然后再令其 make install 直到无任何错误提示且顺利完成为止。 )</p>
<p><strong>编译安装 libpng</strong></p>
<ol type="1">
<li># tar zxvf libpng-1.2.18.tar.gz</li>
<li># cd libpng-1.2.18.tar.gz</li>
<li>#cp scripts/makefile.gcmmx makefile</li>
<li>#./configure &#8211;disable-shared &#8211;prefix=/usr/local/libpng2/</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装 freetype</strong></p>
<ol type="1">
<li># tar zxvf freetype-2.1.9.tar.gz</li>
<li># cd freetype-2.1.9</li>
<li>#./configure &#8211;disable-shared &#8211;prefix=/usr/local/freetype2/</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装 libart_lgpl</strong></p>
<ol type="1">
<li># tar zxvf libart_lgpl-2.3.17.tar.gz</li>
<li># cd ibart_lgpl-2.3.17</li>
<li>#./configure &#8211;disable-shared &#8211;prefix=/usr/local/libart/</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装 gettext</strong></p>
<ol type="1">
<li># tar zxvf gettext-0.16.1.tar.gz</li>
<li># cd gettext-0.16.1</li>
<li># ./configure &#8211;prefix=/usr/local/gettext/</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装 gd 库 :</strong></p>
<ol type="1">
<li># tar zxvf gd-2.0.35.tar.gz</li>
<li># cd gd-2.0.35</li>
<li># ./configure &#8211;prefix=/usr/local/gd2 &#8211;with-zlib=/usr/local/zlib2/ &#8211;with-png=/usr/local/libpng2/ &#8211;with-jpeg=/usr/local/jpeg6/ &#8211;with-freetype=/usr/local/freetype2/ &#8211;with-libart=/usr/local/libart/ &#8211;with-gettext=/usr/local/gettext/ &#8211;with-libxml=/usr/local/libxml2</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装 Curl 支持</strong></p>
<ol type="1">
<li># tar zxvf curl-7.15.0.tar.gz</li>
<li># cd curl-7.15.0</li>
<li># ./configure &#8211;prefix=/usr/local/curl</li>
<li># make &amp;&amp; make install</li>
</ol>
<p><strong>编译安装 PHP</strong></p>
<ol type="1">
<li># tar zxvf php-5.2.6.tar.gz</li>
<li># cd php-5.2.6</li>
<li># ./configure &#8211;prefix=/usr/local/php &#8211;with-apxs2=/usr/local/apache26/bin/apxs &#8211;with-jpeg-dir=/usr/local/jpeg6/ &#8211;with-png-dir=/usr/local/libpng2/ &#8211;with-gd=/usr/local/gd2/ &#8211;with-freetype-dir=/usr/local/freetype2/ &#8211;with-zlib-dir=/usr/local/zlib2/ &#8211;with-mysql=/usr/local/mysql &#8211;with-curl=/usr/local/curl &#8211;with-gettext=/usr/local/gettext</li>
<li># make &amp;&amp; make install</li>
<li># cp php.ini-dist /usr/local/php/lib/php.ini ( 拷贝 PHP 配置文件至安装目录 )</li>
<li># vi /usr/local/apach26/conf/httpd.conf ( 修改 apache 配置文件并加载 PHP 支持 )</li>
</ol>
<p>要改的有如下几处</p>
<ol type="1">
<li>一般都在 #AddType application/x-tar .tgz 下加一行 :<br />
#LoadModule php5_module modules/libphp5.so    AddType application/x-httpd-php .php</li>
<li>如果你搜索其它地方没有以下这行 :<br />
LoadModule php5_module modules/libphp5.so</li>
</ol>
<p>请把上面的 # 号去掉，还有找到<br />
DirectoryIndex index.html index.html.var<br />
在后面加 index.php 让它把 index.php 做为默认页</p>
<ol type="1">
<li>保存 httpd.conf 文件 .<br />
启动 apache<br />
# /usr/local/apache2/bin/apachectl start<br />
如果没有出错 , 写一个测试页放到你网页目录下 . 访问就应该可以看到 php 的版本等信息了 !</li>
</ol>
<p><strong>用</strong> <strong>ZendOptimizer</strong> <strong>加速</strong> <strong>PHP</strong></p>
<ol type="1">
<li>#tar zxvf ZendOptimizer-2.5.3-linux-glibc21-i386.tar.gz</li>
<li>#cd ZendOptimizer-2.5.3-linux-glibc21-i386</li>
<li>#./install.sh</li>
</ol>
<p>安装的时候注意输入正确的安装 apache 的路径等内容 !<br />
安装完毕 , 再看看 phpinfo 页面的 zend 选项就发现了 !!</p>
<p> 安装MYSQL<br />
# groupadd mysql   <br />
# useradd -g mysql mysql   <br />
# tar zxvf mysql-5.1.24-rc.tar.gz   <br />
# cd mysql-5.1.24-rc   <br />
# ./configure &#8211;prefix=/usr/local/mysql    &#8211;localstatedir=/data/mysql ( 指定数据文件目录 )    &#8211;without-innodb &#8211;without-debug &#8211;with-extra-charsets=gbk    &#8211;with-extra-charsets=all &#8211;enable-assembler &#8211;with-pthread    &#8211;enable-thread-safe-client  &#8211;with-client-ldflags=-all-static   <br />
# make &amp;&amp; make install     <br />
# cp ./support-files/mysql.server /etc/init.d/mysql ( 复制 Mysql 启动服务至系统 )    # chmod 777 /etc/init.d/mysql ( 赐予可执行权限 )    # chown mysql:mysql /data/mysql  ( 设置数据文件目录属性 )</p>
<p>设置数据文件目录属性这一步相当重要，许多朋友第一次使用 tar 包安装 Mysql 的时候就因该目录权限问题导致 Mysql 无法启动。相当头大 . </p>
<pre># /usr/local/mysql/bin/mysql_install_db 	 ( 初始化数据库 )
# service mysql start 				 ( 启动 Mysql)
# /usr/local/mysql/bin/mysqladmin -u root -p password 'xxxxx' ( 设置管理员密码 xxx 默认值为空 )</pre>
<p>好了，至此 mysql 安装完毕 .</p>
<p>这样构建 Cacit 运行的 PHP+Mysql 环境就基本上完成了。</p>
<p>下边开始安装 Cacit 所需要的 rrdtools 图形工具以及 snmp 工具</p>
<p><strong>编译安装 rrdtools</strong></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre># tar zxvf rrdtool-1.2.27.tar    # cd rrdtool-1.2.27
# ./configure --prefix=/usr/local/rrdtool
# make &amp;&amp; make install</pre>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>如果 ./configure 时出现下面这个错误</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>configure: error: Please fix the library issues listed above and try again.</pre>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>表明系统有功能缺失，需安装 libart_lgpl-devel.rpm 这个包</p>
<p>如果还是提示听样的错误，有可能是找不到 FreeType</p>
<p>把 /usr/local/freetype2/lib/pkgconfig 下的 .pc 文件拷贝到 /usr/lib/pkgconfig 下即可</p>
<p>如果 make install 时出现 [tclrrd.o] 错误</p>
<p>就安装 tcl-8.4.7-2.i386.rpm 以及 tcl-devel-8.4.7-2.i386.rpm 这 2 个包</p>
<p>安装 net-snmp、snmpwalk 和 snmpget 命令  <br />
# rpm -qa | grep net-snmp<br />
( 查看系统中有否已经装有所需的软件 )   <br />
net-snmp-5.0.9-2.30E.15   <br />
net-snmp-devel-5.0.9-2.30E.15   <br />
net-snmp-libs-5.0.9-2.30E.15   <br />
net-snmp-utils-5.0.9-2.30E.15</p>
<p>没有或者缺少的话都需要逐一安装上。</p>
<p>而且还很有可能会因 rpm 的依存关系无法顺利安装，须使用 &#8211; - nodeps 参数。</p>
<p>以上所需的 rpm 安装包都能在 RedHatAs4 安装光盘上找到 .</p>
<p> 至此，Cacti 所需的运行环境都已经准备好了，接下来开始进行安装以及配置。</p>
<p>稍微修改系统中 snmp 的配置</p>
<p># vi /etc/snmp/snmpd.conf</p>
<ol type="1">
<li>com2secnotConfigUser default public<br />
改为：com2secnotConfigUser 127.0.0.1 public</li>
<li>access  notConfigGroup &#8221;"  any   noauth    exact  systemview  none none<br />
改为：accessnotConfigGroup&#8221;"anynoauthexact all none none</li>
<li>#view all    included  .1         80<br />
将前面的 # 注释 去掉。<br />
保存退出 :wq</li>
<li>重新启动 snmp 服务<br />
# service snmpd restart</li>
</ol>
<p><strong>安装 / 配置 cacti</strong></p>
<ol type="1">
<li># tar zxvf cacti-0.8.6j.tar.gz</li>
<li># mv cacti-0.8.6j /data/web_server/admin/cacti<br />
( 把 cacit 剪切到自定的 web 目录下 )</li>
<li># chmod 777 – Rf /data/web_server/admin/cacti<br />
( 设置目录权限 , 避免因权限问题而导致目录无法写入 )</li>
<li># cd /data/web_server/admin/cacti<br />
在Mysql中创建一个新的库，并导入cacti 目录中cacti.sql 并设置好该表的用户权限，然后编辑 cacti 的数据库配置文件。</li>
<li># vi /data/web_server/admin/cacti/include/config.php
<pre>$database_type= “ mysql ” ;
$database_default = “数据库名称” ;
$database_hostname = “默认是 localhost ” ;
$database_username = “用户名” ;
$database_password = “密码” ;</pre>
<p>更改用户、密码等项与上面给出的对应保存退出</li>
<li># crontab – e （加入自动执行规则，每 5 分钟执行。）
<pre>*/5 * * * * /usr/local/php/bin/php /data/web_server/admin/cacti/poller.php  \         &gt; /dev/null 2&gt;&amp;1
（其中 /usr/local/php/bin/php 这个为 php 的安装目录）</pre>
</li>
<li>保存退出：wq</li>
<li>在 apache 上设置好 cacti 所在 web 目录</li>
<li>打开浏览器 <a href="http://youhostname/cacti">http://</a><a href="http://youhostname/cacti">youhostname/cacti</a></li>
<li>进入 cacti 的初始设置页面<br />
第一次默认登陆账号：admin 密码 admin<br />
登陆后它就会让你立即修改新密码</li>
</ol>
<p><strong>说一下 cacti 设置页中各项“零件”的路径。</strong></p>
<p>当修改好新密码进入，第一个显示出的页面就是让你设置 rrdtool，snmp 等工具的路径。这是个很重要的环节，必须无误，要不然 cacti 将无法生成出统计图。</p>
<pre>snmpwalk Binary Path ： /usr/bin/snmpwalk
snmpget Binary Path： /usr/bin/snmpget
RRDTool Binary Path： /usr/local/rrdtool/bin/rrdtool
PHP Binary Path： /usr/local/php/bin/php
Cacti Log File Path： /data/web_server/admin/cacti/log/cacti.log
Cactid Poller File Path： /data/web_server/admin/cacti/poller.php</pre>
<p>默认的配置中会出现许多“ NotFound ”</p>
<p>按照上边的路径把“ NotFound ”的项都重新填上。</p>
<p>手动运行一次</p>
<p>/usr/local/php/bin/php /data/web_server/admin/cacti/poller.php &gt; /dev/null 2&gt;&amp;1</p>
<p>你就能在顶上 graphs 中 localhost 里头看到本机的内存，CPU，登陆用户等的统计图 .<br />
<a name="N10391"><strong>图 1. Cacti 统计图</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image001.jpg" alt="Cacti 统计图" width="515" height="356" /></p>
<p>但默认 Cacti 是没有创建网卡流量的监控图的。要我们自己来加。</p>
<p>回到 console 菜单</p>
<p>选择 Devices 监控设备。<br />
<a name="N103A9"><strong>图 2. 设备监控</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image002.jpg" alt="设备监控" width="515" height="356" /></p>
<p><a name="N103B8"><strong>图 3. 添加设备</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image003.jpg" alt="添加设备" width="515" height="356" /></p>
<p>然后点击右上角的 Add 进行添加</p>
<p><strong>Description</strong> 设备名称 ( 可随意输入 )</p>
<p><strong>Hostname</strong> 设备地址 ( 如果是本机就填 127.0.0.1 )</p>
<p><strong>Host Template</strong> 设备的类型 ( 选择 ucd/net SNMP Host )</p>
<p>然后其他按照默认即可，如下图<br />
<a name="N103DB"><strong>图 4. 添加的新设备</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image004.jpg" alt="添加的新设备" width="515" height="313" /></p>
<p>点 create 创建。</p>
<p>如果刚才填写的地址无误，创建成功后，会在该页面左上方出现所新建设备的 <strong>SNMP Information</strong></p>
<p>然后点击隔壁醒目的 <strong>* Create Graphs for this Host</strong> 即开始创建监控图表<br />
<a name="N103F7"><strong>图 5. 创建图表-1</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image005.jpg" alt="创建图表-1" width="515" height="356" /></p>
<p><a name="N10406"><strong>图 6. 创建图表-2</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image006.jpg" alt="创建图表-2" width="515" height="343" /></p>
<p>如图 6，沟选你所要监控的网卡以及 IP，点 create 。</p>
<p>这样就完成了你所指定设备统计图的创建。</p>
<p><a name="N1041A"><strong>图 7. 添加的设备统计图</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image007.jpg" alt="添加的设备统计图" width="515" height="356" /></p>
<p>点击菜单中的 <a href="http://s1.someqone.com/cacti/graphs.php">Graph Management</a> 即可浏览到你刚才所创建的图表，如图 7 箭头所示。<br />
<a name="N10432"><strong>图 8. 统计图表</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image008.jpg" alt="统计图表" width="515" height="334" /></p>
<p>有一个小技巧，初次要求 cacti 创建指定设备的统计图表，通过 <a href="http://s1.someqone.com/cacti/graphs.php">Graph Management</a> 进入图 8 所示页面时，统计表图片会是一个 X ( 叉 ) 。这是因为在配置初期指定系统中每 5 分钟执所行的 php 语句还没到点运作。要么你就等 5 分钟，要么你就直接进入系统手动执行：</p>
<p> /usr/local/php/bin/php /data/web_server/admin/cacti/poller.php &gt; /dev/null 2&gt;&amp; </p>
<p>然后曲线表中就能出现第一个峰值，每 5 分钟自动更新。 24 小时后，曲线图就能完整地出现在你眼前。</p>
<p>回到图 7 <a href="http://s1.someqone.com/cacti/graphs.php">Graph Management</a> 的界面勾选新建的图表项，然后在下边</p>
<p>Choose an action 框中选择 Place on a Tree(default Tree)</p>
<p>就能把该图表类似快捷方式的样子张贴到本文图 1 所示的 Graphs，Default tree 栏目中。然而你也能自己在菜单栏的 <a href="http://s1.someqone.com/cacti/tree.php">Graph Trees</a>中新建定制栏目，然后用相同的方法把新建的统计图往你所定制的栏目中放。</p>
<p>Cacti 的强大功能不单止可以通过 snmp 获取装有 Linux，Unix 操作系统服务器的运行状态，还能监控 Windows 系统服务器。跟诸如 Cisco，Linksys， 路由器，交换机，无线 AP 。或者其他支持 snmp 管理协议的网络设备。</p>
<p><a name="4.实际应用|outline">实际应用</a></p>
<p>下边我们举出实应用的例子。<br />
设备结构：</p>
<ol type="1">
<li><strong>网络入口路由器 Linksys RV042</strong>。<br />
Linksys 的一款路由器，主要负责，外网接入路由，防火墙，以及端口映射。</li>
<li><strong>server1 WEB 应用服务器</strong><br />
操作系统： Linux RedHat As4<br />
Eth0，Eth1 双网卡工作。前者接入路由器映射至外网。后者直连至 server2<br />
进行反向代理 ( proxy ) 以及数据备份以及同步等功能。<br />
IP 分别为 192.168.3.2 以及 192.168.10.2</li>
<li><strong>server2</strong><strong>储存，</strong><strong>FTP</strong><strong>与</strong><strong>WEB</strong> <strong>应用服务器</strong><br />
操作系统： Windows2003 r2<br />
与 server1 网络环境相仿，双网卡工作。<br />
IP 分别为 192.168.3.3 以及 192.168.10.3</li>
</ol>
<p>Cacti 已经配置完成，安装在 server1 上。第一台添加到监控表里边的是路由器 RV042 。打开路由器的 WEB 设置页面，勾选并启用 SNMP 功能。如图 9</p>
<p>Send SNMP Trap to： 192.168.3.2（ server1 的 IP ）</p>
<p>然后其他输入框按照默认留空即可，但需留意 Get Community Name: 所填写的组名： public 。保存设置。<br />
<a name="N104A4"><strong>图 9. 保存设置</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image009.jpg" alt="保存设置" width="512" height="331" /></p>
<p>登陆 Cacti ，console 菜单栏中点击 <a href="http://s1.someqone.com/cacti/host.php">Devices</a>。跟前边图 1 至 8 添加新设备以及创建统计图表的步骤相同</p>
<p><strong>Description</strong> 设备名称 ( 我们这里自定为 Linksys RV042)</p>
<p><strong>Hostname</strong> 设备地址 ( 路由器的地址 192.168.3.1 )</p>
<p><strong>Host Template</strong> 设备的类型 ( 选择 ucd/net SNMP Host 或者是 Cisco Router )</p>
<p>然后其他按照默认即可。</p>
<p>创建成功后，也会在该页面左上方出现所新建设备的 Linksys RV042 SNMP Information</p>
<p>点击隔壁 <strong>*Create Graphs for this Host</strong> 创建监控图表<br />
<a name="N104D4"><strong>图 10. 创建监控图表</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image010.jpg" alt="创建监控图表" width="512" height="296" /></p>
<p>路由器 RV042 的端口以及 IP 等数据都取出来了。</p>
<p>勾选好所要监控的端口，点击 create 就能完成路由器监控图表的建立。</p>
<p>Cacti 运行在 Server1 上，所以配置方式跟前边所介绍是一样的，这里就掠过了。但顺带说一下，如果环境中还存在 Server3，而且跟 Server1 一样都是 Linux 系统，需要添加到 cacti 里头。哪么只需在该服务器上修改 snmp 配置，修改的内容也跟 server1 上几乎一样，不同的是。</p>
<p>编辑 /etc/snmp/snmpd.conf 的时候，原来填 127.0.0.1 ( 本机地址 ) 的地方换成 Cacti 所在运行的服务器 IP，即 server1: 192.168.3.2</p>
<ol type="1">
<li>com2secnotConfigUser default public<br />
改为：com2secnotConfigUser 192.168.3.2（server1 地址） public</li>
</ol>
<ol type="1">
<li>access  notConfigGroup &#8221;"  any   noauth    exact  systemview  none none</li>
</ol>
<p>改为：accessnotConfigGroup&#8221;"anynoauthexact all none none</p>
<ol type="1">
<li>#view all    included  .1         80<br />
将前面的 # 注释 去掉。</li>
</ol>
<ol type="1">
<li>保存退出 :wq</li>
</ol>
<p>重新启动 snmp 服务</p>
<p># service snmpd restart</p>
<p>在 Cacti ，<a href="http://s1.someqone.com/cacti/host.php">Devices</a>中创建新设备，</p>
<p>填写 Server3 IP 地址，设备类型： ucd/net SNMP Host , 创建图表 , 完成。</p>
<p>到 Server2 的 win2003 系统了。</p>
<ol>
<li><strong>给 Windows 安装 SNMP 协议支持</strong>通常由于 SNMP 是一个建议关闭的协议 ( 因为有安全漏洞 )，所以 Windows 2003 不是缺省安装的。但 Cacti 用的就是 SNMP 协议，而且服务器处于内网中，有路由器防火墙对外隔着，所以装吧。
<p>控制面板– &gt; 添加或删除程序– &gt; 添加 / 删除 Windows 组件– &gt; 管理和监视工具– &gt; 简单网络管理协议 (SNMP)</li>
<li><strong>修改 SNMP 的安全设置</strong> 这台服务是被监控方，所以需要像刚才举例的 Server3 那样修改 SNMP 的配置。否则在 server 1 里头的 Cacti 则永远也收不到 SNMP 的消息。打开 Services 窗口并找到 SNMP 服务，打开右键菜单，选择属性。在打开的窗口中找到“安全”选项页。在选项页中有两部分设置，上半部分是指 SNMP 服务接受哪种 Community 指示字，缺省情况下 Windows 2003 不对任何指示字反馈，我一般都添加设置为。
<p>团体名称：public， 权限：只读</p>
<p>下半部分添加可信任的主机名、IP 或是 IPX 名称。这里就也是添加 server1 的 IP 192.168.3.2 如图 11<br />
<a name="N10571"><strong>图 11. 修改 SNMP 的安全设置 </strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image011.jpg" alt="修改 SNMP 的安全设置" width="456" height="425" /></li>
<li><strong>修改防火墙</strong>如果你安装了防火墙，还要记得打开 UDP 161 端口。
<p>完成后重新启动 SNMP server 服务</p>
<p>登陆 Cacti 点 <a href="http://s1.someqone.com/cacti/host.php">Devices</a> 创建新设备。</p>
<p>填写 Server2 IP 地址，设备类型：Windows 2000/XP hosts</p>
<p>从 Windows 上获取到的 SNMP 信息也挺多，CPU，内存，虚拟内存，硬盘空间使用，网卡流量，一应俱全。最后创建图表 , 完成。<br />
<a name="N105A7"><strong>图 12. 修改防火墙</strong></a><br />
<img src="http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/images/image012.jpg" alt="修改防火墙" width="515" height="352" /></li>
</ol>
<p> Cacti 真是一个世界。在正式使用 Cacti 接管原来的 MRTG 负责服务器状态监控的这段时间， 我所能最深刻感受到的，不止是它漂亮的界面跟图表。而且是对监控设备的创建，跟管理，都有着史无前例地简单，高效。作为系统管理员，我真相当感激 Cacti 的作者能开发出这一套如此拔尖的监控程序。</p>
<p>虽然它所运行的 PHP 环境以及 RRDtool 在前期配置的时候要花好多的时间跟功夫，</p>
<p>但也未尝不是一个新的选择。试想一下，你只需一阵子的功夫在一台服务器上把环境配好，Cacti 装好。以后，无论你要再添更多的服务器，要了解他们的”情绪”，就只需简单地在浏览器上登陆 Cacti – &gt; 新建设备 – &gt; 新建图表。区区几步，整整有条的服务器列表，CPU，硬盘，网卡等等读数的曲线都能一清二楚地显示在你面前。</p>
<p>当然！ Cacti 带来的强大功能以及方便还远不止这些，就交由大家之后去使用，去体验了。</p>
<p><a name="resources">参考资料 </a></p>
<ul>
<li>开源中国社区：<a href="http://www.oschina.net/">http://www.oschina.net</a></li>
<li>Cacti 中文站点：<a href="http://www.cacti.com.cn/">http://www.cacti.com.cn/</a></li>
<li>Cacti 英文站点：<a href="http://www.cacti.net/">http://www.cacti.net/</a></li>
<li>RRDtool 下载：<a href="http://oss.oetiker.ch/rrdtool/">http://oss.oetiker.ch/rrdtool/</a></li>
<li>PHP 官方站点：<a href="http://www.php.net/">http://www.php.net/</a></li>
<li>在 <a href="http://www.ibm.com/developerworks/cn/linux/">developerWorks Linux 专区</a> 寻找为 Linux 开发人员（包括 <a href="http://www.ibm.com/developerworks/cn/linux/newto/">Linux 新手入门</a>）准备的更多参考资料，查阅我们 <a href="http://www.ibm.com/developerworks/cn/linux/top10/index.html">最受欢迎的文章和教程</a>。</li>
<li>在 developerWorks 上查阅所有 <a href="http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?search_by=Linux+%E6%8A%80%E5%B7%A7">Linux 技巧</a> 和 <a href="http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?type_by=%E6%95%99%E7%A8%8B">Linux 教程</a>。</li>
</ul>
<p> </p>
<p>范绰耘，服务器软硬件技术架构、开源软件的热衷者，现任职广州市摩网信息技术有限公司系统管理员，您可以通过开源中国社区网站 http://www.oschina.net 来联系我。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gzv8.com/archives/89/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

