<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[海天旭日的 BLOG - 原创文章]]></title>
  <subtitle type="html"><![CDATA[相信风雨之后终见彩虹]]></subtitle>
  <id>http://www.xpb.cn/blog/</id> 
  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.xpb.cn/blog/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2010-08-07T11:31:51+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[成功配置好了Windows下的Rsync备份]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2010-08-07T11:31:51+08:00</updated>
	  <published>2010-08-07T11:31:51+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rsync是类unix系统下的十分好用的一个数据镜像备份工具。由于rsync特殊的算法，可使本地和远程两台主机的文件，目录之间，快速同步镜像，远程数据备份等功能。在同步过程中，rsync只同步有变化的文件，甚至在一个文件里只同步有变化的部分。所以初次同步完一次之后，重新同步的速度非常快。现在我在美国的linux服务器就是用的Rsync每日自动将数据备份至国内的linux服务器，尽管从美国到中国的网速不算快，但同步备份一次用不了几分钟的时间。因为我服务器上网站更新的不是十分频繁，所以需要同步的文件很少，甚至用不一分钟的时间。<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;至于Windows下的Rsync上会鼓捣了一次，没成功，就没再详细弄，因为现在的服务器用了好几年了，尽管服务器上做了RAID1备份，但还是不放心，之前是采用的定期打包备份到异地服务器的方法。但随着数据的增多（几十个G的零散文件）打包及传输所用的时间和精力可想而知。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;这次配置好了Windows下的Rsync，第一次同步的时候发现速度很快，远比FTP要快。因为网站文件非常零散，用ftp传输速度并不快。使用的时候发现Rsync是先把所有的网站目录创建好，再往目录里面写文件。我的理解是比ftp少了队列文件所需要的时间。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;这回方便了，备份可以直接写一个批处理文件。然后用Windows的计划任务定期执行即可。按我的情况，近200个网站，近30G的文件，每周同步一次的话，同步时间也不过十来分钟。粗略算一下也差不多，按1M/S的速度，十分钟是600M左右。有时这些网站一个周增加的文件还不到600M甚至更少。如果是在局域网中的机器，那就更快了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;我是从江苏电信的服务器备份到日照网通的服务器，由于电信和网通之间的瓶颈，两台服务器之间的速度不是很好。但深夜和早晨时速度还可以，一般都能达到10Mbps左右，所以建议大家在同步或备份的时候，在计划任务中尽量选择深夜或凌晨进行备份。既不影响网站的访问，又保证了速度。另外我发现在SQLserver运行的时候对SQLserver数据库文件无法进行复制从操作，所以也无法进行异地备份工作。可以采取的办法是，设置SQLserver自动备份，同步备份的时候只同步SQLserver的备份文件，或者先用批处理停止SQLserver&nbsp;再进行同步。据我的测试Mysql的数据文件是可以在运行中直接同步的。<br/><br/>&nbsp;&nbsp;&nbsp;具体的配置方法，有时间再写。网上也不少，可以多找几篇仔细参照配置一下，就能成功。<br/><br/><span style="color:Red"><strong>特别注意：在操作的时候一定要先用其他目录测试正常后再进行数据备份。尤其要注意，一定要分清两台服务器之间哪是Rsync服务器，哪是Rsync客户端。切记！</strong></span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=740" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=740</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[世界上最远的距离不是天涯海角，大洋彼岸]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2009-08-28T15:46:49+08:00</updated>
	  <published>2009-08-28T15:46:49+08:00</published>
		  <summary type="html"><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp; 世界上最远的距离不是天涯海角，大洋彼岸，而是网通（联通）与电信的距离。 <BR>以我当前所使用的网络【山东省日照市电信2M ADSL】来测试，看看结果： <BR><BR>1、北京市谷歌(中国)公司 </P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815430656586101.gif" border=0><BR><BR><BR></P>
<P>2、www.gmail.com 服务器远在大洋彼岸的美国加利福尼亚州山景市谷歌公司 <BR></P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815431556595461.gif" border=0></P>
<P><BR><BR>3、www.sina.com.hk 香港 <BR></P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815432656606057.GIF" border=0></P>
<P><BR><BR>4、www.hani.co.kr 韩国 </P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815455156751681.GIF" border=0><BR><BR><BR></P>
<P>5、www.bing.com 美国纽约 </P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815460156761009.GIF" border=0></P>
<P>&nbsp;</P>
<P>6、台湾中华电信</P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815570957429429.GIF" border=0><BR><BR><BR></P>
<P>7、找个离着远点的国家，找了一个南美洲委内瑞拉的网站</P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815461056770977.GIF" border=0>&nbsp;<BR><BR><BR></P>
<P>8、再找一个法国的 <BR></P>
<P><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815461956779213.GIF" border=0><BR><BR><BR><BR>下面隆重登场的是：用日照电信的网络ping日照网通（日照联通）的服务器，看看啥结果？ <BR>ping 61.156.31.1 <BR><BR><img src="http://www.xpb.cn/blog//blog/uploadfile/Image/2009082815463356793445.GIF" border=0><BR><BR><BR>&nbsp;&nbsp;&nbsp; 世界上最远的距离不是天涯海角，大洋彼岸，而是网通（联通）与电信的距离。很神奇！</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=713" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=713</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[原创]关于Nginx+PHP的虚拟主机目录权限控制的探究]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2008-12-29T15:54:38+08:00</updated>
	  <published>2008-12-29T15:54:38+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;Nginx的使用者最近越来越多，很多大型网站也都从Apache或其他平台迁移到了Nginx。但在我使用Nginx的过程中有个问题一直未得到解决，就是如何限制Nginx+PHP的目录权限。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;我们知道，在Apache中可以很容易的对虚拟目录进行权限控制，如：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.xpb.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>&lt;VirtualHost&nbsp;www.xpb.cn&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ServerAdmin&nbsp;xiaopb@live.com<br/>&nbsp;&nbsp;&nbsp;&nbsp;DocumentRoot&nbsp;/usr/www/xpb/<br/>&nbsp;&nbsp;&nbsp;&nbsp;ServerName&nbsp;www.xpb.cn:80<br/>&nbsp;&nbsp;&nbsp;&nbsp;ServerAlias&nbsp;www.xpb.cn<br/>&nbsp;&nbsp;&nbsp;&nbsp;ErrorLog&nbsp;logs/default-error_log<br/>&nbsp;&nbsp;&nbsp;&nbsp;php_admin_value&nbsp;open_basedir&nbsp;&#34;/tmp/:/usr/www/xpb/&#34;<br/>&lt;/VirtualHost&gt;<br/></div></div><br/>&nbsp;&nbsp;关键是后面的这句php_admin_value，这样就限制了php的操作目录仅限于/tmp/和/usr/www/xpb/这两个目录了。对于Apache虚拟主机来说，这个设置十分有用，结合在php.ini中禁用一些php函数，几乎可以杜绝PHP木马对其他站点及系统的危害。我虽没专业做过Linux下的虚拟主机，但相信各大虚拟主机商也是这么做的。<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;看来对于Apache最好的办法还是使用“在php.ini中禁用一些危险的php函数和在Apache虚拟主机中配置php_admin_value”的方式来做虚拟主机的安全。<br/><br/><br/>&nbsp;&nbsp;&nbsp;关于Nginx的配置文件，参考了很多资料，好像是不支持php_admin_value&nbsp;open_basedir，也就是Nginx暂时还没有Apache的&nbsp;php_myadmin_value这类的设置。如果用Nginx做虚拟主机，各用户之间的目录安全控制如何来做呢？网上很多人说，限制上传文件类型，做好程序安全不就行了么？对，对于自己的站点来说这样完全可以。但如果虚拟主机是给别人用的，又给予了FTP权限，总不能不让人上传php文件吧。参考以上，如果用Nginx来做虚拟主机，目前看来安全的配置方法是：<br/><br/><span style="color:Blue">&nbsp;<br/>1、用低权限账号运行Nginx。<br/><br/>2、在php.ini中禁用危险的函数。如：system,passthru,shell_exec,exec,popen,proc_open,chroot,scandir,chgrp,chown等，但禁止太多的函数可能对某些php程序的正常运行产生影响。<br/><br/>3、在php.ini中设置open_basedir,如：open_basedir&nbsp;=&nbsp;&#34;/usr/local/webserver/nginx/html/www.xpb.cn_7da347bc1a9fd621/:/usr/local/webserver/nginx/html/www2.xpb.cn_7da347bc1a9fd621/&#34;<br/><br/>4、各个虚拟主机用户放在不易于猜到的目录，如：www.xpb.cn_7da347bc1a9fd621、www2.xpb.cn_7da347bc1a9fd621<br/><br/>5、自己找一个php木马，自我测试服务器安全！</span><br/><br/><span style="color:Red">6、【2009年7月17日更新】据网上部分资料说，在运行spawn-fcgi&nbsp;的时候带上参数&nbsp;-d&nbsp;open_basedir&nbsp;即可，例如：/usr/sbin/spawn-fcgi&nbsp;-a&nbsp;127.0.0.1&nbsp;-p&nbsp;10080&nbsp;-C&nbsp;20&nbsp;-u&nbsp;www&nbsp;-f&nbsp;&#34;/usr/sbin/php-cgi&nbsp;-d&nbsp;open_basedir=/var/www/wwwroot/:/tmp/&#34;<br/><br/>7、参见下面Rainy&nbsp;fox&nbsp;给出的解决方案。<br/><br/>本方法由于时间原因暂时未做测试验证，大家可以尝试一下，如果可以，相对于以上的几条，应该是比较好的解决方案。</span><br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;另外，暂时还未发现专门针对Nginx的虚拟主机管理软件，如果有知道的可以麻烦说下。<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;看来，在虚拟主机上还是Apache是王道，几乎所有的虚拟主机提供商的专业PHP虚拟主机仍然采用Apache。期待Nginx能够尽快完善这方面的功能设置！有更好解决方法的，也烦请告知。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;顺便提示一下，并非用apache就安全，也并非用linux就安全。在windows下使用Apache，务必配置一下open_basedir&nbsp;，甚至Apache运行权限，因为默认Apache是以system权限运行的，如果站点一旦被上传木马，则会十分危险，当然Linux下的也要设置一下，相信熟悉linux的都应当熟悉，不再赘述。<br/><br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.xpb.cn/blog/images/quote.gif" style="margin:0px 2px -3px 0px" alt="引用内容"/> 引用内容</div><div class="UBBContent"><br/><span style="color:Red">以下引用自作者:Rainy&nbsp;fox&nbsp;&nbsp;&nbsp;来源:<a href="http://www.key0.cn/" target="_blank">http://www.key0.cn/</a>：</span><br/><br/>先来看两份配置文件的部分，只跟大家讲原理，省略了和主题无关的部分，请勿复制就用，明白了原理，就知道该怎么做了。<br/><br/>php.ini<br/><br/>;&nbsp;open_basedir,&nbsp;if&nbsp;set,&nbsp;limits&nbsp;all&nbsp;file&nbsp;operations&nbsp;to&nbsp;the&nbsp;defined&nbsp;directory<br/>;&nbsp;and&nbsp;below.&nbsp;&nbsp;This&nbsp;directive&nbsp;makes&nbsp;most&nbsp;sense&nbsp;if&nbsp;used&nbsp;in&nbsp;a&nbsp;per-directory<br/>;&nbsp;o&#114;&nbsp;per-virtualhost&nbsp;web&nbsp;server&nbsp;configuration&nbsp;file.&nbsp;This&nbsp;directive&nbsp;is<br/>;&nbsp;*NOT*&nbsp;affected&nbsp;by&nbsp;whether&nbsp;Safe&nbsp;Mode&nbsp;is&nbsp;turned&nbsp;On&nbsp;o&#114;&nbsp;Off.<br/>open_basedir&nbsp;=&nbsp;&#34;/myserver/:/tmp/:/var/tmp/&#34;<br/>nginx.conf<br/><br/><br/>http&nbsp;<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;host1.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;/myserver/host1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;~&nbsp;.*\.(php|php5)?$<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#fastcgi_pass&nbsp;&nbsp;unix:/tmp/php-cgi.sock;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;index.php;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;fcgi.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;host2.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;/myserver/host2;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;~&nbsp;.*\.(php|php5)?$<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#fastcgi_pass&nbsp;&nbsp;unix:/tmp/php-cgi.sock;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;index.php;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;fcgi.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;host3.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;/myserver/host3;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;~&nbsp;.*\.(php|php5)?$<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#fastcgi_pass&nbsp;&nbsp;unix:/tmp/php-cgi.sock;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;index.php;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;fcgi.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>配置的基本情况是&nbsp;运行3个网站&nbsp;host1.com&nbsp;&nbsp;host2.com&nbsp;host3.com&nbsp;&nbsp;，php.ini的配置，限制php脚本只能在这三个网站目录的父目录&nbsp;/myserver/&nbsp;下面执行。<br/><br/>这时候我们知道，如果在某一个站点上上传了一个php木马，那么这个木马将可以访问其他两个站点的文件。nignx&nbsp;没有apache那样能够单独设置每个网站的php只能在本目录下访问的功能。这时候我们就要用一点取巧的办法了。<br/><br/>来看这个php.ini的配置。<br/>open_basedir&nbsp;=&nbsp;&#34;/myserver/:/tmp/:/var/tmp/&#34;<br/>其实这个路径也支持&nbsp;(.)&nbsp;[一个点]&nbsp;和&nbsp;(..)&nbsp;[两个点]，也就是当前目录、父目录。于是有下面的配置方法<br/><br/>open_basedir&nbsp;=&nbsp;&#34;.:/tmp/:/var/tmp/&#34;&nbsp;&nbsp;把php文件限制在当前目录，的确，这样确实是访问不到别的两个网站的目录了，但是访问某些页面会出现&nbsp;No&nbsp;input&nbsp;file&nbsp;specified.&nbsp;。<br/><br/>为什么呢，因为上面的这个限制，当你运行或者引用了网站目录下的子目录(或者子目录的子目录....)里的php文件(假定为/myserver/host1/dir1/myphp.php)，而这个子目录文件又要访问上级目录里的文件(/myserver/host1/config.php)，这时候问题就来了，php.ini里设置了myphp.php只能访问该本级目录(/myserver/host1/dir1/)以下的文件，而不能访问/myserver/host1下的直接文件，于是提示：No&nbsp;input&nbsp;file&nbsp;specified.<br/><br/>现在解决办法来了&nbsp;<br/><br/>再看两个配置文件：<br/><br/>下面的这个&nbsp;/subX1/subX2/subX3/..........(N层)&nbsp;，N为你网站上最底层的php文件嵌套级数，如果你网站最多有5级子目录下有php文件，那么就嵌套5层以上。<br/><br/>php.ini<br/><br/><br/>;&nbsp;open_basedir,&nbsp;if&nbsp;set,&nbsp;limits&nbsp;all&nbsp;file&nbsp;operations&nbsp;to&nbsp;the&nbsp;defined&nbsp;directory<br/>;&nbsp;and&nbsp;below.&nbsp;&nbsp;This&nbsp;directive&nbsp;makes&nbsp;most&nbsp;sense&nbsp;if&nbsp;used&nbsp;in&nbsp;a&nbsp;per-directory<br/>;&nbsp;o&#114;&nbsp;per-virtualhost&nbsp;web&nbsp;server&nbsp;configuration&nbsp;file.&nbsp;This&nbsp;directive&nbsp;is<br/>;&nbsp;*NOT*&nbsp;affected&nbsp;by&nbsp;whether&nbsp;Safe&nbsp;Mode&nbsp;is&nbsp;turned&nbsp;On&nbsp;o&#114;&nbsp;Off.<br/>open_basedir&nbsp;=&nbsp;&#34;../../.......(N层):/tmp/:/var/tmp/&#34;<br/>nginx.conf<br/><br/><br/>http&nbsp;<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;host1.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;/myserver/subA1/subA2/subA3/..........(N层)/host1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;~&nbsp;.*\.(php|php5)?$<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#fastcgi_pass&nbsp;&nbsp;unix:/tmp/php-cgi.sock;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;index.php;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;fcgi.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;host2.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;/myserver/subB1/subB2/subB3/..........(N层)/host2;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;~&nbsp;.*\.(php|php5)?$<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#fastcgi_pass&nbsp;&nbsp;unix:/tmp/php-cgi.sock;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;index.php;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;fcgi.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;host3.com;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;/myserver/subC1/subC2/subC3/..........(N层)/host3;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;~&nbsp;.*\.(php|php5)?$<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#fastcgi_pass&nbsp;&nbsp;unix:/tmp/php-cgi.sock;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;index.php;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;fcgi.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>举例N等于5....运行，当访问最底层的php文件&nbsp;/myserver/subA1/subA2/subA3/subA4/subA5/host1/dir1/dir2/dir3/dir4/myphp.php，这个php文件所能访问的上级层到&nbsp;/myserver/subA1/subA2/subA3/subA4/subA5/host1，当访问&nbsp;/myserver/subA1/subA2/subA3/subA4/subA5/host1/myphp2.php&nbsp;文件时候，它所能最多访问到的上级层&nbsp;/myserver/subA1&nbsp;，不能跃出访问到其他站目录里的文件<br/><br/>这样就限制了该站目录下的php程序不能访问别的网站，而对自己网站的访问又充分不受限制。很简单，到此结束。<br/><br/><br/></div></div><br/><br/><br/><br/><span style="color:Red"><strong>关于Nginx：</strong></span><br/><br/><strong>1、简介</strong><br/>&nbsp;&nbsp;&nbsp;Nginx&nbsp;(&#34;engine&nbsp;x&#34;)&nbsp;是一个高性能的&nbsp;HTTP&nbsp;和&nbsp;反向代理&nbsp;服务器，也是一个&nbsp;IMAP/POP3/SMTP&nbsp;代理服务器。&nbsp;Nginx&nbsp;是由&nbsp;Igor&nbsp;Sysoev&nbsp;为俄罗斯访问量第二的&nbsp;Rambler.ru&nbsp;站点开发的，它已经在该站点运行超过四年半了。Igor&nbsp;将源代码以类BSD许可证的形式发布。尽管还是测试版，但是，Nginx&nbsp;已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。更多的请见官方wiki:&nbsp;<a href="http://wiki.codemongers.com/" target="_blank">http://wiki.codemongers.com/</a><br/><br/><strong>2、&nbsp;Nginx的优点</strong><br/><br/>nginx做为HTTP服务器，有以下几项基本特性：<br/>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;处理静态文件，索引文件以及自动索引；打开文件描述符缓冲．<br/>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无缓存的反向代理加速，简单的负载均衡和容错．<br/>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FastCGI，简单的负载均衡和容错．<br/>4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;模块化的结构。包括gzipping,&nbsp;byte&nbsp;ranges,&nbsp;chunked&nbsp;responses,&nbsp;以及&nbsp;SSI-filter等filter。如<br/><br/>果由FastCGI或其它代理服务器处理单页中存在的多个SSI，则这项处理可以并行运行，而不需要相互等待。<br/>5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;支持SSL&nbsp;和&nbsp;TLS&nbsp;SNI．<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Nginx专为性能优化而开发，性能是其最重要的考量,&nbsp;实现上非常注重效率&nbsp;。它支持内核Poll模型，能经受高负载的考验,&nbsp;有报告表明能支持高达&nbsp;50,000&nbsp;个并发连接数。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Nginx具有很高的稳定性。其它HTTP服务器，当遇到访问的峰值，或者有人恶意发起慢速连接时，也很可能会导致服务器物理内存耗尽频繁交换，失去响应，只能重启服务器。例如当前apache一旦上到200个以上进程，web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术，使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接，它只占2.5M内存，所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,&nbsp;nginx比lighthttpd更胜一筹。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Nginx支持热部署。它的启动特别容易,&nbsp;并且几乎可以做到7*24不间断运行，即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下，对软件版本进行进行升级。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Nginx采用master-slave模型,&nbsp;能够充分利用SMP的优势，且能够减少工作进程在磁盘I/O的阻塞延迟。当采用sel&#101;ct()/poll()调用时，还可以限制每个进程的连接数。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Nginx代码质量非常高，代码很规范，&nbsp;手法成熟，&nbsp;模块扩展也很容易。特别值得一提的是强大的Upstream与Filter链。&nbsp;Upstream为诸如reverse&nbsp;proxy,&nbsp;与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以把前一个filter的输出做为当前filter的输入，这有点像Unix的管线。这意味着，一个模块可以开始压缩从后端服务器发送过来的请求，且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Nginx采用了一些os提供的最新特性如对sendfile&nbsp;(Linux&nbsp;2.2+)，accept-filter&nbsp;(FreeBSD&nbsp;4.1+)，TCP_DEFER_ACCEPT&nbsp;(Linux&nbsp;2.4+)&nbsp;的支持，从而大大提高了性能。<br/><br/><span style="color:Red">2009年9月26日更新</span><br/><br/><span style="color:Brown">&nbsp;&nbsp;&nbsp;&nbsp;本文如有更新，将会第一时间在以下网址发布：<a href="http://www.xpb.cn/blog/665.html" target="_blank">http://www.xpb.cn/blog/665.html</a></span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=665" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=665</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[新增Nod32升级ID每天更新]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2008-12-01T15:08:25+08:00</updated>
	  <published>2008-12-01T15:08:25+08:00</published>
		  <summary type="html"><![CDATA[<span style="font-size:12pt">新增升级ID每天更新：&nbsp;<a href="http://www.xpb.cn/nod32" target="_blank">http://www.xpb.cn/nod32</a><br/><br/>使用升级ID可以获得和官方服务器完全同步的病毒库。</span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=654" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=654</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Squid3快速安装]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2008-09-30T11:21:51+08:00</updated>
	  <published>2008-09-30T11:21:51+08:00</published>
		  <summary type="html"><![CDATA[去<a href="http://www.squid-cache.org/" target="_blank">http://www.squid-cache.org/</a>下载最新的tar包<br/><br/>我这里下的是squid3&nbsp;STABLE9&nbsp;下载到/usr/local/src目录<br/><br/>编译安装：<br/><br/>./configure&nbsp;&nbsp;--prefix=/usr/local/squid<br/><br/>---<br/>---<br/><br/>make<br/><br/>make&nbsp;install<br/><br/><br/><br/>安装完毕后,修改目录权限,默认是以&#34;nobody&#34;用户运行squid.所以我们要为/usr/local/squid/var&nbsp;设置相应的权限,否则会报以下错误<br/><br/>FATAL:&nbsp;Failed&nbsp;to&nbsp;make&nbsp;swap&nbsp;directory&nbsp;/usr/local/squid/var/cache:&nbsp;(13)&nbsp;Permission&nbsp;denied<br/>Squid&nbsp;Cache&nbsp;(Version&nbsp;2.5.STABLE13):&nbsp;Terminated&nbsp;abnormally.<br/>CPU&nbsp;Usage:&nbsp;0.000&nbsp;seconds&nbsp;=&nbsp;0.000&nbsp;user&nbsp;+&nbsp;0.000&nbsp;sys<br/>Maximum&nbsp;Resident&nbsp;Size:&nbsp;0&nbsp;KB<br/>Page&nbsp;faults&nbsp;with&nbsp;physical&nbsp;i/o:&nbsp;4<br/><br/>或者以下错误<br/><br/>FATAL:&nbsp;Cannot&nbsp;open&nbsp;&#39;/usr/local/squid/var/logs/access.log&#39;&nbsp;for&nbsp;writing.<br/>The&nbsp;parent&nbsp;directory&nbsp;must&nbsp;be&nbsp;writeable&nbsp;by&nbsp;the<br/>user&nbsp;&#39;nobody&#39;,&nbsp;which&nbsp;is&nbsp;the&nbsp;cache_effective_user<br/>set&nbsp;in&nbsp;squid.conf.<br/><br/>最简单的处理办法就是<br/><span style="color:Red">chown&nbsp;-R&nbsp;nobody:nobody&nbsp;/usr/local/squid/var</span><br/>ok,生成缓存目录<br/>/usr/local/squid/sbin/squid&nbsp;-z<br/><br/>然后启动squid,测试一下是否成功<br/><br/>/usr/local/squid/sbin/squid&nbsp;-NCd1&nbsp;<br/><br/><br/><br/><a href="http://www.xpb.cn/blog/attachments/month_0809/l2008930113114.PNG" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0809/l2008930113114.PNG" border="0"></a><br/><br/><br/><br/><br/>默认端口是3128,用ie测试一下,如果能看到中文的拒绝访问错误提示,就说明安装正确,并且已经使用.<br/><br/>以后就可以直接/usr/local/squid/sbin/squid&nbsp;&amp;&nbsp;后台运行即可.<br/><br/>接下来就是配置squid了....<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=632" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=632</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[使用两个IP实现IIS和Tomcat或Apache公用80端口的方法]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2008-07-09T17:21:59+08:00</updated>
	  <published>2008-07-09T17:21:59+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;前段时间有个JSP网站要在服务器上部署，由于服务器上根本没配置过jsp环境，于是装了Jdk和Tomcat，过程还算顺利，很快就安装好了，但是Tomcat的默认端口是8080，访问网站也带个端口多么不爽，于是第一个想到的便是跟IIS6.0整合，baidu&nbsp;google了大半天，搜出来文章倒是很多，也不知是由于我安装的是最新的JDK和Tomcat，的原因还是其他原因，总之就是不成功，换了两台服务器也没配置成功，到最后不是不能正确运行，就是提示函数不正确，到网上搜，很多人问之类的问题，但几乎没有人正了把经回答的，有些“热心”的倒还说两句“重装一下看看?”“再从头到尾检查一遍试试”。。。算了还是自己搞吧。<br/><span style="color:White">矂&gt;?淪2?2q　€a噝d膟&nbsp;唕8唎鑖i8噚(u(6q槆x竾|x噡8?圛訃?唵h嘓槇??媓1堷垿(j妦笂壆榞皒姠8嫐X媬&#34;嫺hb焊嫮貗m</span><br/>&nbsp;&nbsp;继续搞啊搞，还是不行，最后干脆不搞了，心想即使弄好了，性能还不知怎么样呢。于是想另外的解决方法，因为服务器所在的网络有空闲的ip，便想何不让IIS用一个ip，Tomcat用一个ip，都使用80端口？问了几个人都说不行，两个软件用同一个端口那不冲突么，也有的说两个ip那得需要两块网卡啊。服务器上倒是有两块网卡，但就插了一根网线，另一个闲着。我就是要用一块网卡，两个ip，iis与Tomcat分别监听不同ip的80端口，OK，开始吧。<br/><span style="color:White">桾?琔隨Jy?坏蚣搐O酚eA?硊?L淰塋?广乿R聕Za&gt;Ml!昳汉B婬]?]阦岷緔</span>&nbsp;&nbsp;<br/>&nbsp;&nbsp;我们知道IIS默认情况下是监听所有ip地址的80端口的，也就是说，在网站属性中只要选择“全部未分配”，则该网站就可以使用所有本机可用的ip地址。显然这个不符合我们现在的要求，我们首先将IIS所有站点当中全部改为指定IIS要监听的IP地址，包括默认站点，例如全部改为61.156.31.1。再在网卡中加一个ip，也就是在TCP/ip高级属性中再加一个可用的ip，这样一块网卡就可以使用两个或更多个ip了，看似很简单的操作可能有很多人不知道，认为一块网卡只能设一个ip，呵呵。<br/><span style="color:White">&lt;31P1??(蔪D潑竅忚r藌?,?^\冾H3吸O?匤m;[B4F儧H=莬偛覼A5&gt;8?C€?]?`#糘5j鶎Ii</span><br/>&nbsp;&nbsp;接下来最关键的一步开始了，便是禁用IIS的套接字池(如果这一步没调好，便不会成功)，在微软官方网站上有解释：<br/><br/><a href="http://support.microsoft.com/kb/238131/zh-cn" target="_blank">http://support.microsoft.com/kb/238131/zh-cn</a><br/><br/>&nbsp;&nbsp;&nbsp;概要<br/>在下列情况下，您可能需要禁用套接字池：&nbsp;<br/>1、承载的站点数目不多。&nbsp;<br/>2、有特殊的安全考虑。&nbsp;<br/>3、另一个应用程序或服务器需要某个&nbsp;IP&nbsp;地址上的端口&nbsp;80。&nbsp;<br/><span style="color:White">a犡C?僠?俲-b!d&#39;J2f?{A1案?朄惸?7U)??qK:1P(鶷w陾臵?隷&amp;?楻$9_f鱬?H|9+牗①慛郈睻扲懕弊</span><br/>更多信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;套接字池会导致“Internet&nbsp;信息服务”(IIS)&nbsp;侦听所有&nbsp;IP&nbsp;地址，这样，可能会对具有多个网络的安全域造成安全隐患。另外，带宽调节和性能调整会应用于所有针对同一端口（例如，端口&nbsp;80）进行配置的&nbsp;Web&nbsp;站点。如果基于每个站点进行带宽调节或性能调整，则必须禁用套接字池。&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;由于&nbsp;DisableSocketPooling&nbsp;在&nbsp;IIS&nbsp;6.0&nbsp;元数据库架构&nbsp;(MBSchema.xml)&nbsp;中被定义为有效属性，所以，您仍然可以使用&nbsp;Adsutil.vbs&nbsp;设置该属性，但这种设置不起作用。IIS&nbsp;6.0&nbsp;中的功能是新增的核心级别驱动程序HTTP.sys&nbsp;的一部分。要配置&nbsp;HTTP.sys，您必须使用Httpcfg.exe。&nbsp;有关如何在&nbsp;IIS&nbsp;6.0&nbsp;中禁用套接字池的其他信息，请单击下面的文章编号，以查看&nbsp;Microsoft&nbsp;知识库中相应的文章：&nbsp;<br/>813368&nbsp;(<a href="http://support.microsoft.com/kb/813368/" target="_blank">http://support.microsoft.com/kb/813368/</a>)&nbsp;IIS&nbsp;6.0：设置配置数据库数据&nbsp;DisableSocketPooling&nbsp;没有作用&nbsp;<br/><span style="color:White">舡懆鄣2B磵(斅ㄔAi┹洸萨7?筝棴{,D歖K茱c?SC&#160;&#160;&#160;&#160;椏?嗣袰萳&amp;A4D窽L?摣7矷P谋軯EtqE?*[4V[</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;要禁用套接字池，请执行下列步骤：&nbsp;<br/>1.&nbsp;打开命令提示符并确保您位于&nbsp;X:\Inetpub\Adminscripts&nbsp;文件夹（其中&nbsp;X&nbsp;是&nbsp;IIS&nbsp;安装驱动器）中。为此，请在命令提示符下键入以下<br/><br/>行：<br/>X:<br/><br/>CD\Inetpub\Adminscripts&nbsp;<br/>&nbsp;<br/>2.&nbsp;打开&nbsp;Adminscripts&nbsp;文件夹后，请在命令提示符下键入以下行：<br/>cscript&nbsp;adsutil.vbs&nbsp;set&nbsp;w3svc/disablesocketpooling&nbsp;true&nbsp;<br/>3.&nbsp;该命令反馈如下：<br/>disablesocketpooling&nbsp;:(BOOLEAN)&nbsp;True&nbsp;&nbsp;<br/>4.&nbsp;停止&nbsp;IIS&nbsp;Admin&nbsp;服务，然后再启动它。&nbsp;<br/>5.&nbsp;重新启动&nbsp;WWW&nbsp;服务。&nbsp;<br/><br/><span style="color:White">歷蹰珖氍舶夦鷏罾.{m?C鹠谠n{n簑傷钅洚{o镜汽铼纛{p?7??W柬?颪缗#镗q?J\r蘗畖s?宵髗9哕s蠯U羰I7}u0Q</span><br/><br/>&nbsp;&nbsp;&nbsp;好了，接下来设置IIS要监听的ip地址。到2003的CD下的&nbsp;support/tools/Support.cab。解压出httpcfg.exe文件，COPY到<br/><br/>windows/system32/目录下，用法自己看帮助<br/>命令行：<br/>绑定到某IP：&nbsp;httpcfg&nbsp;set&nbsp;iplisten&nbsp;-i&nbsp;61.156.31.1<br/>即命令使用IIS的只监听指定的IP及端口<br/>查看绑定：&nbsp;httpcfg&nbsp;query&nbsp;iplisten&nbsp;<br/>删除绑定：&nbsp;httpcfg&nbsp;del&#101;te&nbsp;iplisten&nbsp;-i&nbsp;61.156.31.1<br/><br/><span style="color:White">G7?b銬捽RオTK岼圧l杩€&#34;i?瓣?TE寔劎t腈?O?e?癥l~鑄?}h煦K祱U.疀??/&#34;!篐</span><br/>&nbsp;&nbsp;&nbsp;IIS部分到此就设置好了，接下来设置Tomcat，当然或者你用Apache，Resin等也都可以，在Tomcat的配置文件Server.xml里找到<br/><span style="color:White">匬墋?鳹跟k懡幑佣且?关鈸薻A=?訝?⑤?靦Wㄝ?X_&lt;亿g碘€?拷?u4疆</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Connector&nbsp;port=&#34;80&#34;&nbsp;protocol=&#34;HTTP/1.1&#34;&nbsp;connectionTimeout=&#34;20000&#34;&nbsp;&nbsp;redirectPort=&#34;8443&#34;/&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Connector&nbsp;port=&#34;80&#34;&nbsp;protocol=&#34;HTTP/1.1&#34;&nbsp;connectionTimeout=&#34;20000&#34;&nbsp;&nbsp;redirectPort=&#34;8443&#34;&nbsp;address=&#34;61.156.31.2&#34;/&gt;<br/><span style="color:White">黔tm?8|{<br/>儭owx踧埵㎝奼&nbsp;滪y?dZ架g赳觽疕&gt;r_頔]?+S&nbsp;謦T@*?蛭.甆</span><br/>在后面添加上需要Tomcat监听的ip地址即可，例如：address=&#34;61.156.31.2&#34;&nbsp;&nbsp;Apache，Resin或者其他WEB服务器软件都应该有相应的设置的，自己找一下即可。<br/><span style="color:White">納6斆]Q]/ms[茋V棰麃棵m?€餈臔?.d匦a</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;好了接下来重启IIS，重启Tomcat或Apache，怎么？启动失败？提示端口占用？是啊，我也遇到这种情况，捣鼓了大半天要是再不成功我就要放弃了。实在无奈之下重启了一下服务器，哇，好啦。测试一下61.156.31.1访问的是IIS，61.156.31.2访问的是Tomcat可爱的大猫。<br/><br/><span style="color:White">Xm=?H5:?M嫾仌M匬墋?鳹跟k懡幑佣且?关鈸薻A=?訝?⑤?靦Wㄝ?X_&lt;亿g碘€?拷?u4疆M邗??</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;实际上，实现IIS和Apache或Tomcat公用80的方法还很多，例如IIS设置8080，Apache设置80，利用Apache反向代理IIS的8080，或者在IIS中安装IIS的Isapi&nbsp;Rewrite，利用IIS的反向代理代理Apache，当然如果IIS站点少，Apache站点多就用第一种方法，IIS站点多，Apache站点少就用第二种方法，但这两种方法在性能上都不是很好，Apache在Windows下的反向代理也有BUG，经常出现Proxy&nbsp;Error的提示，至于IIS的反向代理没用过，因为IIS的ISAPI带反向代理功能的是要收费的。<br/><br/><strong><span style="color:Red">原创文章，转载请注明出处！</span></strong>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=623" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=623</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[原创]Wordpress效率与其他程序评测与分析]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2008-04-26T23:40:24+08:00</updated>
	  <published>2008-04-26T23:40:24+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;见到网上很多人貌似都十分推崇Wordpress，甚至很多从其他程序转过去的，就好像用wp够档次似的，也不知是因为看很多专业人士用，自己也要用，或是就因为wp是国外的程序的原因？<br/><br/>程序结构方面的详细的对比以后再发，先从最直接也是程序最重要的一个指标程序执行效率上看：<br/><br/>先说一下服务器环境，至强3.2G，1G内存，PHP5.2.5，Mysql5.0.51a，Windows&nbsp;server2003&nbsp;IIS6.0&nbsp;&nbsp;Wordpress2.5.1<br/><br/>1、在安装完不使用任何插件的情况下，只发表一篇日志，为防止iis运行时间过长对结果产生影响，发表完后重新启动服务器IIS，运行wordpress程序，我的天，就一片日志，如此慢！<br/><br/><div align="center"><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/n2008426233124.PNG"><a href="http://www.xpb.cn/blog/attachments/month_0804/n2008426233124.PNG" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/n2008426233124.PNG" border="0"></a></a></div><br/><div align="center"><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/z200842992532.JPG"><a href="http://www.xpb.cn/blog/attachments/month_0804/z200842992532.JPG" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/z200842992532.JPG" border="0"></a></a></div><br/><br/><br/>就一篇日志，没有插件初次打开首页程序执行时间3.979秒，23次数据查询！刷新一下后，22次查询，0.640秒。跟我现在的ASP+Access的程序都不再一个档次上。在WEB程序上，超过0.3秒就算很大了。真是搞不清楚就是一个博客，为何如需要此多的数据查询。程序执行时间是反应程序健康及优化程度，服务器配置、优化情况的最直接的参数和体现。<br/><br/><br/>也许你说是我服务器配置环境不好的原因，那就再比较一下其他类的程序在同样我的服务器环境下的执行时间，前几天看到Discuz6.1出来了，就拿它来做测试吧，以下分别是第一次和第二次程序执行时间：<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/y2008426233830.PNG"><a href="http://www.xpb.cn/blog/attachments/month_0804/y2008426233830.PNG" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/y2008426233830.PNG" border="0"></a></a><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/02008426233835.PNG"><a href="http://www.xpb.cn/blog/attachments/month_0804/02008426233835.PNG" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/02008426233835.PNG" border="0"></a></a><br/><br/><br/><br/>再来试一下Sablog的：<br/><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/q200842623422.PNG"><a href="http://www.xpb.cn/blog/attachments/month_0804/q200842623422.PNG" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/q200842623422.PNG" border="0"></a></a><br/><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/e2008426233916.PNG"><a href="http://www.xpb.cn/blog/attachments/month_0804/e2008426233916.PNG" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/e2008426233916.PNG" border="0"></a></a><br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;必须承认的是，我的服务器上跑PHP程序的网站不多，负载也不大，所以就没有专门针对PHP程序进行专门的优化，主要是mysql数据库参数的一些优化，也没有使用Apache。如果在Linux下，针对PHP环境进行特别的优化，利用加速程序，缓存等，PHP程序包括大型论坛执行时间在0.00X的数量级是很容易的，当然是说有一定数据量的情况下，并非拿来个空数据库甚至就十条白条数据的数据库来说读取数据快。但wordpress即使是一篇日志，也从未到0.0x的数量级<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;其次，看别人的Wordpress博客最反感的就是长网页，说的不好听点，网页长了就叫又臭又长，也没有个列表模式，总是把一大堆的日志显示在首页上，既增加了数据库和服务器负载，又十分不便于快速浏览。尤其是第一次看人的博客想看看大体都写了些什么，拖着小小的滚动条眼睛费力搜索，实在累人不浅，也许你可能说，不是有搜索么，对啊，可我不知道你都写了些什么，如何搜索？还有一个朋友一开始用的WordPress，访问量大了，服务器直接导致经常死机，不得不换了其他的博客程序。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;其次，就算作为博客追求功能强，定制度高，但也不能比一个大型的PHP论坛如Discuz，PHPwind等论坛麻烦吧？测试程序执行时间，WP的效率远远比这些论坛都差。为什么一个小小的博客搞得竟然比论坛还慢？实在费解。更不用说再安装众多的插件了。<br/><br/><br/>&nbsp;&nbsp;&nbsp;最后，感觉还是不相信WP的执行效率就这么垃圾？于是不厌其烦的到google、baidu搜索其他Wordpress博客，结论是真证实了确实执行效率够垃圾（光说程序执行效率上）以下是结果：<br/><br/><br/><br/><span style="color:red"><strong><div align="center"><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w1.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w1.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w1.jpg" border="0"></a></a><br/><br/>1.027秒<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w2.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w2.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w2.jpg" border="0"></a></a><br/><br/>0.489秒<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w3.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w3.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w3.jpg" border="0"></a></a><br/><br/>1.42秒&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.0.63&nbsp;(Unix)&nbsp;mod_ssl/2.0.63&nbsp;OpenSSL/0.9.8b&nbsp;mod_auth_passthrough/2.1&nbsp;mod_bwlimited/1.4&nbsp;PHP/5.2.5&nbsp;<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w4.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w4.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w4.jpg" border="0"></a></a><br/><br/>4.2秒&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/1.3.41&nbsp;(Unix)&nbsp;PHP/5.2.5&nbsp;mod_ssl/2.8.31&nbsp;OpenSSL/0.9.8c&nbsp;<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w5.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w5.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w5.jpg" border="0"></a></a><br/><br/>1.421秒&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.0.63&nbsp;(Unix)&nbsp;mod_ssl/2.0.63&nbsp;OpenSSL/0.9.8b&nbsp;mod_auth_passthrough/2.1&nbsp;mod_bwlimited/1.4&nbsp;FrontPage/5.0.2.2635&nbsp;PHP/5.2.5<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w6.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w6.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w6.jpg" border="0"></a></a><br/><br/>0.238秒&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.0.63&nbsp;(Unix)&nbsp;mod_ssl/2.0.63&nbsp;OpenSSL/0.9.8b&nbsp;mod_auth_passthrough/2.1&nbsp;mod_bwlimited/1.4&nbsp;FrontPage/5.0.2.2635&nbsp;PHP/5.2.5<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w7.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w7.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w7.jpg" border="0"></a></a><br/><br/>1.756秒&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.0.61&nbsp;(Unix)&nbsp;PHP/4.4.7&nbsp;mod_ssl/2.0.61&nbsp;OpenSSL/0.9.7e&nbsp;mod_fastcgi/2.4.2&nbsp;DAV/2&nbsp;SVN/1.4.2<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w1.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w1.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w1.jpg" border="0"></a></a><br/><br/>1.027秒<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w8.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w8.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w8.jpg" border="0"></a></a><br/><br/>0.555秒&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.2.8&nbsp;(Unix)&nbsp;mod_ssl/2.2.8&nbsp;OpenSSL/0.9.8g&nbsp;DAV/2&nbsp;mod_auth_passthrough/2.1&nbsp;mod_bwlimited/1.4&nbsp;FrontPage/5.0.2.2635<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w9.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w9.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w9.jpg" border="0"></a></a><br/><br/>0.856&nbsp;竟然有49次数据查询！！！<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w10.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w10.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w10.jpg" border="0"></a></a><br/><br/>0.551秒&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.2.8&nbsp;(Unix)&nbsp;mod_ssl/2.2.8&nbsp;OpenSSL/0.9.8g&nbsp;DAV/2&nbsp;mod_auth_passthrough/2.1&nbsp;mod_bwlimited/1.4&nbsp;FrontPage/5.0.2.2635&nbsp;<br/><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w11.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w11.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w11.jpg" border="0"></a></a><br/><br/>这个记录高！！11.407秒&nbsp;&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.2.6&nbsp;(Fedora)&nbsp;<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w12.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w12.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w12.jpg" border="0"></a></a><br/><br/>4.463秒&nbsp;&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.0.61&nbsp;(Unix)&nbsp;PHP/4.4.7&nbsp;mod_ssl/2.0.61&nbsp;OpenSSL/0.9.7e&nbsp;mod_fastcgi/2.4.2&nbsp;DAV/2&nbsp;SVN/1.4.2&nbsp;<br/><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w13.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w13.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w13.jpg" border="0"></a></a><br/><br/>0.257秒&nbsp;&nbsp;&nbsp;&nbsp;服务器环境：Linux&nbsp;&nbsp;Apache/2.2&nbsp;<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/w14.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/w14.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/w14.jpg" border="0"></a></a><br/><br/>0.744秒&nbsp;&nbsp;Linux&nbsp;&nbsp;Apache&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/></div></strong></span><br/><br/><br/><br/>我们再来看一下国内各大论坛的：<br/><br/><br/><br/><span style="color:red"><strong><div align="center"><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/leadbbs1.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/leadbbs1.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/leadbbs1.jpg" border="0"></a></a><br/><br/>LeadBBS的ASP讨论区版块，帖子数量473130<br/><br/>0.016秒&nbsp;&nbsp;服务器类型不用检测了，服务器环境：windows&nbsp;server2003无疑<br/><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/leadbbs2.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/leadbbs2.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/leadbbs2.jpg" border="0"></a></a><br/><br/>直接翻页至2167页时的执行时间<br/><br/>0.313秒<br/><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/im2861.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/im2861.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/im2861.jpg" border="0"></a></a><br/><br/>落伍者论坛资源交流专栏版块，帖子数量9415721&nbsp;，&nbsp;940多万！<br/><br/>0.010872秒&nbsp;&nbsp;服务器环境：Linux+Apache<br/><br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/im2862.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/im2862.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/im2862.jpg" border="0"></a></a><br/><br/><br/><br/>落伍者论坛资源交流专栏版块直接翻页至999页执行时间<br/><br/>0.949476秒<br/><br/><a target="_blank" href="http://www.xpb.cn/blog/attachments/month_0804/discuz1.jpg"><a href="http://www.xpb.cn/blog/attachments/month_0804/discuz1.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0804/discuz1.jpg" border="0"></a></a><br/><br/><br/><br/>Discuz官方论坛安装使用版块，帖子数量1274144<br/><br/>0.018436秒&nbsp;&nbsp;Discuz官方服务器&nbsp;Linux&nbsp;&nbsp;nginx/0.6.29&nbsp;&nbsp;</span>&nbsp;&nbsp;<br/></div><br/><div align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;事实胜于雄辩！！Wordpress这样的PHP程序，效率连asp+access都差了好几个档次，跟其他大型的php程序更不是在一两个档次。也许你说又是没有开缓存，又是没有生成静态啦，如果一个程序执行效率都不行，日志数量多或访问量大就造成服务不可用的话，再多的插件又有什么用？有兴趣的可以把wordpress导入百万数据试一下，程序执行效率更是慢的让人吃惊。相反其他php博客程序就快的多。提高程序的运行效率难道不是一个优秀的甚至合格的程序员所必须甚至首先考虑的？</div></strong><br/><br/><br/><br/><span style="color:Red"><strong>另外转一篇详细分析wordpress的效率的文章，这边文章说的更加具体了：</strong></span><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.xpb.cn/blog/images/quote.gif" style="margin:0px 2px -3px 0px" alt="引用内容"/> 引用内容</div><div class="UBBContent"><br/><a href="http://www.21andy.com/blog/20070216/591.html" target="_blank">http://www.21andy.com/blog/20070216/591.html</a><br/><br/>昨天一个IXWEBHOSTING空间受到警告，被停了数据库，原因是占用资源太厉害，WORDPRESS实在是个吃资源的大户，特别是CPU资源。<br/><br/>一直以来，一直都想重新写个简洁高效版的WORDPRESS，这2天动手写了一下，发现了一些WORDPRESS速度慢的一些主要原因。以及我的解决方法。<br/><br/>1.&nbsp;一篇文章多个分类：<br/>每篇文章可以同时属于多个分类，在&nbsp;wp_post2cat&nbsp;中来实现一篇文章属于多个分类，这样就会造成列表查询时，为了得到每一篇文章的所属分类，会有非常多次数的查询<br/><br/>下面我说说WP中每一篇文章的分类链接是如何出来的：<br/>1.1&nbsp;显示列表时，会先从wp_posts中取出ID,标题,内容等主要字段<br/>1.2.&nbsp;再根据上一步得到的文章ID&nbsp;在wp_post2cat中选择分类ID<br/>1.3.&nbsp;再根据得到分类ID后，再到`wp_categories`这个表中取每个分类ID的名称等内容<br/><br/>每一个条列表里的文章都要重复进行这些操作，数据库查询次数太多了！不断的频繁向`wp_post2cat`和`wp_categories`表查询，这是瓶颈所在。<br/><br/>如果一篇文章只属于一个分类，就会非常快，因为只需要一次查询就搞定了，ID,标题,分类,内容,都可以一次性取得.而WP设计的结构就是这样，没有办法避免.所以只能从其他方面考虑优化。<br/><br/>解决方案:<br/>在不改变WORDPRESS数据库结构的情况下，可以将整个`wp_categories`输出文本数组进行缓存，这样要取得分类名称，就可以直接从数组中取，速度快好几倍。<br/>备注：本来我想将分类字段改成内容像&nbsp;1,2,3&nbsp;这样的字段，这样就可以实现一篇文章多个分类，但是反过来，要查询某一分类的文章，就不行了，还需要另外的表，所以wordpress的数据库表结构并没有什么问题，关键还是在于程序！另外在研究WORDPRESS数据库表的时候，发现有好多字段都设置得很大，像可以用TEXT的它却用LONGTEXT，可以用INT(10)的它却用INT(20)等等<br/><br/>分类的缓存，可以在后面我说到的根据首页缓存来定时更新，除非你闲着没事整天改文章的分类。<br/><br/>2.&nbsp;边栏按月归档&nbsp;ARCHIVE的分月列表<br/>这是取月份列表的SQL语句&nbsp;<br/><br/>Sel&#101;ct&nbsp;DISTINCT&nbsp;YEAR(post_date)&nbsp;AS&nbsp;`year`,&nbsp;MONTH(post_date)&nbsp;AS&nbsp;`month`,&nbsp;count(ID)&nbsp;as&nbsp;posts&nbsp;FROM&nbsp;`wp_posts`&nbsp;Wh&#101;re&nbsp;post_type&nbsp;=&nbsp;&#39;post&#39;&nbsp;AND&nbsp;post_status&nbsp;=&nbsp;&#39;publish&#39;&nbsp;GROUP&nbsp;BY&nbsp;YEAR(post_date),&nbsp;MONTH(post_date)&nbsp;o&#114;DER&nbsp;BY&nbsp;post_date&nbsp;DESC<br/>这部份执行时间是比较多的，为了取得月份列表，对整个wp_posts表进行查询，实在不应该！而且每个页面，都会有这个操作！<br/>这部份最最应该缓存！！！因为这玩意一个月更新一次缓存都可以了，不缓存的话，当文章有几万的时候，每个页面进行这个操作，是相当可怕的！<br/>这部份缓存后只是一个数组，执行时间几乎是0<br/>说到这里，还有个日历的区域，这个比按月归档要猛得多了，我觉得可以删除了，没有什么实际意义。<br/><br/>3.&nbsp;边栏的分类列表<br/>这部份看似简单，也要进行很多次数据库查询！虽然执行时间不算多，但查询次数实在太多了，因为有上下级的关系，这部份不必细说，和其他&nbsp;CMS的分类表基本差不多，进行分类缓存后，这部份的速度，提升10倍，同时，也应用于上面的第一点。<br/><br/>WORDPRESS的程序结构设计的过于强大和复杂，数据库查询他本身已经是优化了的，要相信世界上这么多程序高手在写这个程序<br/>正是因为这个强大的原因，程序考虑到太多的变动原因和太多的情况判断，导致效率非常低下，结构非常复杂，把一些非常简单的事都复杂化了<br/><br/>4.&nbsp;TAG部份<br/>如果使用到TAG，和分类表基本一样的，最好也进行缓存<br/>说到底，要速度快，就要进行缓存，进行最少次数的数据库查询，程序简单，再加上缓存，效率自然就高<br/><br/>目前WORDPRESS有WP-CACHE这个PLUGIN可以来做缓存用，但缺点太多<br/>1.&nbsp;WP-CACHE是对整页进行缓存<br/>2.&nbsp;整站所有页面缓存时间都相同，无法控制首页，列表页，TAG页，搜索结果页，文章页不同的缓存时间<br/><br/>我重写的WORDPRESS只写完列表页和文章页，有2个版本<br/>一个是超级优化的，仍然用WORDPRESS的原版数据库，分类和ARCHIVE缓存，不进行分类表的查询<br/>将这些查询很耗时间的东西都做成局部缓存，在这一层之上，再做整页缓存，可以控制首页，列表页，TAG页，搜索结果页，文章页不同的缓存时间<br/>内容仍然和WORDPRESS基本一样，包括标题，时间，分类，内容等<br/>在3万文章的情况下，每页执行时间没有超过0.01秒的，而默认的WORDPRESS最少也要0.7秒，相差70倍，放到空间上，一页执行个6秒都是正常的，更不用说高负载的情况了，不被停空间才怪！<br/>用上了局部缓存+整页缓存，优化到最后，执行时间基本和静态页面一致，因为最终的就是读取整个缓存页面<br/><br/>另一个是不进行缓存的版本，执行时间最少也在0.3秒以上，才发现，不缓存，对多个表进行查询进行多次查询是难免的，提升不了太大的效率<br/><br/>期待WORDPRESS也能应用好缓存，为爱好者们省点CPU资源吧。MYSQL不是那么好查询的，别没事整天查。<br/></div></div><br/><br/><br/>另外一篇：<br/><a href="http://www.21andy.com/blog/20060813/374.html" target="_blank">http://www.21andy.com/blog/20060813/374.html</a><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.xpb.cn/blog/images/quote.gif" style="margin:0px 2px -3px 0px" alt="引用内容"/> 引用内容</div><div class="UBBContent"><br/>受不了Wordpress的速度,今天非要找出个所以然来.<br/>开始!<br/>在wp-config.php中加入<br/><br/>&gt;&lt;?php<br/>define(&#39;SAVEQUERIES&#39;,&nbsp;true);&nbsp;?&gt;<br/><br/>在模板文件footer.php中加入<br/><br/>&gt;&lt;?php<br/>var_dump($wpdb-&gt;queries);&nbsp;?&gt;<br/><br/>修改模板,并卸了所有的PLUGIN,将wp恢复到最简洁状态,然后运行测试.<br/><br/>一共6万文章,首页执行时间在16-30秒左右,分类的列表页执行效率居然高了快7倍,在4秒左右.<br/><br/>来看看执行首页都有哪些查询<br/><br/>19&nbsp;queries.&nbsp;16.817&nbsp;seconds.<br/><br/>array(19)&nbsp;{<br/>[0]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(65)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;’siteurl’”<br/>[1]=&gt;<br/>float(0.000766038894653)<br/>}<br/>[1]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(71)&nbsp;“Sel&#101;ct&nbsp;option_name,&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;autoload&nbsp;=&nbsp;‘yes’”<br/>[1]=&gt;<br/>float(0.00127911567688)<br/>}<br/>[2]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(79)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘rewrite_rules’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000645875930786)<br/>}<br/>[3]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(79)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘rewrite_rules’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000285863876343)<br/>}<br/>[4]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(207)&nbsp;”&nbsp;Sel&#101;ct&nbsp;DISTINCT&nbsp;*&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;1=1&nbsp;AND&nbsp;post_date_gmt&nbsp;&lt;=&nbsp;&#39;2006-08-13&nbsp;06:41:59&#39;&nbsp;AND&nbsp;(post_status&nbsp;=&nbsp;&#34;publish&#34;)&nbsp;AND&nbsp;post_status&nbsp;!=&nbsp;&#34;attachment&#34;&nbsp;GROUP&nbsp;BY&nbsp;wp_posts.ID&nbsp;o&#114;DER&nbsp;BY&nbsp;post_date&nbsp;DESC&nbsp;LIMIT&nbsp;0,&nbsp;50&#34;<br/>[1]=&gt;<br/>float(12.4344360828)<br/>}<br/>[5]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(356)&nbsp;“Sel&#101;ct&nbsp;post_id,&nbsp;category_id&nbsp;FROM&nbsp;wp_post2cat&nbsp;Wh&#101;re&nbsp;post_id&nbsp;IN&nbsp;(29271,&nbsp;550,&nbsp;33318,&nbsp;23145,&nbsp;55913,&nbsp;15376,&nbsp;48144,&nbsp;9332,&nbsp;42100,&nbsp;2081,&nbsp;34849,&nbsp;21539,&nbsp;54307,&nbsp;31042,&nbsp;20684,&nbsp;53452,&nbsp;3023,&nbsp;35791,&nbsp;18805,&nbsp;51573,&nbsp;2775,&nbsp;35543,&nbsp;14502,&nbsp;47270,&nbsp;17286,&nbsp;50054,&nbsp;20112,&nbsp;52880,&nbsp;22078,&nbsp;54846,&nbsp;27809,&nbsp;19048,&nbsp;51816,&nbsp;30658,&nbsp;6829,&nbsp;39597,&nbsp;11084,&nbsp;43852,&nbsp;29775,&nbsp;29859,&nbsp;14854,&nbsp;47622,&nbsp;23742,&nbsp;56510,&nbsp;11496,&nbsp;44264,&nbsp;10043,&nbsp;42811,&nbsp;30274,&nbsp;18221)”<br/>[1]=&gt;<br/>float(0.0330619812012)<br/>}<br/>[6]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(27)&nbsp;“Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;wp_categories”<br/>[1]=&gt;<br/>float(0.000616073608398)<br/>}<br/>[7]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(391)&nbsp;“Sel&#101;ct&nbsp;post_id,&nbsp;meta_key,&nbsp;meta_value&nbsp;FROM&nbsp;wp_postmeta&nbsp;Wh&#101;re&nbsp;post_id&nbsp;IN(29271,&nbsp;550,&nbsp;33318,&nbsp;23145,&nbsp;55913,&nbsp;15376,&nbsp;48144,&nbsp;9332,&nbsp;42100,&nbsp;2081,&nbsp;34849,&nbsp;21539,&nbsp;54307,&nbsp;31042,&nbsp;20684,&nbsp;53452,&nbsp;3023,&nbsp;35791,&nbsp;18805,&nbsp;51573,&nbsp;2775,&nbsp;35543,&nbsp;14502,&nbsp;47270,&nbsp;17286,&nbsp;50054,&nbsp;20112,&nbsp;52880,&nbsp;22078,&nbsp;54846,&nbsp;27809,&nbsp;19048,&nbsp;51816,&nbsp;30658,&nbsp;6829,&nbsp;39597,&nbsp;11084,&nbsp;43852,&nbsp;29775,&nbsp;29859,&nbsp;14854,&nbsp;47622,&nbsp;23742,&nbsp;56510,&nbsp;11496,&nbsp;44264,&nbsp;10043,&nbsp;42811,&nbsp;30274,&nbsp;18221)&nbsp;o&#114;DER&nbsp;BY&nbsp;post_id,&nbsp;meta_key”<br/>[1]=&gt;<br/>float(0.000411033630371)<br/>}<br/>[8]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(278)&nbsp;“Sel&#101;ct&nbsp;DISTINCT&nbsp;YEAR(post_date)&nbsp;AS&nbsp;`year`,&nbsp;MONTH(post_date)&nbsp;AS&nbsp;`month`,&nbsp;count(ID)&nbsp;as&nbsp;posts&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;post_date&nbsp;&lt;&nbsp;&#39;2006-08-13&nbsp;14:41:21&#39;&nbsp;AND&nbsp;post_date&nbsp;!=&nbsp;&#39;0000-00-00&nbsp;00:00:00&#39;&nbsp;AND&nbsp;post_status&nbsp;=&nbsp;&#39;publish&#39;&nbsp;GROUP&nbsp;BY&nbsp;YEAR(post_date),&nbsp;MONTH(post_date)&nbsp;o&#114;DER&nbsp;BY&nbsp;post_date&nbsp;DESC&#34;<br/>[1]=&gt;<br/>float(1.06055593491)<br/>}<br/>[9]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(86)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘kubrick_header_image’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000422954559326)<br/>}<br/>[10]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(86)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘kubrick_header_color’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000302076339722)<br/>}<br/>[11]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(88)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘kubrick_header_display’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000371932983398)<br/>}<br/>[12]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(45)&nbsp;“Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;wp_users&nbsp;Wh&#101;re&nbsp;ID&nbsp;=&nbsp;‘1′&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000383138656616)<br/>}<br/>[13]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(64)&nbsp;“Sel&#101;ct&nbsp;meta_key,&nbsp;meta_value&nbsp;FROM&nbsp;wp_usermeta&nbsp;Wh&#101;re&nbsp;user_id&nbsp;=&nbsp;‘1′”<br/>[1]=&gt;<br/>float(0.000432968139648)<br/>}<br/>[14]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(155)&nbsp;“Sel&#101;ct&nbsp;COUNT(DISTINCT&nbsp;ID)&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;1=1&nbsp;AND&nbsp;post_date_gmt&nbsp;&lt;=&nbsp;&#39;2006-08-13&nbsp;06:41:59&#39;&nbsp;AND&nbsp;(post_status&nbsp;=&nbsp;&#34;publish&#34;)&nbsp;AND&nbsp;post_status&nbsp;!=&nbsp;&#34;attachment&#34;&#34;<br/>[1]=&gt;<br/>float(1.02000594139)<br/>}<br/>[15]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(169)&nbsp;”<br/>Sel&#101;ct&nbsp;cat_ID,&nbsp;cat_name,&nbsp;category_nicename,&nbsp;category_description,&nbsp;category_parent,&nbsp;category_count<br/>FROM&nbsp;wp_categories<br/>Wh&#101;re&nbsp;cat_ID&nbsp;&gt;&nbsp;0<br/>o&#114;DER&nbsp;BY&nbsp;cat_name&nbsp;asc”<br/>[1]=&gt;<br/>float(0.00116395950317)<br/>}<br/>[16]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(76)&nbsp;“Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;post_status&nbsp;=&nbsp;’static’&nbsp;o&#114;DER&nbsp;BY&nbsp;post_title&nbsp;ASC”<br/>[1]=&gt;<br/>float(0.935003995895)<br/>}<br/>[17]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(278)&nbsp;“Sel&#101;ct&nbsp;DISTINCT&nbsp;YEAR(post_date)&nbsp;AS&nbsp;`year`,&nbsp;MONTH(post_date)&nbsp;AS&nbsp;`month`,&nbsp;count(ID)&nbsp;as&nbsp;posts&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;post_date&nbsp;&lt;&nbsp;&#39;2006-08-13&nbsp;14:41:24&#39;&nbsp;AND&nbsp;post_date&nbsp;!=&nbsp;&#39;0000-00-00&nbsp;00:00:00&#39;&nbsp;AND&nbsp;post_status&nbsp;=&nbsp;&#39;publish&#39;&nbsp;GROUP&nbsp;BY&nbsp;YEAR(post_date),&nbsp;MONTH(post_date)&nbsp;o&#114;DER&nbsp;BY&nbsp;post_date&nbsp;DESC&#34;<br/>[1]=&gt;<br/>float(0.997811079025)<br/>}<br/>[18]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(295)&nbsp;”<br/>Sel&#101;ct&nbsp;DISTINCT&nbsp;link_category,&nbsp;cat_name,&nbsp;show_images,<br/>show_description,&nbsp;show_rating,&nbsp;show_up&#100;ated,&nbsp;sort_order,<br/>sort_desc,&nbsp;list_limit<br/>FROM&nbsp;`wp_links`<br/>LEFT&nbsp;JOIN&nbsp;`wp_linkcategories`&nbsp;ON&nbsp;(link_category&nbsp;=&nbsp;cat_id)<br/>Wh&#101;re&nbsp;link_visible&nbsp;=&nbsp;‘Y’<br/>AND&nbsp;list_limit&nbsp;&lt;&gt;&nbsp;0<br/>o&#114;DER&nbsp;BY&nbsp;cat_name&nbsp;”<br/>[1]=&gt;<br/>float(0.00177693367004)<br/>}<br/>}<br/><br/>很明显,第一个加粗部份的sql语句,居然执行了12秒!我汗!!!!<br/>再来看看分类列表页都执行了些啥样的sql<br/><br/>19&nbsp;queries.&nbsp;3.430&nbsp;seconds.&nbsp;<br/><br/>array(19)&nbsp;{<br/>[0]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(65)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;’siteurl’”<br/>[1]=&gt;<br/>float(0.000646114349365)<br/>}<br/>[1]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(71)&nbsp;“Sel&#101;ct&nbsp;option_name,&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;autoload&nbsp;=&nbsp;‘yes’”<br/>[1]=&gt;<br/>float(0.00108289718628)<br/>}<br/>[2]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(79)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘rewrite_rules’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000606060028076)<br/>}<br/>[3]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(79)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘rewrite_rules’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000309944152832)<br/>}<br/>[4]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(27)&nbsp;“Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;wp_categories”<br/>[1]=&gt;<br/>float(0.000545978546143)<br/>}<br/>[5]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(32)&nbsp;“Sel&#101;ct&nbsp;cat_ID&nbsp;FROM&nbsp;wp_categories”<br/>[1]=&gt;<br/>float(0.000543117523193)<br/>}<br/>[6]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(292)&nbsp;”&nbsp;Sel&#101;ct&nbsp;DISTINCT&nbsp;*&nbsp;FROM&nbsp;wp_posts&nbsp;LEFT&nbsp;JOIN&nbsp;wp_post2cat&nbsp;ON&nbsp;(wp_posts.ID&nbsp;=&nbsp;wp_post2cat.post_id)&nbsp;Wh&#101;re&nbsp;1=1&nbsp;AND&nbsp;(category_id&nbsp;=&nbsp;35)&nbsp;AND&nbsp;post_date_gmt&nbsp;&lt;=&nbsp;&#39;2006-08-13&nbsp;06:43:59&#39;&nbsp;AND&nbsp;(post_status&nbsp;=&nbsp;&#34;publish&#34;)&nbsp;AND&nbsp;post_status&nbsp;!=&nbsp;&#34;attachment&#34;&nbsp;GROUP&nbsp;BY&nbsp;wp_posts.ID&nbsp;o&#114;DER&nbsp;BY&nbsp;post_date&nbsp;DESC&nbsp;LIMIT&nbsp;0,&nbsp;50&#34;<br/>[1]=&gt;<br/>float(0.0346350669861)<br/>}<br/>[7]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(363)&nbsp;“Sel&#101;ct&nbsp;post_id,&nbsp;category_id&nbsp;FROM&nbsp;wp_post2cat&nbsp;Wh&#101;re&nbsp;post_id&nbsp;IN&nbsp;(41073,&nbsp;41074,&nbsp;41058,&nbsp;41053,&nbsp;41066,&nbsp;40988,&nbsp;41070,&nbsp;40992,&nbsp;41034,&nbsp;41056,&nbsp;41020,&nbsp;40996,&nbsp;41051,&nbsp;40989,&nbsp;41023,&nbsp;41017,&nbsp;40991,&nbsp;41039,&nbsp;41071,&nbsp;40993,&nbsp;41077,&nbsp;41031,&nbsp;41030,&nbsp;41062,&nbsp;41002,&nbsp;41025,&nbsp;41028,&nbsp;41021,&nbsp;41047,&nbsp;40990,&nbsp;41008,&nbsp;41061,&nbsp;41042,&nbsp;41033,&nbsp;41052,&nbsp;41065,&nbsp;41078,&nbsp;41076,&nbsp;41004,&nbsp;41049,&nbsp;41043,&nbsp;41014,&nbsp;41027,&nbsp;40998,&nbsp;41036,&nbsp;41059,&nbsp;41050,&nbsp;41072,&nbsp;41011,&nbsp;41069)”<br/>[1]=&gt;<br/>float(0.00174999237061)<br/>}<br/>[8]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(398)&nbsp;“Sel&#101;ct&nbsp;post_id,&nbsp;meta_key,&nbsp;meta_value&nbsp;FROM&nbsp;wp_postmeta&nbsp;Wh&#101;re&nbsp;post_id&nbsp;IN(41073,&nbsp;41074,&nbsp;41058,&nbsp;41053,&nbsp;41066,&nbsp;40988,&nbsp;41070,&nbsp;40992,&nbsp;41034,&nbsp;41056,&nbsp;41020,&nbsp;40996,&nbsp;41051,&nbsp;40989,&nbsp;41023,&nbsp;41017,&nbsp;40991,&nbsp;41039,&nbsp;41071,&nbsp;40993,&nbsp;41077,&nbsp;41031,&nbsp;41030,&nbsp;41062,&nbsp;41002,&nbsp;41025,&nbsp;41028,&nbsp;41021,&nbsp;41047,&nbsp;40990,&nbsp;41008,&nbsp;41061,&nbsp;41042,&nbsp;41033,&nbsp;41052,&nbsp;41065,&nbsp;41078,&nbsp;41076,&nbsp;41004,&nbsp;41049,&nbsp;41043,&nbsp;41014,&nbsp;41027,&nbsp;40998,&nbsp;41036,&nbsp;41059,&nbsp;41050,&nbsp;41072,&nbsp;41011,&nbsp;41069)&nbsp;o&#114;DER&nbsp;BY&nbsp;post_id,&nbsp;meta_key”<br/>[1]=&gt;<br/>float(0.000437021255493)<br/>}<br/>[9]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(278)&nbsp;“Sel&#101;ct&nbsp;DISTINCT&nbsp;YEAR(post_date)&nbsp;AS&nbsp;`year`,&nbsp;MONTH(post_date)&nbsp;AS&nbsp;`month`,&nbsp;count(ID)&nbsp;as&nbsp;posts&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;post_date&nbsp;&lt;&nbsp;&#39;2006-08-13&nbsp;14:43:36&#39;&nbsp;AND&nbsp;post_date&nbsp;!=&nbsp;&#39;0000-00-00&nbsp;00:00:00&#39;&nbsp;AND&nbsp;post_status&nbsp;=&nbsp;&#39;publish&#39;&nbsp;GROUP&nbsp;BY&nbsp;YEAR(post_date),&nbsp;MONTH(post_date)&nbsp;o&#114;DER&nbsp;BY&nbsp;post_date&nbsp;DESC&#34;<br/>[1]=&gt;<br/>float(1.01349496841)<br/>}<br/>[10]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(86)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘kubrick_header_image’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000421047210693)<br/>}<br/>[11]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(86)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘kubrick_header_color’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.00031304359436)<br/>}<br/>[12]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(88)&nbsp;“Sel&#101;ct&nbsp;option_value&nbsp;FROM&nbsp;wp_options&nbsp;Wh&#101;re&nbsp;option_name&nbsp;=&nbsp;‘kubrick_header_display’&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000300168991089)<br/>}<br/>[13]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(45)&nbsp;“Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;wp_users&nbsp;Wh&#101;re&nbsp;ID&nbsp;=&nbsp;‘1′&nbsp;LIMIT&nbsp;1″<br/>[1]=&gt;<br/>float(0.000428915023804)<br/>}<br/>[14]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(64)&nbsp;“Sel&#101;ct&nbsp;meta_key,&nbsp;meta_value&nbsp;FROM&nbsp;wp_usermeta&nbsp;Wh&#101;re&nbsp;user_id&nbsp;=&nbsp;‘1′”<br/>[1]=&gt;<br/>float(0.000426054000854)<br/>}<br/>[15]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(240)&nbsp;“Sel&#101;ct&nbsp;COUNT(DISTINCT&nbsp;ID)&nbsp;FROM&nbsp;wp_posts&nbsp;LEFT&nbsp;JOIN&nbsp;wp_post2cat&nbsp;ON&nbsp;(wp_posts.ID&nbsp;=&nbsp;wp_post2cat.post_id)&nbsp;Wh&#101;re&nbsp;1=1&nbsp;AND&nbsp;(category_id&nbsp;=&nbsp;35)&nbsp;AND&nbsp;post_date_gmt&nbsp;&lt;=&nbsp;&#39;2006-08-13&nbsp;06:43:59&#39;&nbsp;AND&nbsp;(post_status&nbsp;=&nbsp;&#34;publish&#34;)&nbsp;AND&nbsp;post_status&nbsp;!=&nbsp;&#34;attachment&#34;&#34;<br/>[1]=&gt;<br/>float(0.039783000946)<br/>}<br/>[16]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(169)&nbsp;”<br/>Sel&#101;ct&nbsp;cat_ID,&nbsp;cat_name,&nbsp;category_nicename,&nbsp;category_description,&nbsp;category_parent,&nbsp;category_count<br/>FROM&nbsp;wp_categories<br/>Wh&#101;re&nbsp;cat_ID&nbsp;&gt;&nbsp;0<br/>o&#114;DER&nbsp;BY&nbsp;cat_name&nbsp;asc”<br/>[1]=&gt;<br/>float(0.001296043396)<br/>}<br/>[17]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(76)&nbsp;“Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;post_status&nbsp;=&nbsp;’static’&nbsp;o&#114;DER&nbsp;BY&nbsp;post_title&nbsp;ASC”<br/>[1]=&gt;<br/>float(0.955458164215)<br/>}<br/>[18]=&gt;<br/>array(2)&nbsp;{<br/>[0]=&gt;<br/>string(278)&nbsp;“Sel&#101;ct&nbsp;DISTINCT&nbsp;YEAR(post_date)&nbsp;AS&nbsp;`year`,&nbsp;MONTH(post_date)&nbsp;AS&nbsp;`month`,&nbsp;count(ID)&nbsp;as&nbsp;posts&nbsp;FROM&nbsp;wp_posts&nbsp;Wh&#101;re&nbsp;post_date&nbsp;&lt;&nbsp;&#39;2006-08-13&nbsp;14:43:38&#39;&nbsp;AND&nbsp;post_date&nbsp;!=&nbsp;&#39;0000-00-00&nbsp;00:00:00&#39;&nbsp;AND&nbsp;post_status&nbsp;=&nbsp;&#39;publish&#39;&nbsp;GROUP&nbsp;BY&nbsp;YEAR(post_date),&nbsp;MONTH(post_date)&nbsp;o&#114;DER&nbsp;BY&nbsp;post_date&nbsp;DESC&#34;<br/>[1]=&gt;<br/>float(1.03362488747)<br/>}<br/>}<br/><br/></div></div><br/><br/>这个分析的够清楚了，真不知道为什么搞这么复杂的查询，有些查询根本不必每次都查，直接放到缓存就可以的。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=613" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=613</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[FreeBSD中不允许root帐号远程登陆的解决]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2008-01-24T23:41:23+08:00</updated>
	  <published>2008-01-24T23:41:23+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeBSD真是有点变态，竟然直接不允许root帐号远程登陆（我安装用的最小安装FreeBSD6.2，其他安装方式未知），在SecureCRT中远程登陆不了，提示需要键盘验证，然而弄了半天还是登陆不了。查阅网上其他文章发现有通过编辑/etc/inetd.conf来解决的，不过本来FreeBSD就是为了安全，通过修改系统配置文件的方式自然感觉不好。<br/><br/>&nbsp;&nbsp;&nbsp;一种比较好的解决方法，添加一个帐户隶属于wheel组，通过该帐户登陆后用su切换至root便可以了。<br/><br/>&nbsp;&nbsp;&nbsp;其次，利用最小化安装的FreeBSD连wget命令也用不了了，起初要编译安装软件时需要先下载软件，最小换安装的既无FTP（WinSCP也因为root无法远程登陆而无法使用），wget命令又无法使用怎么下载软件啊，后来试了一下命令行的ftp，竟然可用！看来以前记得那几条命令行下的ftp命令没有白费。当然后来知道如何解决root无法远程登陆的问题后这个问题也解决了，直接用新建的帐号通过WinSCP传送就可以了。<br/><br/><br/><div align="center"><br/><a href="http://www.xpb.cn/blog/attachments/month_0801/g2008124234047.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0801/g2008124234047.gif" border="0"></a><br/><br/><br/><a href="http://www.xpb.cn/blog/attachments/month_0801/k2008124234058.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0801/k2008124234058.gif" border="0"></a><br/><br/><br/><a href="http://www.xpb.cn/blog/attachments/month_0801/5200812423416.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0801/5200812423416.gif" border="0"></a><br/><br/><br/><a href="http://www.xpb.cn/blog/attachments/month_0801/02008124234313.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/attachments/month_0801/02008124234313.gif" border="0"></a><br/><br/></div><br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=587" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=587</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[【原创】Serv-U终极安全设置攻略]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2008-01-09T17:30:30+08:00</updated>
	  <published>2008-01-09T17:30:30+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文均为本人亲自测试，保证在纯净的windows&nbsp;server&nbsp;2003&nbsp;100%&nbsp;调试成功，如果有调试不成功的，请详细检查软件环境与相关的权限设置。<br/><br/>一、serv-u安全隐患及利用。<br/>二、serv-u安装及安全设置详解。<br/>三、serv-u相关的模式与防火墙设置。<br/>四、关于serv-u的Banner及登录消息的设置。<br/><span style="color:#ffffff">hV芠x1\諲ê侎]鍂S?徭H€垼鑀衿癝▕?T媉G嶮棲V:6w癈?s&nbsp;?輸!蔱t:X鶼?敨ÿ(u7bCgP朹N{_昢2朾k?Ccedil;廤&nbsp;e</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Serv-U是一款十分经典的FTP服务器软件，一直被大部分管理员和虚拟主机所使用，它简单的安装和配置以及强大的管理功能也一直被管理员们称颂。但是随着使用者越来越多，也有越来越多的主机被通过Serv-U软件所入侵。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文旨在提出一些切实可行的方法，彻底杜绝由Serv-u带来的安全隐患。<br/><br/>1、Serv-u的安装：<br/><span style="color:#ffffff">hV芠軴を啾鉃靕cytGFu?eTUF昋?誳h諊韲熜2?橑Ccedil;廤&nbsp;e</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关于Serv-u的安装网上许多文章中提到要安装在一个复杂的路径，个人认为这个不是十分必要，完全可以按照你喜欢的例如：D:\soft\Serv-u目录里。但是不推荐安装在系统盘目录里，也不推荐安装在c:\Program&nbsp;files目录里,因为这个目录的权限的原因（详细权限设置以后再发文专门讨论）。推荐的方式是无需安装，直接使用绿色版的或直接复制在其他机器上安装好的Serv-U的目录。serv-u的用户配置文件有两种方式，一种是存放在注册表，一种是存放在ServUDaemon.ini文件，推荐使用存放在.ini文件里面的方式，这种方式便于ser-u软件的升级，也便于重装系统后的ftp用户的恢复，在权限设置上也相对方便。另外版本的选择一定要选择6.3版本以上的，现在最新的是&nbsp;6.4.0.6&nbsp;，推荐使用，这里我们假设serv-u软件放在的的D:\soft\Serv-U目录里。<br/><span style="color:#ffffff">hV芠x1\諲ê侎]鍂S?ÿ+R篘`觺&nbsp;NN錘N@bô媱v塠hQ亯筽ÿ<br/>(u7bCgP朹NN亯賬0顅剉1\/f{_昢2朾k?Ccedil;廤&nbsp;e</span><br/>2、权限设置：<br/>&nbsp;&nbsp;&nbsp;&nbsp;给serv-u单独的用户权限运行。在计算机管理中新增帐户ftp，设置用户不能更改密码，密码用不过期，并设置一个复杂的密码，更改ftp用户隶属于Guests组（默认是USERS组），当然也可以设置为不属于任何组。<br/><span style="color:#ffffff">枾e剉9ei?堋阸阡A??n淙矼??沶u蘸RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;启动serv-u（这时是使用默认的system权限运行的），选择本地服务器，自动开始，将serv-u设置为系统服务，这样服务器在每次重启时serv-u就会自动启动，这里我们主要利用其可以在服务中配置给serv-u单独用户。<br/><span style="color:#ffffff">枾e剉9ei壵赛z}跚HL哳U贋榪Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;设置D:\soft\Serv-U目录的权限为只保留administrators，ftp两个用户的权限，权限都是完全控制即可，并替换到所有子目录。<br/><span style="color:#ffffff">枾e剉9ei?T峇Õ?Otilde;?RMb壵赛z}跚HL哳U贋榪銷b烺ÿFO瀃?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;在计算机管理中找到服务，找到Serv-U&nbsp;FTP&nbsp;服务器，右键属性，在登录选项卡中将登录身份从本地系统帐户改为此帐户，帐户选择ftp，并输入设置好的密码。确定后会提示将在服务重启后生效，接着点右键，重新启动，如果启动成功，你的serv-u就在低权限下运行了。<br/><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165237436.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165237436.gif" border="0"></a><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上传目录权限的设置：因为serv-u是用ftp这个帐户运行的，所以上传的目录给予ftp用户的完全访问权限就可以了，比如我们可以设置D、E、F盘的权限为administrators和ftp完全控制的权限，System权限也不用加了，如果serv-u用默认权限运行，则必须加入system权限才能对该目录进行ftp操作。<br/><br/><span style="color:#ffffff">?项娽L頟KN腘舢嚿眚玾n嗇L飚秜a椊嵂镬裬}廤&nbsp;e</span><br/><br/>3、安全隐患及利用<br/><span style="color:#ffffff">?项娽埅乱iG?.?`T]??眍;撙堌森杚??&#34;}廤&nbsp;e</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;Serv-u在本机有一个默认监听端口，默认监听127.0.0.1:43958,在本机才能连接这个管理端口,默认管理账号是LocalAdministrator,默认密码是&#34;#l@$ak#.lk;0@P&#34;，这个密码是固定的。所以几乎所有的针对serv-u攻击的木马便是利用此来添加serv-u用户的，比如增加一个指向C盘的超级管理员用户，够可怕吧。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;这里我们用一个常用的ASP木马中举例说明：（serv-u提权超强版）<br/><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238650.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238650.jpg" border="0"></a><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238339.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238339.gif" border="0"></a><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238134.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238134.gif" border="0"></a><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提权后可以直接执行命令添加管理员帐户，并且加了个隐藏的管理员帐户（当然这个帐户隐藏方式比较低级）如果成功了，用这个帐户远程登录上去创建一个克隆的管理员帐户，再把这个删掉）。管理员如果连serv-u安全都做不很好的，对于隐藏度很高的克隆的帐号也不一定能发现，所以Serv-U的安全不容忽视。<br/><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238247.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238247.gif" border="0"></a><br/><br/><span style="color:#ffffff">hV芠x1\諲ê侎]鍂S?ÿ+R篘`觺&nbsp;NN錘N@bô媱v塠hQ亯筽ÿ(u7bCgP朹N<br/>N亯賬0顅剉1\/f{_昢2朾k?Ccedil;廤&nbsp;e</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比如俺一个朋友就喜欢用SQLDebugger&nbsp;、SUPPORT_XXX等这样的帐户克隆出管理员帐户，查看属性又看不出来，很容易逃脱管理员的眼睛。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何彻底解决这个安全隐患，有个最简单的方法就是给serv-u设置一个本地管理密码，也就是所有增加删除修改serv-u的用户及更改设置的操作，都需要经过本地密码验证。<br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238819.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238819.gif" border="0"></a><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可能有的管理员认为服务器密码就他自己知道，别人上不去，更何况增加serv-u帐户了，所以就不设置密码，认为这完全是多此一举，这就大错特错了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里再介绍另一种解决问题的方法，结合上面的设置本地管理密码可以让我们的Serv-u更安全。就是修改serv-u的默认管理帐号和密码，这里我们用到了UltraEdit-32这个软件。<br/><span style="color:#FFFFFF">邳偏?鶜+7檁+踍蛙駊^?这b:鯖?B^gJ?捗弾</span><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238387.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238387.jpg" border="0"></a><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用UltraEdit-32打开servUAdmin.exe&nbsp;查找LocalAdministrator,和#l@$ak#.lk;0@P，将这两个字符串修改为等长度的字符串保存即可，注意一定是等长度的。<br/><span style="color:#ffffff">枾e剉匏Ь酹藶?薹嘌鹒:|魸??騳aa岿r烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当然这还不够，还要打开ServUDaemon.exe，操作如法炮制，但修改后的字符串要务必与ServuAdmin.exe中修改的相同，否则Serv-u是无法进行用户管理的。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经过设置Serv-U本地管理密码和修改Serv-u文件这两步大刀阔斧的改革后，再试试刚才的木马，虽然也能提示执行命令成功，但实际服务器却没有任何变化，奈何不了了。<br/><br/><span style="color:#FF0000"><strong>简单总结一下以上所说的安全要点：</strong></span><br/><br/>1、尽量使用最新版的Serv-u，如果英文还可以，推荐直接用英文版的，如果要用中文的，一定要在其他机器进行测试，确认汉化包无流氓插件后再在正式服务器上使用。<br/><br/>2、设置Serv-u运行于普通用户权限，这样即使通过木马执行net&nbsp;localgroup&nbsp;administrators&nbsp;XXX&nbsp;&nbsp;/Add也不可能执行成功了。<br/><br/>3、设置Serv-u的目录权限，只给administrators和运行serv-u用户的权限，其他的都不要给，尤其是everyone权限（在服务器上使用everyone权限要十分慎重，网上有很多文章图懒法不管三七二十一加个everyone就算了的。您可不要图懒也加个everyone就算了，我所配置的服务器中没有一处是使用everyone权限的。）和guests权限，users用户权限也不要给。目的就是彻底防止通过Webshell访问到Serv-u目录，如果这一步设置不严，即使设了Serv-u密码，通过Webshell下载了你的Serv-u去破解或者用UltraEdit-32打开分析，也一样可能造成攻击。<br/><br/><span style="color:#ffffff">枾e剉9ei?T匏Ь酹藶?薹嘌鹒:??騳aa岿r?ÿq_Ný€衏:ybL坿T銷b烺ÿFO瀃E?g</span><br/>4、磁盘目录权限，也就是你用ftp操作的目录权限例如WEB目录等，除了必要的IIS帐户权限外，只加administrators和用来运行serv-u的帐户的权限即可（可设为完全控制）。<br/><br/>5、务必要设置一个本地管理密码，防止通过Webshell连接默认用户名密码的方式进行攻击。<br/><br/>6、推荐用UltraEdit-32更改serv-u默认的帐户密码，其实也花不了很多时间。<br/><span style="color:#ffffff">枾e剉垥d?射焫蕒礵牣愞攩s窟駷ぺ??陪M瀃E?g</span><br/>7、端口的设置，完全可以根据个人喜好设置，个人认为与安全并无多大关系，因为即使更改了默认的21端口，如果有人想攻击，一样可以扫描出来。<br/><span style="color:#ffffff">枾e剉垥d?射焫蕒礵牣愞攩s窟駷ぺ??陪M瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;只要严格注重了以上几点，那么可以说你可以安全放心的使用你的Serv-u了。当然，服务器的安全是一个整体，任何地方的疏忽都有可能造成整个服务器的安全隐患。以上所说仅仅是与Serv-U相关的安全设置，绝不代表整个服务器就安全了。这一点务必注意。下面说说防火墙的设置。<br/><br/><span style="color:#ffffff">N&gt;Nヱ?H樟X8F?G?偘€眕寑}??柫X&nbsp;Tlte?儯漲晿槃v誰ÿ觺TNb梽v¾媙,g0W</span><br/><br/>三、Serv-u相关的防火墙设置：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关于防火墙的处理最常见的一个难题是主动FTP与被动FTP的区别以及如何配置防火墙并完美地支持它们。很多管理员可能都发现，在开了防火墙的服务器上利用FTP传输总有这样那样的小问题，有时传输数据“不够流畅”。幸运地是，本文能够帮助你彻底搞清在防火墙环境中如何支持FTP这个问题上的烦恼。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FTP服务是仅基于TCP的服务，不支持UDP。&nbsp;与众不同的是FTP使用2个端口，一个数据端口和一个命令端口（也可叫做控制端口）。通常来说这两个端口是命令端口（21）和数据端口（20）。但当我们发现根据（FTP工作）方式的不同数据端口并不总是20时，新的问题就出来了。<br/><span style="color:#ffffff">N&gt;NÿÙ?\&#39;Y晊r晢N0&nbsp;Ù?Igrave;憤Q薔蛜鍿&nbsp;N蛓ã壋Qî槃v筫誰ÿ觺TNb梽v¾媙,g0W</span><br/>主动FTP：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;主动方式的FTP是这样的：客户端从一个任意的非特权端口N（N&gt;;1024）连接到FTP服务器的命令端口，也就是21端口。然后客户端开始监听端口N+1，并发送FTP命令“port&nbsp;N+&nbsp;1”到FTP服务器。接着服务器会从它自己的数据端口（20）连接到客户端指定的数据端口（N+1）。<br/><br/>&nbsp;&nbsp;&nbsp;针对FTP服务器前面的防火墙来说，必须允许以下通讯才能支持主动方式FTP<br/>&nbsp;&nbsp;&nbsp;任何端口到FTP服务器的21端口&nbsp;（客户端初始化的连接&nbsp;S）<br/>&nbsp;&nbsp;&nbsp;FTP服务器的21端口到大于1023的端口（服务器响应客户端的控制端口&nbsp;S-&gt;C）<br/>&nbsp;&nbsp;&nbsp;FTP服务器的20端口到大于1023的端口（服务器端初始化数据连接到客户端的数据端口&nbsp;S-&gt;C）<br/>&nbsp;&nbsp;&nbsp;大于1023端口到FTP服务器的20端口（客户端发送ACK响应到服务器的数据端口&nbsp;S）<br/><br/>&nbsp;&nbsp;&nbsp;主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接，它只是简单的告诉服务器自己监听的端口号，服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说，这是从外部系统建立到内部客户端的连接，这是通常会被阻塞的。<br/><span style="color:#ffffff">υm鯚毷篗D朗-l旽$詻(?欺谮$\??蓘辛瀃E?g</span><br/>被动FTP<br/><br/>&nbsp;&nbsp;&nbsp;为了解决服务器发起到客户的连接的问题，人们开发了一种不同的FTP连接方式。这就是所谓的被动方式，或者叫做PASV，当客户端通知服务器它处于被动模式时才启用。在常用的FTP传输软件中也均有相关设置，例如FlashFXP的在选项-》参数设置-》代理里面就有相关选项。<br/><br/><span style="color:#ffffff">N&gt;k溩?涞铆薍眂Ao瞸臓旔搖?_L?~&#34;臥{簝Q蛜鍿&nbsp;N蛓ã壋Qî晿槃v筫誰ÿ觺T<br/>Nb梽v¾媙,g0W</span><br/><br/>&nbsp;&nbsp;&nbsp;在被动方式FTP中，命令连接和数据连接都由客户端，这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时，客户端打开两个任意的非特权本地端口（N&nbsp;&gt;;&nbsp;1024和N+1）。第一个端口连接服务器的21端口，但与主动方式的FTP不同，客户端不会提交PORT命令并允许服务器来回连它的数据端口，而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口（P&nbsp;&gt;;&nbsp;1024），并发送PORT&nbsp;P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。<br/><br/>&nbsp;&nbsp;&nbsp;对于服务器端的防火墙来说，必须允许下面的通讯才能支持被动方式的FTP:<br/>&nbsp;&nbsp;&nbsp;从任何端口到服务器的21端口&nbsp;（客户端初始化的连接&nbsp;S）<br/>&nbsp;&nbsp;&nbsp;服务器的21端口到任何大于1023的端口&nbsp;（服务器响应到客户端的控制端口的连接&nbsp;S-&gt;C）<br/>&nbsp;&nbsp;&nbsp;从任何端口到服务器的大于1023端口&nbsp;（入；客户端初始化数据连接到服务器指定的任意端口&nbsp;S）<br/>&nbsp;&nbsp;&nbsp;<span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;服务器的大于1023端口到远程的大于1023的端口（出；服务器发送ACK响应和数据到客户端的数据端口&nbsp;S-&gt;C）<br/><span style="color:#ffffff">T减鵔◆鱑h:窟焜郮,?坍?Hig0W</span><br/><span style="color:#ffffff">枾e剉9ei?ÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>下面简要总结一下主动与被动FTP优缺点：&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;主动FTP对FTP服务器的管理有利，但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接，而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利，但对服务器端的管理不利。因为客户端要与服务器端建立两个连接，其中一个连到一个高位随机端口，而这个端口很有可能被服务器端的防火墙阻塞掉。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;幸运的是，有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接，那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样，不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险，但它大大减少了危险。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;说了这么多,到底如何设置呢？我们来举例说明（防火墙以Windwos防火墙为例）：<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;在安装Serv-U并初次运行的时候，防火墙会提示提示是否允许Serv-U连接网络，这里我们选择允许。这样ServUDaemon.exe就在防火墙的信任的程序当中了。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;再在防火墙中添加端口，注意如果你的FTP端口是默认的21，那么需要添加两个端口，21和20。如果你的FTP端口是1000，那么还要添一个999，以此类推。值得一提的是，添加完端口后，在防火墙的高级设置里就不用设置了，以个人经验这个地方如果再开启了，反而会有些问题。之前曾因为这个地方的设置百思不得其解而郁闷过，后来终于搞懂只设一个地方即可。如图所示：<br/><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238790.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238790.gif" border="0"></a><br/><br/>&nbsp;&nbsp;&nbsp;接下来设置Serv-U的PASV：如图所示，这个地方的设置关系到常遇到的FTP传输是否“流畅”的问题，尤其是在网速慢的情况。这里的端口范围要指定的一定要是服务器上空闲的一段端口范围，比如有的软件用了3306，这里就不要用3000-3500了，这个地方所说的也就是前面提到的为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这也是国内很多虚拟主机商的做法。<br/><br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238719.gif" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238719.gif" border="0"></a><br/><br/>&nbsp;&nbsp;&nbsp;再来看一下传输的情况：从FlashFXP的传输日志中可以看到没传输一个文件端口就会从指定的PASV端口加一个，加到最大后再重新返回端口范围的最小端口，如此循环实现FTP文件传送。显然如果这里不能顺利的开启端口，就会造成FTP传输的停顿，也就是常说的不流畅，需要重新连接一下FTP。<br/><a href="http://www.xpb.cn/blog/editor/uploadfile/20080109165238993.jpg" class="highslide" onclick="return hs.expand(this, {captionId: 'caption1'})"><img src="http://www.xpb.cn/blog/editor/uploadfile/20080109165238993.jpg" border="0"></a><br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/>&nbsp;&nbsp;&nbsp;总之，Serv-U涉及的防火墙方面的设置并不是很多，基本上就是防火墙模式中最常见的基于端口的和基于程序的两种方式，其他防火墙也可以按此设置即可。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otilde;?RMb剉(gl?ÿ}?q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/><br/>四、最后补充一点关于Serv-u的Banner和登录消息设置。<br/><br/>&nbsp;&nbsp;&nbsp;大家可能都碰到的类似以下的连接FTP服务器时的提示信息，其实这个地方即使不知道对方FTP帐户密码，只要知道端口（也可能通过扫描出的端口尝试出来）用FTP传输软件连接一下就会出来了，甚至直接在DOS窗口用命令提示符open一下你的FTP服务器，也会出来类似的提示信息，这样岂不就老老实实的告诉别人你用的Serv-U做的FTP服务器并且所用的版本了么？<br/><br/>[右]&nbsp;已连接到&nbsp;60.215.XX.XX<br/>[右]&nbsp;220&nbsp;Serv-U&nbsp;FTP&nbsp;Server&nbsp;v6.4&nbsp;for&nbsp;WinSock&nbsp;ready...<br/>[右]&nbsp;USER&nbsp;XPB<br/>[右]&nbsp;331&nbsp;User&nbsp;name&nbsp;okay,&nbsp;need&nbsp;password.<br/>[右]&nbsp;PASS&nbsp;(隐藏)<br/>[右]&nbsp;230&nbsp;User&nbsp;logged&nbsp;in,&nbsp;proceed.<br/>[右]&nbsp;SYST<br/>[右]&nbsp;215&nbsp;UNIX&nbsp;Type:&nbsp;L8<br/>[右]&nbsp;FEAT<br/>[右]&nbsp;211-Extension&nbsp;supported<br/>[右]&nbsp;&nbsp;CLNT<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;其实在Serv-u中也有设置，在域的设置中有消息一项，可以自定义服务器响应消息，这里可以根据你喜欢的把这些消息改掉，例如改为Welcome&nbsp;to&nbsp;Microsoft&nbsp;FTP&nbsp;Service...&nbsp;等等其他FTP服务软件的Banner,可以起到一定的迷惑作用。<br/><span style="color:#ffffff">枾e剉9ei?Tÿ峇Õ?Otild;?RMb剉(l?ÿ}q_Ný€衏:ygbL坿T銷b烺ÿFO瀃E?g</span><br/><br/>其次我们说一下大家可能也常碰到的下面这种提示是如何做出来的。<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.xpb.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/><br/>[右]&nbsp;已连接到&nbsp;202.194.XXX.XXX<br/>[右]&nbsp;220-欢迎登录XX大学FTP服务器...<br/>[右]&nbsp;220-你的IP地址是：211.64.XXX.XXX&nbsp;<br/>[右]&nbsp;220-目前服务器所在的时间是&nbsp;08:56:45&nbsp;<br/>[右]&nbsp;220-已经有&nbsp;1585&nbsp;个用户在最近24小时访问过本FTP&nbsp;<br/>[右]&nbsp;220-本FTP服务器已经运行了&nbsp;21&nbsp;天，18&nbsp;小时&nbsp;和&nbsp;6&nbsp;分。&nbsp;<br/>[右]&nbsp;220-<br/>[右]&nbsp;220-服务器的运行情况：&nbsp;<br/>[右]&nbsp;220-<br/>[右]&nbsp;220-所有登录用户数量：&nbsp;26&nbsp;total&nbsp;<br/>[右]&nbsp;220-当前登录用户数量：&nbsp;18&nbsp;<br/>[右]&nbsp;220-已经下载字节数：&nbsp;372000&nbsp;Kb&nbsp;<br/>[右]&nbsp;220-已经上传字节数：&nbsp;118940&nbsp;Kb&nbsp;<br/>[右]&nbsp;220-已经下载文件数：&nbsp;92&nbsp;<br/>[右]&nbsp;220-已经上传文件数：&nbsp;1360&nbsp;<br/>[右]&nbsp;220-服务器平均带宽：&nbsp;810&nbsp;Kb/sec&nbsp;<br/>[右]&nbsp;220&nbsp;服务器当前带宽：&nbsp;945&nbsp;Kb/sec&nbsp;<br/>[右]&nbsp;USER&nbsp;xpb<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;其实这个设置这个地方也很简单，只需要设置一个用户登录时的消息文件就可以了，设置的地方就在Serv-u的域的设置里面，就在上边设置服务器响应消息的下面，其中登录消息文件格式如下：<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.xpb.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>您已经成功登录FTP服务器&nbsp;<br/>你的IP地址是：%IP&nbsp;<br/>目前服务器所在的时间是&nbsp;%time&nbsp;<br/>已经有&nbsp;%u24h&nbsp;个用户在最近24小时访问过本FTP&nbsp;<br/>本FTP服务器已经运行了&nbsp;%ServerDays&nbsp;天，%ServerHours&nbsp;小时&nbsp;和&nbsp;%ServerMins&nbsp;分。&nbsp;<br/><br/>服务器的运行情况：&nbsp;<br/><br/>所有登录用户数量：&nbsp;%loggedInAll&nbsp;total&nbsp;<br/>当前登录用户数量：&nbsp;%Unow&nbsp;<br/>已经下载字节数：&nbsp;%ServerKbDown&nbsp;Kb&nbsp;<br/>已经上传字节数：&nbsp;%ServerKbUp&nbsp;Kb&nbsp;<br/>已经下载文件数：&nbsp;%ServerFilesDown&nbsp;<br/>已经上传文件数：&nbsp;%ServerFilesUp&nbsp;<br/>服务器平均带宽：&nbsp;%ServerAvg&nbsp;Kb/sec&nbsp;<br/>服务器当前带宽：&nbsp;%ServerKBps&nbsp;Kb/sec&nbsp;<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;将此文件保存问例如logininfo.txt的文本文件，放于Serv-u目录（也可以放到其他目录，放到这里是因为不用再单独设置该文件的权限了），然后把该文件设置为登录时的消息文件，就可以了。<br/><br/><br/>如果文章有不妥之处，也可以联系我探讨：xiaopb@live.com&nbsp;&nbsp;本文也会不断更新修正。<br/><span style="color:#e61a1a"><strong>原创文章，转载请与本人联系！原文地址：<a href="http://www.xpb.cn/blog/580.html" target="_blank">http://www.xpb.cn/blog/580.html</a></strong></span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=580" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=580</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Windows2003利用VPN+NAT+静态路由表建立网通电信双线VPN服务器]]></title>
	  <author>
		 <name>Admin</name>
		 <uri>http://www.xpb.cn/blog/</uri>
		 <email>xiaopbx@163.com</email>
	  </author>
	  <category term="" scheme="http://www.xpb.cn/blog/default.asp?cateID=16" label="原创文章" /> 
	  <updated>2007-12-18T15:26:44+08:00</updated>
	  <published>2007-12-18T15:26:44+08:00</published>
		  <summary type="html"><![CDATA[<p align="left"><strong><font color="#ff0000">原创文章，转载请注明出处。</font></strong></p>
<p align="left"><strong>一、问题的提出<br /></strong><br />&nbsp;&nbsp;&nbsp; 目前我的电脑采用ADSL上网，拥有一台服务器同时用光纤接入网通和电信网络，并且网络状况良好，要实现的是让所有ADSL接入的机器通过服务器来上网，并且实现网通电信自动切换，即网通走网通线路，电信走电信线路。当然可以很简单的利用路由表+代理服务器的方式来实现，但这样客户端使用很不方便，各种软件使用时均需要设置代理，最主要的是认证方式不好控制，利用用户名+密码方式的话，每次连接网络都需要输入用户名和密码很不方便，如果采用IP验证，又不太适合普通ADSL等动态IP用户，使用MAC地址验证，也不方便，因为很多ADSL是使用路由器上网，MAC地址应当是路由的MAC，经过尝试也很不方便，于是想采用VPN来实现。</p>
<p align="left">&nbsp;<br /><strong>二、什么是</strong><strong>VPN<br /></strong>&nbsp;<br />&nbsp;&nbsp;&nbsp; VPN(Virtual Private Network) 技术是指采用隧道技术以及加密、身份认证等方法，在公众网络上构建专用网络的技术，数据通过安全的 &ldquo; 加密管道 &rdquo; 在公众网络中传播。 目前VPN在一些大型企业尤其是一些具有分公司的企业越来越多的应用。<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; 之所以称为虚拟网主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路， 而是架构在公用网络服务商（例如网通或电信）所提供的网络平台之上的逻辑网络。 <br /><br /><strong>三、设置</strong><strong>VPN</strong><strong>服务<br /></strong>&nbsp;<br />&nbsp;&nbsp;&nbsp; 实现VPN的方式非常多，用带VPN功能的路由器或用Linux、windows等操作系统等都可以实现，而在windows系统下用单网卡或双网卡建立VPN服务器更容易实现。介绍这方面的内容很多，不再赘述。本文介绍的是在windows 2003中用双网卡实现NAT，其中双网卡分别接入网通和电信网络，使所有连接到服务器的VPN用户都能利用服务器的路由策略来实现网通电信自动切换，达到快速登录网通或电信网站的效果。 <br /><br />&nbsp;&nbsp;&nbsp; 下面介绍实际实现过程，本文环境是有一台具有公网IP的服务器并且已经连通网通和电信网络， </p>
<p align="left">&nbsp;&nbsp;&nbsp; 首先打开服务将Windows Firewall/Internet Connection Sharing（ICS）服务设为禁用，必须这样设置才能进行下一步。</p>
<p align="center"><br />&nbsp;<br /><img height="225" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image001.gif" width="553" /></p>
<p align="center">　</p>
<p align="left">在控制面板-》管理工具中打开路由和远程访问。设置过程如下图所示：　　 </p>
<p align="left">　</p>
<p align="center"><img height="379" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image002.gif" width="509" /></p>
<p align="center"><img height="438" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image003.gif" width="504" /></p>
<p align="center"><img height="440" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image004.gif" width="508" /></p>
<p align="center"><img height="441" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image005.gif" width="508" /></p>
<p align="center"><img height="440" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image006.gif" width="508" /></p>
<p align="center"><img height="175" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image007.gif" width="390" /></p>
<p align="left">　</p>
<p align="left">&nbsp;&nbsp;&nbsp; 下面配置具有拨入权限的帐号：在用户和组里新建一个帐号（为了安全我们加入Guests组）并在拨入选项卡中选择允许访问，也可以在下面选中分配静态IP，指定一个静态IP给该用户。</p>
<p align="center">&nbsp;<br /><img height="383" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image008.gif" width="543" /></p>
<p align="center">　</p>
<p align="left"><br />&nbsp;&nbsp;&nbsp; 下面配置配置NAT： <br /><br />&nbsp;&nbsp;&nbsp; 在路由和远程访问-》IP路由规则-》常规点右键 新增路由协议，选择NAT/基本防火墙</p>
<p align="center"><br />&nbsp;<br /><img height="395" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image009.gif" width="410" /></p>
<p align="center">　</p>
<p align="left">&nbsp;&nbsp; 接着在NAT/基本防火墙点右键新增接口，选择其中一个如网通连接，并选中公用接口连接到Internet和在此接口上启用NAT，地址池和其他选项也可以一并配置（不配置也可）。 </p>
<p align="left">　</p>
<p align="center"><img height="384" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image010.gif" width="389" /><br /><br /><img height="486" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image011.gif" width="411" /></p>
<p align="center">　</p>
<p align="left">&nbsp;&nbsp; 同样对于另一个网卡电信连接的网卡也如法炮制，配置好。 </p>
<p align="left">&nbsp;&nbsp; 至此具有NAT功能的VPN服务器便基本搭建好了，但是现在服务器并不能根据自动判断网通跟电信的线路，还需要<a href="http://www.xpb.cn/blog/article.asp?id=546" target="_blank">配置一下服务器的静态路由表</a>。静态路由表的设置也比较简单。<a href="http://www.xpb.cn/blog/attachments/month_0711/9200711717936.rar">http://www.xpb.cn/blog/attachments/month_0711/9200711717936.rar</a>? 里面收录了最新的网通电信路由表，如果有最新出的也可以继续补充，此处是按非网通即电信处理的，我已经做好了一个批处理文件，使用时只需要将其中的网通网关和电信网关换为您服务器的网关就可以了。如果清除所有路由表可以使用route&nbsp;-f&nbsp;,特别注意：在远程操作的服务器上请慎用此命令。 </p>
<p align="left">　　<strong>四、从客户端连接到VPN服务器<br /></strong>&nbsp;<br />右键网络属性-》创建一个新的连接：</p>
<p align="center">　 <br /><img height="383" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image013.jpg" width="506" border="0" /></p>
<p align="center"><img height="385" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image015.jpg" width="508" border="0" /></p>
<p align="center"><img height="387" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image017.jpg" width="509" border="0" /></p>
<p align="center"><img height="370" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image019.jpg" width="353" border="0" /></p>
<p align="center">　</p>
<p>&nbsp;&nbsp;&nbsp; 至此如果一切配置都正确的话，应该就可以连上VPN了。为了提高DNS的解析速度，我们把本VPN连接的DNS也设置一下，此处我们是做的网通电信双线路，可以设置一个网通DNS服务器和一个电信DNS服务器地址。这里我们设了两个山东地区常用的DNS，网通：202.102.128.68，电信：219.146.0.130</p>
<p>　</p>
<p align="center"><img height="398" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image021.jpg" width="553" border="0" /></p>
<p align="center">　</p>
<p>&nbsp;&nbsp; 如果一切都正常的话，分别访问网通和电信的网站试试。以下是我用普通ADSL连接到VPN后的速度下载测试。</p>
<p>&nbsp;&nbsp; 注：此处下载速度与以下几项有直接关系：VPN客户端到VPN服务器的速度，VPN服务器到被访问站点的速度。本文中服务器采用双光纤接入，后者影响可以忽略。</p>
<p>　</p>
<p align="center"><img height="234" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image023.jpg" width="353" border="0" /></p>
<p align="center"><img height="229" alt="" src="http://www.xpb.cn/blog/attachments/month_0712/vpn/clip_image025.jpg" width="335" border="0" /></p>
<p align="center">　</p>
<p align="left">&nbsp; 另外，本文提到的方法同样适合与其他网络环境，例如校园网和公网的使用等等，大家也可以尝试出更多的应用来。</p>
<br /><a href="http://bbs.51cto.com/thread-449408-1-1.html" target="_blank">bbs.51cto.com精华文章</a>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xpb.cn/blog/default.asp?id=576" /> 
	  <id>http://www.xpb.cn/blog/default.asp?id=576</id> 
  </entry>	
		
</feed>