<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.9.2" -->
<rss version="0.92">
<channel>
	<title>GzV8.com</title>
	<link>http://www.gzv8.com</link>
	<description>互联网引擎</description>
	<lastBuildDate>Thu, 06 Jan 2011 04:08:28 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>MariaDB VS MySQL 性能小测。</title>
		<description><![CDATA[我使用的是 MySQL 自带的性能测试工具 mysqlslap，200 并发，25次循环，
运行5次取平均数值所得。
测试数据库所用的版本是 MariaDB 5.2.0 Beta &#38; MySQL 5.1.36 使用相同的 my.ini 配置
下边是测试结果：
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 36.261 seconds
Minimum number of seconds to run all queries: 36.162 seconds
Maximum number of seconds to run all queries: 36.336 seconds
以上是 MariaDB  ，MyISAM 引擎的测试结果
Benchmark
Running for engine myisam
Average number of seconds to run [...]]]></description>
		<link>http://www.gzv8.com/archives/378</link>
			</item>
	<item>
		<title>怎么设置linux时区</title>
		<description><![CDATA[Local vs. UTC
首先重要的问题是你使用utc还是local time.
UTC(Universal Time Coordinated)=GMT(Greenwich Mean Time)
Local time 是你手表上的时间
传统的POSIX计算机(Solaris,bsd,unix)使用UTC格式
linux可以处理UTC时间和蹩脚的Windows所使用的local time
到底是使用UTC还是local time可以这样来确定：
如果机器上同时安装有Linux和Windows，建议使用local time
如果机器上只安装有Linux，建议使用utc
确定后编辑/etc/sysconfig/clock, UTC=0 是local time; UTC=1 是UTC(GMT)
确定timezone
运行tzselect,回答问题后会告诉你时区的名称，比如&#8221;Asia/Shanghai&#8221;,把他记下来(后面我用$timezone代替)
设定timezone
# cp /usr/share/zoneinfo/$timezone /etc/localtime
重新启动或者运行时钟设置脚本使之发生作用
版本差异
由于发行版的差异，以上文件位置可能不同。
一般设置时钟所使用的启动脚本为/etc/rc.d/init.d/setclock
redhat是在/etc/rc.d/rc.sysinit中设置时钟，所以一般要重新启动
]]></description>
		<link>http://www.gzv8.com/archives/375</link>
			</item>
	<item>
		<title>CST 时区问题</title>
		<description><![CDATA[在很多unix下用date命令都能看到当前的时区。很多unix下中国时区都是用CST表示的。但是这个表示方法非常不合理。因为CST同时代表了下面4个时区。
CST Central Standard Time (USA) UT-6:00
CST Central Standard Time (Australia) UT+9:30
CST China Standard Time UT+8:00
CST Cuba Standard Time UT-4:00
在unix下通过/etc/localtime这个硬连接指向的/usr/share/zoneinfo下的时区文件表示当前的真正时区。比如 /etc/localtime指向了/usr/share/zoneinfo/Asia/Shanghai这个文件的时候，CST就代表了中国标准时间。
但是很多语言的时间函数库根本不做这个判断，往往就是用一个独立的时区配置文件做时区关键字和GMT的转换。因此很多系统里面CST都变成了GMT-6，也就是美国中部时间。
在zope里面也是如此。而且很奇怪的是有的地方做了正确的判断，有的地方没做正确判断。
比如文件的最后修改时间就是错的，但是如果对一个页面做comment的时候，comment时间就是正确的。
修改Zope中DateTime\DateTime.py的定义为：&#8217;cst&#8217;:'GMT+8&#8242;，就能够解决这个问题。
但是这样做就需要改代码，然后重新编译。
我试着在zope的启动脚本里面加上TZ的环境变量设置，但是没有效果。我想，最根本的解决方法应该是改变unix服务器的时区设置方法吧。
]]></description>
		<link>http://www.gzv8.com/archives/373</link>
			</item>
	<item>
		<title>我的服务器攻击别人了！！ (已解决，把肉鸡抓住了！)</title>
		<description><![CDATA[在星期五的时候，上着上着，突然页面打开相当慢。
原本以为是网络问题，没大留意。但频繁出现数次，还居然一直持续。
在Cacti中查看，网卡占用居然达到机房百兆宽带的所有，12m/s
查看网卡的实时流量，得到了相同结果。
而且 CPU 也有点不正常，用 Top 命令查看，占用最高的是 Httpd 进程。即 Apache
原以为是受到了页面攻击，但这样在进程里头出现的，还应该有 Nginx 跟 Mysql 才对。
不会就这么孤独地只有 Apache。
正在我继续查找原因，攻击停下来了，网卡流量恢复正常。
查看了所有的 WEB 访问日志，无一是有能够解释到该现状的记录。
因为如果是 页面攻击，就好比是压力测试般，肯定会有某个或几个地址有重复不断的垃圾请求。
但日志上显示得相当悠然。
好了，没过多久，流量又来了！httpd 进程把 2个 cpu核心占用到 100%
网卡冲到 12m/s
使用网络命令 netstat -ant 查看，没有 DDOS 之类攻击所产生的 wait 。
而且链接IP还越来越少，这时候从本地 Ping 服务器的响应基本上是 timeout 了
一但把 Apache 停下来，流量就会消失。再次启动！没过多久又会再来。
为了知道到底是哪个 IP 令我产生这样的事，我安装了既时流量检测工具 iftop
iftop介绍详见：http://www.oschina.net/p/iftop
经检测，传输量最大的 IP 是 60.219.100.3 这个IP，直接访问能打开到网站。
使用 IPtables 命令禁止该IP访问本机！！无效，流量继续！
哟？？？？！！ 再次使用 IPtables 命令禁止本机访问该IP ！！！这下流量终于停了。
哟！！这事情就明白多了，绝对能断点我的服务器成为了肉鸡，受到操控对特定目标进行了攻击。
而进行攻击的木马，不是啥米东西，而是 PHP 程序！
应该是在服务器里头某个虚拟主机网站有漏洞，被放入了 PHP DDOS 攻击木马！
然而，剩下的问题就更加复杂了，如何在海量文件的目录里头找到那个木马？
希望是有一个杀毒程序能帮我扫描到&#8230;.但我还没能找到这个，如果网友们有的不妨推荐推荐。
我的思路是，开启 Apache 的 Server [...]]]></description>
		<link>http://www.gzv8.com/archives/370</link>
			</item>
	<item>
		<title>PHP Zlib (GZIP) 压缩优化开启配置</title>
		<description><![CDATA[GZIP 的实现有好多种方法。包括有
1，Nginx 的 GZIP 配置
2，Apache 的 mod_deflate.so  模块
3，各种 PHP 程序中通过 PHP自身 实现压缩。
等等&#8230;
期中使用 PHP 自身也有2种实现方法，一种是开启zlib.output_compression，一种是 ob_gzhandler编码
在默认情况下，zlib.output_compression是关闭的，如需开启需编辑php.ini文件，找到以下选项并开启：
zlib.output_compression = On
zlib.output_compression_level = 6
完成后可以通过phpinfo()函数检测结果，当zlib.output_compression的Local Value和MasterValue的值同为On时，表示已经生效，这时候访问的PHP页面（包括伪静态页面）已经GZIP压缩了，通过Firebug或者在线网页GZIP压缩检测工具可检测到压缩的效果。
但如果需要使用ob_gzhandler(默认)，则需关闭zlib.output_compression(2个同时开启会出乱子)，把php.ini文件内容更改为：
zlib.output_compression = Off
zlib.output_compression_level = -1
ob_gzhandler是多数程序(discuz,phpwind等)推荐的用法
]]></description>
		<link>http://www.gzv8.com/archives/368</link>
			</item>
	<item>
		<title>nginx 目录中的off文件增大原因</title>
		<description><![CDATA[在 Nginx 的根目录，有个 off 的文件！(有的是 on)！
注意error_log off并不能关闭日志记录功能，它将日志文件写入一个文件名为off的文件中，如果你想关闭错误日志记录功能，应使用以下配置：
error_log /dev/null crit;
]]></description>
		<link>http://www.gzv8.com/archives/366</link>
			</item>
	<item>
		<title>开启Apache Server Status</title>
		<description><![CDATA[


Apache的日志又多又杂，如果靠分析日志或者查看服务器进程来监视Apache运行状态的话，比较繁冗。其实在Apache 1.3.2及以后的版本中就自带一个查看Apache状态的功能模块server-status
打开Apache Server Status如果你的Apache配置文件httpd.conf或者extra/httpd-info.conf中有LoadModule status_module modules/mod_status.so话，说明你的Apache已经加载了此模块；或者编译的时候加上了–enable-module=so也表明服务器支持server-status。
如果Apache没有加载这个模块，如果是linux服务器，就得重新编译Apache，加上–enable-module=so参数即可；如果你是windows系统的话，无需任何编译，只要把刚才时候说的LoadModule status_module modules/mod_status.so这句加上，如果前面有带#号，开启的话，需要将#去除。
 
配置Apache Server Status

&#60;location /ccvita-server-status&#62; SetHandler server-status Order Deny,Allow Deny from all Allow from www.ccvita.com&#60;/location&#62;ExtendedStatus On


这是一个完整的server-status的配置。第一行的ccvita-server-status表示以后可以用类似http://www.ccvita.com/ccvita-server-status来访问，同时http://www.ccvita.com/ccvita-server-status?refresh=N将表示访问状态页面可以每N秒自动刷新一次；Deny from表示禁止的访问地址；Allow from表示允许的地址访问；ExtendedStatus On表示的是待会访问的时候能看到详细的请求信息，另外该设置仅能用于全局设置，不能在特定的虚拟主机中打开或关闭。启用扩展状态信息将会导致服务器运行效率降低。



]]></description>
		<link>http://www.gzv8.com/archives/363</link>
			</item>
	<item>
		<title>PHP服务器端特性的配置加强PHP的安全</title>
		<description><![CDATA[通过对php一些服务器端特性的配置加强php的安全
前面象Shaun Clowes和rfp等都比较详细的介绍了php、cgi程序在编程过程中遇到的问题，以及如何通过应用程序漏洞突破系统，这篇文章我们来通过对php的一些服务器端特性来进行配置加强php的安全。写cgi脚本的时候我们的确一定注意各种安全问题，对用户输入进行严格的过滤，但是常在岸边走哪有不湿鞋，吃烧饼哪有不掉芝麻，人有失蹄马有失手，连著名的phpnuke、phpMyAdmin等程序都出现过很严重的问题，更何况象我等小混混写的脚本。所以现在我们假设php脚本已经出现严重问题，比如象前一阵子 phpnuke的可以上传php脚本的大问题了，我们如何通过对服务器的配置使脚本出现如此问题也不能突破系统。
1、编译的时候注意补上已知的漏洞
从4.0.5开始，php的mail函数加入了第五个参数，但它没有好好过滤，使得php应用程序能突破safe_mode的限制而去执行命令。所以使用4.0.5和4.0.6的时候在编译前我们需要修改php源码包里ext/standard/mail.c文件，禁止mail函数的第五参数或过滤shell字符。在mail.c文件的第152行，也就是下面这行：
if (extra_cmd != NULL) {
后面加上extra_cmd=NULL;或extra_cmd = php_escape_shell_cmd(extra_cmd);然后编译php那么我们就修补了这个漏洞。
2、修改php.ini配置文件
以php发行版的php.ini-dist为蓝本进行修改。
1)Error handling and logging
在Error handling and logging部分可以做一些设定。先找到：
display_errors = On
php缺省是打开错误信息显示的，我们把它改为：
display_errors = Off
关闭错误显示后，php函数执行错误的信息将不会再显示给用户，这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置，以及一些其它有用的信息，起码给攻击者的黑箱检测造成一定的障碍。这些错误信息可能对我们自己有用，可以让它写到指定文件中去，那么修改以下：
log_errors = Off
改为：
log_errors = On
以及指定文件，找到下面这行：
;error_log = filename
去掉前面的;注释，把filename改为指定文件，如/usr/local/apache/logs/php_error.log
error_log = /usr/local/apache/logs/php_error.log
这样所有的错误都会写到php_error.log文件里。
2)Safe Mode
php的safe_mode功能对很多函数进行了限制或禁用了，能在很大程度解决php的安全问题。在Safe Mode部分找到：
safe_mode = Off
改为：
safe_mode = On
这样就打开了safe_mode功能。象一些能执行系统命令的函数shell_exec()和&#8220;被禁止，其它的一些执行函数如：exec(), system(), passthru(), popen()将被限制只能执行safe_mode_exec_dir指定目录下的程序。如果你实在是要执行一些命令或程序，找到以下：
safe_mode_exec_dir =
指定要执行的程序的路径，如：
safe_mode_exec_dir = /usr/local/php/exec
然后把要用的程序拷到/usr/local/php/exec目录下，这样，象上面的被限制的函数还能执行该目录里的程序。
关于安全模式下受限函数的详细信息请查看php主站的说明：
http://www.php.net/manual/en/features.safe-mode.php ;
3)disable_functions
如果你对一些函数的危害性不太清楚，而且也没有使用，索性把这些函数禁止了。找到下面这行：
disable_functions =
在”=“后面加上要禁止的函数，多个函数用”,“隔开。
3、修改httpd.conf
如果你只允许你的php脚本程序在web目录里操作，还可以修改httpd.conf文件限制php的操作路径。比如你的web目录是/usr/local/apache/htdocs，那么在httpd.conf里加上这么几行：
&#60;Directory /usr/local/apache/htdocs&#62;
php_admin_value open_basedir /usr/local/apache/htdocs
&#60;/Directory&#62;
这样，如果脚本要读取/usr/local/apache/htdocs以外的文件将不会被允许，如果错误显示打开的话会提示这样的错误：
Warning: open_basedir restriction in effect. File is in wrong directory in
/usr/local/apache/htdocs/open.php on [...]]]></description>
		<link>http://www.gzv8.com/archives/361</link>
			</item>
	<item>
		<title>iftop 安装以及相关参数及说明</title>
		<description><![CDATA[关于 Iftop
iftop 是类似于top的实时流量监控工具。主要用来显示本机网络流量情况及各相互通信的流量集合，如单独同那台机器间的流量大小，非常适合于代理服务器和iptables服务器使用
官方网站：http://www.ex-parrot.com/~pdw/iftop/
安装iftop
安装方法1、编译安装

如果采用编译安装可以到iftop官网下载最新的源码包。
安装前需要已经安装好基本的编译所需的环境，比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。
CentOS上安装所需依赖包：
yum install flex byacc  libpcap ncurses ncurses-devel libpcap-devel
Debian上安装所需依赖包：
apt-get install flex byacc  libpcap0.8 libncurses5
下载iftop
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make &#38;&#38; make install
configure: error: can&#8217;t find pcap.h
You&#8217;re not going to get very far without libpcap.
那你需要先安装libpcap，找到相应的rpm文件，比如：
-rw-r&#8211;r&#8211; 1 root root  108987 Apr  3 08:21 libpcap-0.9.4-8.1.i386.rpm
-rw-r&#8211;r&#8211; 1 root root  119062 Apr  3 08:21 libpcap-devel-0.9.4-8.1.i386.rpm
安装方法2：(懒人办法，最简单)
直接省略上面的步骤
flibpcap-0.9.4-14.el5.x86_64.rpm
CentOS系统：
yum install flex byacc  libpcap ncurses ncurses-devel
wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm
rpm [...]]]></description>
		<link>http://www.gzv8.com/archives/359</link>
			</item>
	<item>
		<title>Mysql 升级到 5.5 GA 时，PHP 5.2.6 编译出错！已解决！</title>
		<description><![CDATA[最近经常有人问我 MySQL Query Cache 相关的问题，就整理一点 MySQL Query Cache 的内容，以供参考。
顾名思义，MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说，Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲，就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。
在大部分的 MySQL 分发版本中，Query Cache 功能默认都是打开的，我们可以通过调整 MySQL Server 的参数选项打开该功能。主要由以下5个参数构成：

query_cache_limit：允许 Cache 的单条 Query 结果集的最大容量，默认是1MB，超过此参数设置的 Query 结果集将不会被 Cache
query_cache_min_res_unit：设置 Query Cache 中每次分配内存的最小空间大小，也就是每个 Query 的 Cache 最小占用的内存空间大小
query_cache_size：设置 Query Cache 所使用的内存大小，默认值为0，大小必须是1024的整数倍，如果不是整数倍，MySQL 会自动调整降低最小量以达到1024的倍数
query_cache_type：控制 Query Cache 功能的开关，可以设置为0(OFF),1(ON)和2(DEMAND)三种，意义分别如下：

0(OFF)：关闭 Query Cache 功能，任何情况下都不会使用 [...]]]></description>
		<link>http://www.gzv8.com/archives/356</link>
			</item>
</channel>
</rss>

