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

<channel>
	<title>esayr&#039;s blog &#187; 服务器配置</title>
	<atom:link href="http://www.esayr.com/category/server/feed" rel="self" type="application/rss+xml" />
	<link>http://www.esayr.com</link>
	<description>有友共尊田舍酒,无事面对古人书</description>
	<lastBuildDate>Tue, 25 May 2010 09:02:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SAS vs SATA2 读写速度测试</title>
		<link>http://www.esayr.com/2008/11/20/archives_71.html</link>
		<comments>http://www.esayr.com/2008/11/20/archives_71.html#comments</comments>
		<pubDate>Thu, 20 Nov 2008 05:20:48 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/?p=71</guid>
		<description><![CDATA[两机器,CPU及其它硬件基本一致
复制文件
命令:time cp ubuntu-8.10-server-i386.iso* soft/
SAS 1.5万转硬盘
real    0m5.739s
user    0m0.010s
sys     0m3.160s
SATA 7200转硬盘
real    0m48.345s
user    0m0.050s
sys     0m7.750s
--------------------------------------
压缩两个600M的ISO文件
命令:time tar cjvf ubuntu-8.10-server-i386.iso* a.tar.gz
SAS 1.5万转硬盘
real    3m5.572s
user    3m3.770s
sys     0m2.430s

SATA 7200转硬盘
real    8m26.911s
user [...]]]></description>
			<content:encoded><![CDATA[<p>两机器,CPU及其它硬件基本一致</p>
<p>复制文件<br />
命令:time cp ubuntu-8.10-server-i386.iso* soft/</p>
<p><strong>SAS 1.5万转硬盘</strong><br />
real    0m5.739s<br />
user    0m0.010s<br />
sys     0m3.160s</p>
<p><strong>SATA 7200转硬盘</strong><br />
real    0m48.345s<br />
user    0m0.050s<br />
sys     0m7.750s</p>
<p>--------------------------------------<br />
压缩两个600M的ISO文件<br />
命令:time tar cjvf ubuntu-8.10-server-i386.iso* a.tar.gz</p>
<p><strong>SAS 1.5万转硬盘</strong><br />
real    3m5.572s<br />
user    3m3.770s<br />
sys     0m2.430s<br />
<strong><br />
SATA 7200转硬盘</strong><br />
real    8m26.911s<br />
user    8m9.830s<br />
sys     0m5.860s</p>
<p>压过程中,用top看CPU占用,都只有一个CPU在跑,不知道怎么使tar命令使用多核(/线程)<br />
各raid方式的数据,我明天测试后补充.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2008/11/20/archives_71.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx的wordpress 及DZ论坛rewrite规则</title>
		<link>http://www.esayr.com/2008/09/06/archives_67.html</link>
		<comments>http://www.esayr.com/2008/09/06/archives_67.html#comments</comments>
		<pubDate>Sat, 06 Sep 2008 04:31:13 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[服务器配置]]></category>
		<category><![CDATA[Discuz!]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.esayr.com/?p=67</guid>
		<description><![CDATA[wordpress 2.*版本：
location / {
if (!-e $request_filename) {
rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;
rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
rewrite ^ /index.php last;
}
}
Discuz! 6.1.*版本：
location /{ rewrite ^/archiver/((fid&#124;tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last; rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&#38;page=$2 last; rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&#38;extra=page%3D$3&#38;page=$2 last; rewrite ^/space-(username&#124;uid)-(.+)\.html$ /space.php?$1=$2 last; rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last; break; }
]]></description>
			<content:encoded><![CDATA[<p><strong>wordpress 2.*版本：</strong></p>
<p>location / {<br />
if (!-e $request_filename) {<br />
rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;<br />
rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;<br />
rewrite ^ /index.php last;<br />
}<br />
}<br />
<strong>Discuz! 6.1.*版本：</strong></p>
<p>location /{<br id="vr6y" /> rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;<br id="vr6y0" /> rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&amp;page=$2 last;<br id="vr6y1" /> rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&amp;extra=page%3D$3&amp;page=$2 last;<br id="vr6y2" /> rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;<br id="vr6y3" /> rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;<br id="vr6y4" /> break;<br id="vr6y5" /> }</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2008/09/06/archives_67.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>当 nginx 遇上500 Internal Server Error</title>
		<link>http://www.esayr.com/2008/08/18/archives_66.html</link>
		<comments>http://www.esayr.com/2008/08/18/archives_66.html#comments</comments>
		<pubDate>Mon, 18 Aug 2008 11:29:01 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[服务器配置]]></category>
		<category><![CDATA[500错误]]></category>
		<category><![CDATA[Internal Server Error]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.esayr.com/?p=66</guid>
		<description><![CDATA[如果你的nginx不管什么版本,在提交小的数据正常,而提交大数据数会出现500 Internal Server Error
那么,你赶紧看看磁盘空间吧.80%的原因是有个磁盘分区占用100% .
之前朋友遇到过,解决了.
我今天也遇到,查了N多资料,无解.突然想到....
果然,日志所有分区满了. 删除一些日志后,一切回归正常.
]]></description>
			<content:encoded><![CDATA[<p>如果你的nginx不管什么版本,在提交小的数据正常,而提交大数据数会出现500 Internal Server Error</p>
<p>那么,你赶紧看看磁盘空间吧.80%的原因是有个磁盘分区占用100% .</p>
<p>之前朋友遇到过,解决了.</p>
<p>我今天也遇到,查了N多资料,无解.突然想到....</p>
<p>果然,日志所有分区满了. 删除一些日志后,一切回归正常.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2008/08/18/archives_66.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>linux  下配置resin3.1.* +apache 2.2 出错的解决办法</title>
		<link>http://www.esayr.com/2007/12/13/archives_35.html</link>
		<comments>http://www.esayr.com/2007/12/13/archives_35.html#comments</comments>
		<pubDate>Thu, 13 Dec 2007 04:00:02 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/12/13/archives_35.html</guid>
		<description><![CDATA[配置 resin3.1.4时，死活编译不过去。如下：
esayr@ifone:/usr/local/resin$ make
(cd modules/c/src; make)
make[1]: Entering directory `/usr/local/resin/modules/c/src'
for dir in common apache2 resin_os; do (cd $dir; make); done
make[2]: Entering directory `/usr/local/resin/modules/c/src/common'......]]></description>
			<content:encoded><![CDATA[<p>配置 resin3.1.4时，死活编译不过去。如下：<br />
esayr@ifone:/usr/local/resin$ make<br />
(cd modules/c/src; make)<br />
make[1]: Entering directory `/usr/local/resin/modules/c/src'<br />
for dir in common apache2   resin_os; do (cd $dir; make); done<span id="more-35"></span><br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/common'<br />
gcc -c -I/usr/local/ssl/include -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI stream.c<br />
gcc -c -I/usr/local/ssl/include -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI config.c<br />
gcc -c -I/usr/local/ssl/include -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI memory.c<br />
/usr/bin/ld -r -o common.o stream.o config.o memory.o<br />
/usr/local/resin/libtool --silent --mode=compile gcc -o stream.lo -c -I/usr/local/ssl/include -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI stream.c<br />
/usr/local/resin/libtool --silent --mode=compile gcc -o config.lo -c -I/usr/local/ssl/include -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI config.c<br />
/usr/local/resin/libtool --silent --mode=compile gcc -o memory.lo -c -I/usr/local/ssl/include -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI memory.c<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/common'<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/apache2'<br />
EGREP="grep -E" /usr/local/resin/libtool --silent --mode=compile gcc -o mod_caucho.lo -c -I/usr/local/apache/include  -I/usr/local/apr/include/apr-1  -DRESIN_HOME=\"/usr/local/resin\" -I../common -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE   -pthread mod_caucho.c<br />
In file included from mod_caucho.c:35:<br />
/usr/local/apache/include/ap_config.h:26:23: error: apr_hooks.h: No such file or directory<br />
/usr/local/apache/include/ap_config.h:27:32: error: apr_optional_hooks.h: No such file or directory<br />
In file included from mod_caucho.c:37:<br />
/usr/local/apache/include/httpd.h:54:25: error: apr_buckets.h: No such file or directory<br />
/usr/local/apache/include/httpd.h:745:21: error: apr_uri.h: No such file or directory<br />
In file included from mod_caucho.c:37:<br />
/usr/local/apache/include/httpd.h:947: error: expected specifier-qualifier-list before 'apr_uri_t'<br />
/usr/local/apache/include/httpd.h:1107: error: expected specifier-qualifier-list before 'APR_RING_ENTRY'<br />
/usr/local/apache/include/httpd.h:1224: error: expected specifier-qualifier-list before 'apr_bucket_brigade'<br />
/usr/local/apache/include/httpd.h:1232: error: expected specifier-qualifier-list before 'apr_bucket_brigade'<br />
In file included from mod_caucho.c:38:<br />
/usr/local/apache/include/http_config.h:975: error: expected ')' before 'int'<br />
In file included from /usr/local/apache/include/http_core.h:30,<br />
from mod_caucho.c:39:<br />
/usr/local/apache/include/apr_hash.h:78: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/apr_hash.h:86: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/apr_hash.h:96: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/apr_hash.h:107: error: expected ')' before '*' token<br />
/usr/local/apache/include/apr_hash.h:117: error: expected ')' before '*' token<br />
/usr/local/apache/include/apr_hash.h:148: error: expected declaration specifiers or '...' before 'apr_hash_t'<br />
/usr/local/apache/include/apr_hash.h:175: error: expected ')' before '*' token<br />
/usr/local/apache/include/apr_hash.h:186: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/apr_hash.h:204: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/apr_hash.h:218: error: expected ';', ',' or ')' before '*' token<br />
In file included from mod_caucho.c:39:<br />
/usr/local/apache/include/http_core.h:31:26: error: apr_optional.h: No such file or directory<br />
In file included from /usr/local/apache/include/http_core.h:32,<br />
from mod_caucho.c:39:<br />
/usr/local/apache/include/util_filter.h:137: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:139: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:141: error: expected declaration specifiers or '...' before 'apr_read_type_e'<br />
/usr/local/apache/include/util_filter.h:296: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:298: error: expected declaration specifiers or '...' before 'apr_read_type_e'<br />
/usr/local/apache/include/util_filter.h:310: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:492: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:493: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:503: error: expected ')' before '*' token<br />
/usr/local/apache/include/util_filter.h:511: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:548: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:559: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/util_filter.h:562: error: format string argument not a string type<br />
In file included from mod_caucho.c:39:<br />
/usr/local/apache/include/http_core.h:633: error: expected specifier-qualifier-list before 'apr_hash_t'<br />
/usr/local/apache/include/http_core.h:662: error: expected ')' before 'int'<br />
/usr/local/apache/include/http_core.h:680: error: expected declaration specifiers or '...' before 'ap_ident_lookup'<br />
/usr/local/apache/include/http_core.h:681: error: expected declaration specifiers or '...' before '(' token<br />
/usr/local/apache/include/http_core.h:681: warning: data definition has no type or storage class<br />
In file included from mod_caucho.c:40:<br />
/usr/local/apache/include/http_protocol.h:45: error: expected ')' before 'void'<br />
/usr/local/apache/include/http_protocol.h:77: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/http_protocol.h:537: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/http_protocol.h:569: error: expected ')' before 'int'<br />
/usr/local/apache/include/http_protocol.h:608: error: expected specifier-qualifier-list before 'apr_bucket_refcount'<br />
/usr/local/apache/include/http_protocol.h:616: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ap_bucket_type_error'<br />
/usr/local/apache/include/http_protocol.h:633: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/http_protocol.h:644: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/http_protocol.h:648: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/http_protocol.h:649: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/http_protocol.h:651: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
/usr/local/apache/include/http_protocol.h:652: error: expected declaration specifiers or '...' before 'apr_bucket_brigade'<br />
In file included from mod_caucho.c:41:<br />
/usr/local/apache/include/http_connection.h:94: error: expected ')' before 'conn_rec'<br />
/usr/local/apache/include/http_connection.h:135: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
/usr/local/apache/include/http_connection.h:143: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token<br />
mod_caucho.c: In function 'cse_get_module_config':<br />
mod_caucho.c:247: error: 'request_rec' has no member named 'per_dir_config'<br />
mod_caucho.c:248: error: 'request_rec' has no member named 'per_dir_config'<br />
mod_caucho.c: In function 'caucho_register_hooks':<br />
mod_caucho.c:1330: error: 'APR_HOOK_MIDDLE' undeclared (first use in this function)<br />
mod_caucho.c:1330: error: (Each undeclared identifier is reported only once<br />
mod_caucho.c:1330: error: for each function it appears in.)<br />
mod_caucho.c:1332: error: 'APR_HOOK_FIRST' undeclared (first use in this function)<br />
make[2]: *** [mod_caucho.lo] Error 1<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/apache2'<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/resin_os'<br />
gcc -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI  -D_FILE_OFFSET_BITS=64 -DRESIN_HOME=\"/usr/local/resin\" -I/usr/local/ssl/include -I/usr/local/jdk1.5.0_14/include -I/usr/local/jdk1.5.0_14/include/linux -I../common -DCPU=\"i386\" -DOS=   -c -o jni_os.o jni_os.c<br />
/usr/bin/ld -shared -L/usr/local/ssl/lib -o libresin_os.so jni_os.o jni_jvmti.o jni_jvmdi.o -lpthread -lc<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/resin_os'<br />
make[1]: Leaving directory `/usr/local/resin/modules/c/src'</p>
<p>一找，原来是少了一些头文件，记得以前编译APACHE2.2.6的时候，是把 apr和apr-util编译在/usr/local下的，于是复制他们的include下的.h文件到apache安装目录的include下</p>
<p>esayr@ifone:/usr/local/resin$ sudo cp /usr/local/apr-util/include/apr-1/*.h /usr/local/apache/include/</p>
<p>再试：<br />
esayr@ifone:/usr/local/resin$ make<br />
(cd modules/c/src; make)<br />
make[1]: Entering directory `/usr/local/resin/modules/c/src'<br />
for dir in common apache2   resin_os; do (cd $dir; make); done<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/common'<br />
/usr/bin/ld -r -o common.o stream.o config.o memory.o<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/common'<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/apache2'<br />
EGREP="grep -E" /usr/local/resin/libtool --silent --mode=compile gcc -o mod_caucho.lo -c -I/usr/local/apache/include  -I/usr/local/apr/include/apr-1  -DRESIN_HOME=\"/usr/local/resin\" -I../common -march=prescott -O2 -pipe -fomit-frame-pointer -DPOLL -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DHAS_SOCK_TIMEOUT -DHAS_JVMTI -DHAS_JVMDI   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE   -pthread mod_caucho.c<br />
EGREP="grep -E" /usr/local/resin/libtool --silent --mode=link gcc -module -o mod_caucho.la -avoid-version -rpath /usr/local/apache/modules mod_caucho.lo ../common/stream.lo ../common/config.lo ../common/memory.lo<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/apache2'<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/resin_os'<br />
make[2]: Nothing to be done for `all'.<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/resin_os'<br />
make[1]: Leaving directory `/usr/local/resin/modules/c/src'<br />
esayr@ifone:/usr/local/resin$ sudo make install<br />
(cd modules/c/src; make install)<br />
make[1]: Entering directory `/usr/local/resin/modules/c/src'<br />
for dir in common apache2   resin_os; do (cd $dir; make install); done<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/common'<br />
make[2]: Nothing to be done for `install'.<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/common'<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/apache2'<br />
EGREP="grep -E" /usr/local/resin/libtool --silent --mode=install /bin/cp mod_caucho.la /usr/local/apache/modules<br />
rm -f /usr/local/apache/modules/mod_caucho.la<br />
rm -f /usr/local/apache/modules/mod_caucho.a<br />
sh install.sh -conf /usr/local/apache/conf/httpd.conf -libexec /usr/local/apache/modules \<br />
-resin_home /usr/local/resin<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/apache2'<br />
make[2]: Entering directory `/usr/local/resin/modules/c/src/resin_os'<br />
mkdir /usr/local/resin/libexec<br />
cp libresin_os.so /usr/local/resin/libexec<br />
make[2]: Leaving directory `/usr/local/resin/modules/c/src/resin_os'<br />
make[1]: Leaving directory `/usr/local/resin/modules/c/src'<br />
if test /usr/local/resin != `pwd`; then \<br />
mkdir -p /usr/local/resin/lib; \<br />
mkdir -p /usr/local/resin/libexec; \<br />
cp -r libexec/* /usr/local/resin/libexec; \<br />
cp lib/*.jar /usr/local/resin/lib; \<br />
mkdir -p /usr/local/resin/bin; \<br />
cp bin/* /usr/local/resin/bin; \<br />
mkdir -p /usr/local/resin/webapps; \<br />
cp -r webapps/* /usr/local/resin/webapps; \<br />
mkdir -p /usr/local/resin/conf; \<br />
cp conf/resin.conf /usr/local/resin/conf/resin.conf.orig; \<br />
cp conf/app-default.xml /usr/local/resin/conf/app-default.xml.orig; \<br />
if test ! -r /usr/local/resin/conf/resin.conf; then \<br />
cp conf/resin.conf /usr/local/resin/conf/resin.conf; \<br />
cp conf/app-default.xml /usr/local/resin/conf/app-default.xml; \<br />
fi; \<br />
fi<br />
esayr@ifone:/usr/local/resin$</p>
<p>搞定！ 特此。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/12/13/archives_35.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache2.0的mod_vhost_alias模块配置多虚拟主机教程</title>
		<link>http://www.esayr.com/2007/12/07/archives_34.html</link>
		<comments>http://www.esayr.com/2007/12/07/archives_34.html#comments</comments>
		<pubDate>Fri, 07 Dec 2007 03:14:12 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/12/07/archives_34.html</guid>
		<description><![CDATA[前段发在phpv上的，忘了放这来了。
 ---------------------------------------------
前言:我有几台服务器托在机房,连年亏损. 我想我应该考虑将他们向外出租.准备明年运营,以扭转几年来尴尬的局面.于是,就有了这个教程.
目标:
1.用户开通FTP后,自动在/www/下创建一个与域名同名的目录.
(假如phpv.net的管理员购买空间后,他的主目录将是 /www/phpv.net)
2.空间知道泛域名绑定.
(即:访问者在浏览器内输入www.phpv.net将会自动访问/www/phpv.net/www.phpv.net目录下的index文件.而输入bbs.phpv.net则访问/www/phpv.net/bbs.phpv.net/这个目录.....)
按以前的,我得挨个绑虚拟主机.然后再restart apache
像这样:
&#60;VirtualHost *:80&#62;    ServerAdmin webmaster@phpv.net    DocumentRoot /www/phpv.net/www.phpv.net    ServerName www.phpv.net    ErrorLog logs/phpv-error_log    CustomLog logs/phpv-access_log common&#60;/VirtualHost&#62;&#60;VirtualHost *:80&#62;     ServerAdmin webmaster@phpv.net     DocumentRoot /www/phpv.net/bbs.phpv.net     ServerName bbs.phpv.net     ErrorLog logs/bbs-phpv-error_log     CustomLog logs/bbs-phpv-access_log common &#60;/VirtualHost&#62;
...............
#apache restart
简直太烦人太累了.
后来经过自己的测试和多位好友的帮助,我使用Apache 的 mod_vhost_alias模块.完美实现了这个要求.
我是这样开始的:
1.把原来的虚拟主机配置都删除掉, NameVirtualHost *:80 这句也加上个#在它前面.
2.接着,在httpd.conf使用下面的mod_vhost_alias配置
UseCanonicalName OffVirtualDocumentRoot /www/%2+/%0
(注意:以上/www/是我的网站根目录,在实现操作中请按自己要求更改.)
重启apache.
#apache restart
3.测试
使用FTP服务器的功能,使得用户登录时,自动以其域名创建主目录.(我用的是 pureftpd 具体配置请参阅相关文献)
以刚刚创建好的FTP用户登录,在目录下创建文件夹www.phpv.net 上传一个phpinfo的index.php
输入http://www.phpv.net 看看是否正常. (域名的A记录要指向本机IP) 如果能正常显示出info信息,就表明成功了.
4.但,问题来了,使用http://phpv.net 访问的却是 /www/net/phpv.net这个目录.
想使用rewirte做一个自动跳转来解决这个问题,使得用户输入http://phpv.net时能访问到/www/phpv.net/www.phpv.net 这个目录
rewirte解决方式:
加以下rule到http.conf中
RewriteEngine On
#RewriteCond %{HTTP_HOST} ^w+.w{1,3}$
RewriteCond [...]]]></description>
			<content:encoded><![CDATA[<p align="left">前段发在phpv上的，忘了放这来了。</p>
<p align="left"> ---------------------------------------------</p>
<p align="left">前言:我有几台服务器托在机房,连年亏损. 我想我应该考虑将他们向外出租.准备明年运营,以扭转几年来尴尬的局面.于是,就有了这个教程.</p>
<p><span style="font-weight: bold">目标:</p>
<p></span><span style="color: #ff0000">1.用户开通FTP后,自动在/www/下创建一个与域名同名的目录.</span><br />
<span style="color: #0000cd">(假如phpv.net的管理员购买空间后,他的主目录将是 /www/phpv.net)</span><br />
<span style="color: #ff0000">2.空间知道泛域名绑定.</span><br />
<span style="color: #0000cd">(即:访问者在浏览器内输入www.phpv.net将会自动访问/www/phpv.net/www.phpv.net目录下的index文件.而输入bbs.phpv.net则访问/www/phpv.net/bbs.phpv.net/这个目录</span>.....)</p>
<p>按以前的,我得挨个绑虚拟主机.然后再restart apache<br />
像这样:</p>
<p><span style="font-style: italic">&lt;VirtualHost *:80&gt;</span><br style="font-style: italic" /><span style="font-style: italic">    ServerAdmin webmaster@phpv.net</span><br style="font-style: italic" /><span style="font-style: italic">    DocumentRoot /www/phpv.net/www.phpv.net</span><br style="font-style: italic" /><span style="font-style: italic">    ServerName www.phpv.net</span><br style="font-style: italic" /><span style="font-style: italic">    ErrorLog logs/phpv-error_log</span><br style="font-style: italic" /><span style="font-style: italic">    CustomLog logs/phpv-access_log common</span><br style="font-style: italic" /><span style="font-style: italic">&lt;/VirtualHost&gt;</span><br style="font-style: italic" /><br style="font-style: italic" /><span style="font-style: italic">&lt;VirtualHost *:80&gt;</span><br style="font-style: italic" /><span style="font-style: italic">     ServerAdmin webmaster@phpv.net</span><br style="font-style: italic" /><span style="font-style: italic">     DocumentRoot /www/phpv.net/bbs.phpv.net</span><br style="font-style: italic" /><span style="font-style: italic">     ServerName bbs.phpv.net</span><br style="font-style: italic" /><span style="font-style: italic">     ErrorLog logs/bbs-phpv-error_log</span><br style="font-style: italic" /><span style="font-style: italic">     CustomLog logs/bbs-phpv-access_log common</span><br style="font-style: italic" /><span style="font-style: italic"> &lt;/VirtualHost&gt;</span></p>
<p>...............</p>
<p>#apache restart</p>
<p>简直太烦人太累了.</p>
<p>后来经过自己的测试和多位好友的帮助,我使用Apache 的 mod_vhost_alias模块.完美实现了这个要求.</p>
<p><br style="font-weight: bold" /><span style="font-weight: bold">我是这样开始的:</span></p>
<p><span style="color: #1e90ff">1.把原来的虚拟主机配置都删除掉, NameVirtualHost *:80 这句也加上个#在它前面.</span><br />
<br style="color: #1e90ff" /><span style="color: #1e90ff">2.接着,在httpd.conf使用下面的mod_vhost_alias配置</span><br />
<br style="font-style: italic" /><span style="font-style: italic">UseCanonicalName Off</span><br style="font-style: italic" /><span style="font-style: italic">VirtualDocumentRoot /www/%2+/%0</span></p>
<p>(注意:以上<span style="font-style: italic">/www/</span>是我的网站根目录,在实现操作中请按自己要求更改.)</p>
<p>重启apache.<br />
#apache restart</p>
<p><span style="color: #1e90ff">3.测试</span><br />
使用FTP服务器的功能,使得用户登录时,自动以其域名创建主目录.(我用的是 pureftpd 具体配置请参阅相关文献)<br />
以刚刚创建好的FTP用户登录,在目录下创建文件夹www.phpv.net 上传一个phpinfo的index.php<br />
输入http://www.phpv.net 看看是否正常. (域名的A记录要指向本机IP) 如果能正常显示出info信息,就表明成功了.</p>
<p><span style="color: #1e90ff">4.但,问题来了,使用http://phpv.net 访问的却是 /www/net/</span><span style="color: #1e90ff">phpv.net</span><span style="color: #1e90ff">这个目录.</span><br />
想使用rewirte做一个自动跳转来解决这个问题,使得用户输入http://phpv.net时能访问到/www/phpv.net/www.phpv.net 这个目录</p>
<p>rewirte解决方式:</p>
<p>加以下rule到http.conf中</p>
<p>RewriteEngine On<br />
#RewriteCond %{HTTP_HOST} ^w+.w{1,3}$<br />
RewriteCond %{HTTP_HOST} ^[a-z-0-9]+.w{1,3}$RewriteRule (.*) http://www.%{HTTP_HOST}$1 [R=301,L]</p>
<p>再次重启Apache,访问http://phpv.net,自动跳转到http://www.phpv.net</p>
<p><span style="color: #1e90ff">5.相关问答:</span><br />
如果把不需要执行PHP的目录禁用PHP解析?</p>
<p>这样:<br />
&lt;Directory "/www/phpv.net/manual.phpv.net"&gt;<br />
php_flag engine off<br />
&lt;/Directory&gt;</p>
<p>好了.配置基本OK.</p>
<p>感谢:fluck boban 吴洪声 对本文的贡献.</p>
<p>附后:此配置基本能满足大部分用户的需求.<br />
但有以下缺点:不能根据虚拟主机做个性化设置,比如,设置一个虚拟主机的PHP执行目录范围.<br />
还有不能自动绑定两个域名到同一目录.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/12/07/archives_34.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>搜狗这个坏蛋</title>
		<link>http://www.esayr.com/2007/05/25/archives_12.html</link>
		<comments>http://www.esayr.com/2007/05/25/archives_12.html#comments</comments>
		<pubDate>Fri, 25 May 2007 09:45:32 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/05/25/archives_12.html</guid>
		<description><![CDATA[服务器感觉很忙的样子，但已经没什么很大流量的东西在跑了呀。
查看连接
server# netstat -an &#124; sort -d &#124; wc -l
2267
#netstat -na&#124;grep 80&#124;awk '{print $5}'&#124;awk -F: '{print $1}'&#124;sort&#124;uniq -c&#124;sort -d
也没什么大不了的连接。
看apache日志 ，发现几个连接。一直访问个没完。
220.181.19.96
220.181.19.85
......
一查IP，
·本站主数据: 北京市 电信IDC
·本站辅数据: 北京 搜狗蜘蛛 [提供:邢台 荣晓东]
太狠了。google一看，受害者不少。[1] [2] [3]
是技术问题还是怎么着。派了一堆蜘蛛出来。真服了。
整个IP段deny 掉，这回清净啦！
server# netstat -an &#124; sort -d &#124; wc -l
287

]]></description>
			<content:encoded><![CDATA[<p>服务器感觉很忙的样子，但已经没什么很大流量的东西在跑了呀。</p>
<p>查看连接<br />
server# netstat -an | sort -d | wc -l<br />
2267</p>
<p>#netstat -na|grep 80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -d</p>
<p>也没什么大不了的连接。</p>
<p>看apache日志 ，发现几个连接。一直访问个没完。<br />
220.181.19.96<br />
<span id="cresult"><em>220.181.19.85</em></span><br />
......</p>
<p>一查IP，<span id="cresult"></p>
<li>·<font color="blue">本站主数据</font>: 北京市 电信IDC</li>
<li>·<font color="blue">本站辅数据</font>: 北京 搜狗蜘蛛 [提供:邢台 荣晓东]
<p>太狠了。google一看，受害者不少。[<a href="http://zhidao.baidu.com/question/8320891.html" target="_blank">1</a>] [<a href="http://www.sinblog.net/page/wish?entry=%E6%8D%A3%E4%B9%B1%E7%9A%84_220_181_19_85" target="_blank">2</a>] [<a href="http://www.ebibuy.com/exchange/ptc/313396.txt" target="_blank">3</a>]<br />
是技术问题还是怎么着。派了一堆蜘蛛出来。真服了。</p>
<p>整个IP段deny 掉，这回清净啦！<br />
server# netstat -an | sort -d | wc -l<br />
287</li>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/05/25/archives_12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>个人感受:freebsd 和 linux 的一点区别</title>
		<link>http://www.esayr.com/2007/05/24/archives_11.html</link>
		<comments>http://www.esayr.com/2007/05/24/archives_11.html#comments</comments>
		<pubDate>Thu, 24 May 2007 13:24:09 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/05/24/archives_11.html</guid>
		<description><![CDATA[这一月来因为要将三四台正在使用中的服务器操作系统由windows 2003换成开源的.
然后得出以下对比.
目标:安装GD图片处理库.
freebsd 是
# cd /usr/ports/graphics/gd
#make install
然后就等着完成.
linux是
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz
tar zxvf libiconv-1.11.tar.gz
cd libiconv-1.11
./configure --prefix=/usr/local
make install
wget http://jaist.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.10.tar.gz
tar zxvf freetype-2.1.10.tar.gz
cd freetype-2.1.10
./configure --prefix=/usr/local
make install
wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6
./configure --prefix=/usr/local
make install
make install-lib
wget http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.9beta9.tar.gz
tar zxvf libpng-1.2.9beta9.tar.gz
cd libpng-1.2.9beta9
./configure --prefix=/usr/local
sudo make install
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
./configure --prefix=/usr/local
make install
 觉得挺无奈的,谁有更好的办法?
]]></description>
			<content:encoded><![CDATA[<p>这一月来因为要将三四台正在使用中的服务器操作系统由windows 2003换成开源的.</p>
<p>然后得出以下对比.</p>
<p><strong>目标:安装GD图片处理库.</strong></p>
<p><strong>freebsd 是<br />
</strong># cd /usr/ports/graphics/gd<br />
#make install</p>
<p>然后就等着完成.</p>
<p><strong>linux是</strong></p>
<p>wget <a href="http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz">http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz</a><br />
tar zxvf libiconv-1.11.tar.gz<br />
cd libiconv-1.11<br />
./configure --prefix=/usr/local<br />
make install</p>
<p>wget <a href="http://jaist.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.10.tar.gz">http://jaist.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.10.tar.gz</a><br />
tar zxvf freetype-2.1.10.tar.gz<br />
cd freetype-2.1.10<br />
./configure --prefix=/usr/local<br />
make install</p>
<p>wget <a href="http://www.ijg.org/files/jpegsrc.v6b.tar.gz">http://www.ijg.org/files/jpegsrc.v6b.tar.gz</a><br />
tar zxvf jpegsrc.v6b.tar.gz<br />
cd jpeg-6<br />
./configure --prefix=/usr/local<br />
make install<br />
make install-lib</p>
<p>wget <a href="http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.9beta9.tar.gz">http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.9beta9.tar.gz</a><br />
tar zxvf libpng-1.2.9beta9.tar.gz<br />
cd libpng-1.2.9beta9<br />
./configure --prefix=/usr/local<br />
sudo make install<br />
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz<br />
./configure --prefix=/usr/local<br />
make install</p>
<p> 觉得挺无奈的,谁有更好的办法?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/05/24/archives_11.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysqldump 导出的sql文件导入时提示Unknown command &#8216;\[&#8216;.</title>
		<link>http://www.esayr.com/2007/05/24/archives_10.html</link>
		<comments>http://www.esayr.com/2007/05/24/archives_10.html#comments</comments>
		<pubDate>Thu, 24 May 2007 09:26:01 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[mysql 数据库]]></category>
		<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/05/24/archives_10.html</guid>
		<description><![CDATA[ 两台linux机器的mysql配置一模一样。
#mysqldump forum&#62;forum.sql -u root -p
导出一个2.4G大的forum.sql文件，然后试图导入内网（192.168.0.8）的另一台机器时，出现问题
#mysql forum&#60;forum.sql  -u root -p -h 192.168.0.8
Enter password:
ERROR at line 1410: Unknown command '\['.
首先是怀疑有二进制，添加参数--hex-blob 再导，问题依旧。
再想也不可能是字符集什么呀 。
请教imysql，说是： 2边的max_allowed_packet设置的不一样.
明明是一样的，改大一些试试。16M改成64M，也不行。
最后拉到本机去，终于可以正常导入。
问题虽然解决，但根源是什么还是没弄懂。
哪个老师知道此问题的原因，请赐教。
&#160;
最后，学到一个简单的服务器间复制库的办法。
mysqldump -hhost1 xx &#124; mysql -hhost2
从host1导出库xx，然后写入host2
]]></description>
			<content:encoded><![CDATA[<p class="msg 1st"> 两台linux机器的mysql配置一模一样。<br />
#mysqldump forum&gt;forum.sql -u root -p<br />
导出一个2.4G大的forum.sql文件，然后试图导入内网（192.168.0.8）的另一台机器时，出现问题</p>
<p>#mysql forum&lt;forum.sql  -u root -p -h 192.168.0.8<br />
Enter password:<br />
ERROR at line 1410: Unknown command '\['.</p>
<p>首先是怀疑有二进制，添加参数<span>--hex-blob 再导，问题依旧。<br />
</span>再想也不可能是字符集什么呀 。<br />
<span class="salutation">请教imysql</span>，说是： 2边的max_allowed_packet设置的不一样.<br />
明明是一样的，改大一些试试。16M改成64M，也不行。<br />
最后拉到本机去，终于可以正常导入。<br />
问题虽然解决，但根源是什么还是没弄懂。<br />
哪个老师知道此问题的原因，请赐教。</p>
<p class="msg 1st">&nbsp;</p>
<p class="msg Nth">最后，学到一个简单的服务器间复制库的办法。<br />
mysqldump -hhost1 xx | mysql -hhost2<br />
从host1导出库xx，然后写入host2</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/05/24/archives_10.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>架构基于DZ或PW论坛的文件防盗链系统</title>
		<link>http://www.esayr.com/2007/05/22/archives_9.html</link>
		<comments>http://www.esayr.com/2007/05/22/archives_9.html#comments</comments>
		<pubDate>Tue, 22 May 2007 08:22:28 +0000</pubDate>
		<dc:creator>esayr</dc:creator>
				<category><![CDATA[PHP开发]]></category>
		<category><![CDATA[服务器配置]]></category>

		<guid isPermaLink="false">http://www.esayr.com/2007/05/22/archives_9.html</guid>
		<description><![CDATA[需求：
一个技术/娱乐论坛 http://bbs.mowai.com 有大量电影和ISO文件。
文件存放于论坛目录下,结构如下:
/bbs/download/蜘蛛侠3.rm------电影和ISO文件
/bbs/index.php---------------论坛首页
/bbs/...
/index.php -------------------首页
原来使用 http://bbs.mowai.com/download/蜘蛛侠3.rm 这样的链接提供用户下载文件.
但被无良的迅雷和一些网站等严重盗链.服务器带宽被耗尽, 急需解决.
1.尽量不改变原有下载路径.否则需要编辑大量主题.
2.可以设置非网站注册会员需要登录方可下载.
思路:
一.和论坛绑定,需要引入论坛文件以判断用户是否登录.
二.如果没有限制游客下载,那么需要判断HTTP_REFERER是否来自本站,以达到简单防盗功能.
三.[重点] 为了防盗,最简单的方法还是更改文件名.一个文件,一天就失效了.那盗链就变得没有意义.
开始实施:
1.
---------------------------------------------------------------
新建一个文件夹 /bbs/download_file_in_here ,并在它下面建立一个乱码文件夹,如De7Tvs9K 将 /bbs/download/ 目录下的所有文件移动到/bbs/download_file_in_here/De7Tvs9K 下,
并给它绑定一个域名:http://download.mowai.com
---------------------------------------------------------------
2.
---------------------------------------------------------------
加一条 rewirte 到虚拟主机设置里.
&#60;Directory "/www/bbs.mowai.com"&#62;
&#60;FilesMatch "^download$"&#62;
ForceType application/x-httpd-php
&#60;/FilesMatch&#62;
&#60;/Directory&#62;
也可以写 .htaccess 文件来实现.目的是实现用PHP来处理download文件
---------------------------------------------------------------
3.
---------------------------------------------------------------
新建一个 time.txt 文件,位于 /bbs/ 目录下.内容为:De7Tvs9K 就是上面那个乱码文件夹
---------------------------------------------------------------
新建一个名为 download 的php文件在 /bbs/ 目录下(注意,这个文件没有后缀名)
代码如下:
 &#60;?php
header('Content-type:text/html;charset=utf-8');
define('CURSCRIPT', 'download');
require_once './include/common.inc.php';
$down_uri = 'http://download.mowai.com/'; //绑定的域名 以/结尾
$allow_guest_download = 1; //是否允许游客下载 1=是 0=否
$referer_verify = 1; //是否验证referer来源.在允许游客下载的情况下,是否允许非本站用户下载.
$referer_uri_list = array('www.phpv.net','esayr.com'); //允许的referer来源网站.上一项值为1时生效.
$interval_time = 24; //间隔多少个小时，更改一次文件夹名。
$filename = 'time.txt'; //保存文件夹路径的文本文件.if (file_exists($filename)) [...]]]></description>
			<content:encoded><![CDATA[<p>需求：<br />
一个技术/娱乐论坛 <a href="http://bbs.mowai.com" target="_blank">http://bbs.mowai.com</a> 有大量电影和ISO文件。<br />
文件存放于论坛目录下,结构如下:</p>
<p><em>/bbs/download/蜘蛛侠3.rm</em>------电影和ISO文件<br />
<em>/bbs/index.php</em>---------------论坛首页<br />
<em>/bbs/</em>...<br />
<em>/index.php</em> -------------------首页</p>
<p>原来使用 <a title="蜘蛛侠3 下载地址" href="http://bbs.mowai.com/movie/蜘蛛侠3.rm">http://bbs.mowai.com/download/蜘蛛侠3.rm</a> 这样的链接提供用户下载文件.<br />
但被无良的迅雷和一些网站等严重盗链.服务器带宽被耗尽, 急需解决.</p>
<p>1.尽量不改变原有下载路径.否则需要编辑大量主题.<br />
2.可以设置非网站注册会员需要登录方可下载.</p>
<p>思路:<br />
一.和论坛绑定,需要引入论坛文件以判断用户是否登录.<br />
二.如果没有限制游客下载,那么需要判断HTTP_REFERER是否来自本站,以达到简单防盗功能.<br />
三.[重点] 为了防盗,最简单的方法还是更改文件名.一个文件,一天就失效了.那盗链就变得没有意义.</p>
<p>开始实施:<br />
1.<br />
---------------------------------------------------------------<br />
新建一个文件夹<em> /bbs/download_file_in_here</em> ,并在它下面建立一个乱码文件夹,如<em>De7Tvs9K</em> 将 /bbs/download/ 目录下的所有文件移动到<em>/bbs/download_file_in_here</em>/<em>De7Tvs9K </em>下,<br />
并给它绑定一个域名:<a href="http://download.mowai.com" target="_blank">http://download.mowai.com</a><br />
---------------------------------------------------------------</p>
<p>2.<br />
---------------------------------------------------------------<br />
加一条 rewirte 到虚拟主机设置里.</p>
<p>&lt;Directory "/www/bbs.mowai.com"&gt;<br />
&lt;FilesMatch "^download$"&gt;<br />
ForceType application/x-httpd-php<br />
&lt;/FilesMatch&gt;<br />
&lt;/Directory&gt;</p>
<p>也可以写 .htaccess 文件来实现.目的是实现用PHP来处理download文件<br />
---------------------------------------------------------------</p>
<p>3.<br />
---------------------------------------------------------------<br />
新建一个 time.txt 文件,位于 /bbs/ 目录下.内容为:<em>De7Tvs9K</em> 就是上面那个乱码文件夹<br />
---------------------------------------------------------------<br />
新建一个名为 <em>download </em>的php文件在 <em>/bbs/ </em>目录下(注意,这个文件没有后缀名)<br />
代码如下:</p>
<p><code style="white-space: nowrap"><code><span style="color: #000000"> <span style="color: #0000bb">&lt;?php</span></span></code></code></p>
<p>header<span style="color: #007700">(</span><span style="color: #dd0000">'Content-type:text/html;charset=utf-8'</span><span style="color: #007700">);<br />
</span><span style="color: #0000bb">define</span><span style="color: #007700">(</span><span style="color: #dd0000">'CURSCRIPT'</span><span style="color: #007700">, </span><span style="color: #dd0000">'download'</span><span style="color: #007700">);<br />
require_once </span><span style="color: #dd0000">'./include/common.inc.php'</span><span style="color: #007700">;</span></p>
<p><span style="color: #0000bb">$down_uri </span><span style="color: #007700">= </span><span style="color: #dd0000">'http://download.mowai.com/'</span><span style="color: #007700">; </span><span style="color: #ff8000">//绑定的域名 以/结尾<br />
</span><span style="color: #0000bb">$allow_guest_download </span><span style="color: #007700">= </span><span style="color: #0000bb">1</span><span style="color: #007700">; </span><span style="color: #ff8000">//是否允许游客下载 1=是 0=否<br />
</span><span style="color: #0000bb">$referer_verify </span><span style="color: #007700">= </span><span style="color: #0000bb">1</span><span style="color: #007700">; </span><span style="color: #ff8000">//是否验证referer来源.在允许游客下载的情况下,是否允许非本站用户下载.<br />
</span><span style="color: #0000bb">$referer_uri_list </span><span style="color: #007700">= array(</span><span style="color: #dd0000">'www.phpv.net'</span><span style="color: #007700">,</span><span style="color: #dd0000">'esayr.com'</span><span style="color: #007700">); </span><span style="color: #ff8000">//允许的referer来源网站.上一项值为1时生效.<br />
</span><span style="color: #0000bb">$interval_time </span><span style="color: #007700">= </span><span style="color: #0000bb">24</span><span style="color: #007700">; </span><span style="color: #ff8000">//间隔多少个小时，更改一次文件夹名。</span></p>
<p><span style="color: #0000bb">$filename </span><span style="color: #007700">= </span><span style="color: #dd0000">'time.txt'</span><span style="color: #007700">; </span><span style="color: #ff8000">//保存文件夹路径的文本文件.if (file_exists($filename)) {<br />
</span><span style="color: #0000bb">$last_m_time </span><span style="color: #007700">= </span><span style="color: #0000bb">filemtime</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">);<br />
</span><span style="color: #0000bb">$directory_name </span><span style="color: #007700">= </span><span style="color: #0000bb">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">);</span></p>
<p><span style="color: #ff8000">//判断时间是否到期<br />
</span><span style="color: #007700">if(</span><span style="color: #0000bb">time</span><span style="color: #007700">() - </span><span style="color: #0000bb">$last_m_time </span><span style="color: #007700">&gt; </span><span style="color: #0000bb">$interval_tim</span><span style="color: #007700">*</span><span style="color: #0000bb">3600 </span><span style="color: #007700">) {<br />
</span><span style="color: #0000bb">$new_directory_name </span><span style="color: #007700">= </span><span style="color: #0000bb">random</span><span style="color: #007700">(</span><span style="color: #0000bb">12</span><span style="color: #007700">);</span></p>
<p>if (<span style="color: #0000bb">is_writable</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">)) {<br />
if (!</span><span style="color: #0000bb">$handle </span><span style="color: #007700">= </span><span style="color: #0000bb">fopen</span><span style="color: #007700">(</span><span style="color: #0000bb">$filename</span><span style="color: #007700">, </span><span style="color: #dd0000">'a'</span><span style="color: #007700">)) {<br />
exit(</span><span style="color: #dd0000">"不能打开文件 $filename"</span><span style="color: #007700">);<br />
}</span></p>
<p><span style="color: #ff8000">//更改文件夹名<br />
</span><span style="color: #007700">if (</span><span style="color: #0000bb">rename</span><span style="color: #007700">(</span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$directory_name</span><span style="color: #007700">, </span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">)) {</span></p>
<p><span style="color: #ff8000">//将新的目录名写入到time.txt文件中。<br />
</span><span style="color: #007700">if (</span><span style="color: #0000bb">fwrite</span><span style="color: #007700">(</span><span style="color: #0000bb">$handle</span><span style="color: #007700">, </span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">) === </span><span style="color: #0000bb">FALSE</span><span style="color: #007700">) {</span></p>
<p><span style="color: #ff8000">//如果改文件内容失败，把文件夹名改回来<br />
</span><span style="color: #0000bb">rename</span><span style="color: #007700">(</span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">,</span><span style="color: #dd0000">"bbs/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$directory_name</span><span style="color: #007700">);</span></p>
<p>exit(<span style="color: #dd0000">"不能写入到文件 $filename"</span><span style="color: #007700">);<br />
}<br />
</span><span style="color: #0000bb">$directory_name </span><span style="color: #007700">= </span><span style="color: #0000bb">$new_directory_name</span><span style="color: #007700">;</span></p>
<p>} else {<br />
exit(<span style="color: #dd0000">"文件夹改名失败"</span><span style="color: #007700">);<br />
}<br />
</span><span style="color: #0000bb">fclose</span><span style="color: #007700">(</span><span style="color: #0000bb">$handle</span><span style="color: #007700">);</span></p>
<p>} else {<br />
exit(<span style="color: #dd0000">"文件 $filename 不可写"</span><span style="color: #007700">);<br />
}<br />
}</span></p>
<p>}else{<br />
exit(<span style="color: #dd0000">'文件 $filename 不存在，请创建一个'</span><span style="color: #007700">); </span><span style="color: #ff8000">//没有time.txt文件，请创建一个。<br />
</span><span style="color: #007700">}</span></p>
<p><span style="color: #ff8000">/*################### 游客检查 #############*/<br />
</span><span style="color: #007700">if(!</span><span style="color: #0000bb">$allow_guest_download </span><span style="color: #007700">&amp;&amp; !</span><span style="color: #0000bb">$discuz_uid</span><span style="color: #007700">) {<br />
</span><span style="color: #ff8000">//exit('此操作需要登录!您尚未 &lt;a href="http://bbs.mowai.com/logging.php?action=login"&gt;登录&lt;/a&gt;');<br />
</span><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location: http://www.mowai.com/error/need_login.html"</span><span style="color: #007700">);<br />
exit;<br />
}</span></p>
<p><span style="color: #ff8000">/*################### 来源检查 #############*/<br />
</span><span style="color: #0000bb">preg_match</span><span style="color: #007700">(</span><span style="color: #dd0000">"/https?:\/\/([^\/]+).*/i"</span><span style="color: #007700">, </span><span style="color: #0000bb">$_SERVER</span><span style="color: #007700">[</span><span style="color: #dd0000">'HTTP_REFERER'</span><span style="color: #007700">],</span><span style="color: #0000bb">$matchs</span><span style="color: #007700">);</span></p>
<p>if(<span style="color: #0000bb">$referer_verify </span><span style="color: #007700">&amp;&amp; !</span><span style="color: #0000bb">in_array</span><span style="color: #007700">(</span><span style="color: #0000bb">$matchs</span><span style="color: #007700">[</span><span style="color: #0000bb">1</span><span style="color: #007700">],</span><span style="color: #0000bb">$referer_uri_list</span><span style="color: #007700">)) {</span></p>
<p><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location: http://www.mowai.com/error/invalidreferer.html"</span><span style="color: #007700">);<br />
</span><span style="color: #ff8000">//exit('您要下载的文件位于http://bbs.mowai.com');</span></p>
<p><span style="color: #007700">}else{</span></p>
<p>if(isset(<span style="color: #0000bb">$_SERVER</span><span style="color: #007700">[</span><span style="color: #dd0000">'PATH_INFO'</span><span style="color: #007700">])){</span></p>
<p><span style="color: #ff8000">//这里可以加一些判断文件是否存在而出现错误提示的信息。<br />
</span><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location:{$down_uri}{$directory_name}/{$_SERVER[PATH_INFO]}"</span><span style="color: #007700">);<br />
}<br />
else {</span></p>
<p><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location: http://www.mowai.com/error/404.html"</span><span style="color: #007700">);<br />
}<br />
}</span></p>
<p><span style="color: #0000bb">?&gt;</span></p>
<p>代码在linux+DZ5.5.0 下运行成功.</p>
<p>需要注意的几点<br />
如果是*nix系统,请将time.txt的文件属性设置为777<br />
如果要下载的文件在远程计算机,请使用PHP的FTP命令来做更名操作.<br />
PW论坛,根据情况改改代码就行了.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.esayr.com/2007/05/22/archives_9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
