SAS vs SATA2 读写速度测试
两机器,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 8m9.830s
sys 0m5.860s
压过程中,用top看CPU占用,都只有一个CPU在跑,不知道怎么使tar命令使用多核(/线程)
各raid方式的数据,我明天测试后补充.
nginx的wordpress 及DZ论坛rewrite规则
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|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
break;
}
当 nginx 遇上500 Internal Server Error
如果你的nginx不管什么版本,在提交小的数据正常,而提交大数据数会出现500 Internal Server Error
那么,你赶紧看看磁盘空间吧.80%的原因是有个磁盘分区占用100% .
之前朋友遇到过,解决了.
我今天也遇到,查了N多资料,无解.突然想到....
果然,日志所有分区满了. 删除一些日志后,一切回归正常.
linux 下配置resin3.1.* +apache 2.2 出错的解决办法
配置 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
apache2.0的mod_vhost_alias模块配置多虚拟主机教程
前段发在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
像这样:
<VirtualHost *:80>
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
</VirtualHost>
<VirtualHost *:80>
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
</VirtualHost>
...............
#apache restart
简直太烦人太累了.
后来经过自己的测试和多位好友的帮助,我使用Apache 的 mod_vhost_alias模块.完美实现了这个要求.
我是这样开始的:
1.把原来的虚拟主机配置都删除掉, NameVirtualHost *:80 这句也加上个#在它前面.
2.接着,在httpd.conf使用下面的mod_vhost_alias配置
UseCanonicalName Off
VirtualDocumentRoot /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 %{HTTP_HOST} ^[a-z-0-9]+.w{1,3}$RewriteRule (.*) http://www.%{HTTP_HOST}$1 [R=301,L]
再次重启Apache,访问http://phpv.net,自动跳转到http://www.phpv.net
5.相关问答:
如果把不需要执行PHP的目录禁用PHP解析?
这样:
<Directory "/www/phpv.net/manual.phpv.net">
php_flag engine off
</Directory>
好了.配置基本OK.
感谢:fluck boban 吴洪声 对本文的贡献.
附后:此配置基本能满足大部分用户的需求.
但有以下缺点:不能根据虚拟主机做个性化设置,比如,设置一个虚拟主机的PHP执行目录范围.
还有不能自动绑定两个域名到同一目录.
搜狗这个坏蛋
服务器感觉很忙的样子,但已经没什么很大流量的东西在跑了呀。
查看连接
server# netstat -an | sort -d | wc -l
2267
#netstat -na|grep 80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -d
也没什么大不了的连接。
看apache日志 ,发现几个连接。一直访问个没完。
220.181.19.96
220.181.19.85
......
一查IP,
太狠了。google一看,受害者不少。[1] [2] [3]
是技术问题还是怎么着。派了一堆蜘蛛出来。真服了。
整个IP段deny 掉,这回清净啦!
server# netstat -an | sort -d | wc -l
287
个人感受:freebsd 和 linux 的一点区别
这一月来因为要将三四台正在使用中的服务器操作系统由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
觉得挺无奈的,谁有更好的办法?
mysqldump 导出的sql文件导入时提示Unknown command ‘\[‘.
两台linux机器的mysql配置一模一样。
#mysqldump forum>forum.sql -u root -p
导出一个2.4G大的forum.sql文件,然后试图导入内网(192.168.0.8)的另一台机器时,出现问题
#mysql forum<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,也不行。
最后拉到本机去,终于可以正常导入。
问题虽然解决,但根源是什么还是没弄懂。
哪个老师知道此问题的原因,请赐教。
最后,学到一个简单的服务器间复制库的办法。
mysqldump -hhost1 xx | mysql -hhost2
从host1导出库xx,然后写入host2
架构基于DZ或PW论坛的文件防盗链系统
需求:
一个技术/娱乐论坛 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 到虚拟主机设置里.
<Directory "/www/bbs.mowai.com">
<FilesMatch "^download$">
ForceType application/x-httpd-php
</FilesMatch>
</Directory>
也可以写 .htaccess 文件来实现.目的是实现用PHP来处理download文件
---------------------------------------------------------------
3.
---------------------------------------------------------------
新建一个 time.txt 文件,位于 /bbs/ 目录下.内容为:De7Tvs9K 就是上面那个乱码文件夹
---------------------------------------------------------------
新建一个名为 download 的php文件在 /bbs/ 目录下(注意,这个文件没有后缀名)
代码如下:
<?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)) {
$last_m_time = filemtime($filename);
$directory_name = file_get_contents($filename);
//判断时间是否到期
if(time() - $last_m_time > $interval_tim*3600 ) {
$new_directory_name = random(12);
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
exit("不能打开文件 $filename");
}
//更改文件夹名
if (rename("bbs/".$directory_name, "bbs/".$new_directory_name)) {
//将新的目录名写入到time.txt文件中。
if (fwrite($handle, $new_directory_name) === FALSE) {
//如果改文件内容失败,把文件夹名改回来
rename("bbs/".$new_directory_name,"bbs/".$directory_name);
exit("不能写入到文件 $filename");
}
$directory_name = $new_directory_name;
} else {
exit("文件夹改名失败");
}
fclose($handle);
} else {
exit("文件 $filename 不可写");
}
}
}else{
exit('文件 $filename 不存在,请创建一个'); //没有time.txt文件,请创建一个。
}
/*################### 游客检查 #############*/
if(!$allow_guest_download && !$discuz_uid) {
//exit('此操作需要登录!您尚未 <a href="http://bbs.mowai.com/logging.php?action=login">登录</a>');
header("Location: http://www.mowai.com/error/need_login.html");
exit;
}
/*################### 来源检查 #############*/
preg_match("/https?:\/\/([^\/]+).*/i", $_SERVER['HTTP_REFERER'],$matchs);
if($referer_verify && !in_array($matchs[1],$referer_uri_list)) {
header("Location: http://www.mowai.com/error/invalidreferer.html");
//exit('您要下载的文件位于http://bbs.mowai.com');
}else{
if(isset($_SERVER['PATH_INFO'])){
//这里可以加一些判断文件是否存在而出现错误提示的信息。
header("Location:{$down_uri}{$directory_name}/{$_SERVER[PATH_INFO]}");
}
else {
header("Location: http://www.mowai.com/error/404.html");
}
}
?>
代码在linux+DZ5.5.0 下运行成功.
需要注意的几点
如果是*nix系统,请将time.txt的文件属性设置为777
如果要下载的文件在远程计算机,请使用PHP的FTP命令来做更名操作.
PW论坛,根据情况改改代码就行了.