Apache 支持中文路径(URL)
[ 2009/09/12 04:12 | by selboo ]
让Apache 支持中文路径(URL)
比如 http://selboo.com.cn/色萝卜.txt 使用IE可以读取到文件内容
环境:Apache/2.2.12 (Unix) 需要给Apache 增加模块
mod_encoding-20021209.tar.gz
mod_encoding.c-apache2.2-20060520.patch
mod_encoding.c.apache2.20040616
下载文件 (已下载 307 次)
[root@localhost mod]# tar -zxvf mod_encoding-20021209.tar.gz
[root@localhost mod]# cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c
[root@localhost mod]# cd mod_encoding-20021209
[root@localhost mod_encoding-20021209]# patch -p0 < mod_encoding.c-apache2.2-20060520.patch
[root@localhost mod_encoding-20021209]# cd lib/
[root@localhost lib]# ./configure
[root@localhost lib]# make
[root@localhost lib]# make install
[root@localhost lib]# cd ..
[root@localhost mod_encoding-20021209]# cp ../mod_encoding.c-apache2.2-20060520.patch ./
[root@localhost mod_encoding-20021209]# patch -p0 < mod_encoding.c-apache2.2-20060520.patch
[root@localhost mod_encoding-20021209]# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-iconv-hook=/usr/include
[root@localhost mod_encoding-20021209]# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook
[root@localhost mod_encoding-20021209]# cp mod_encoding.so /usr/local/apache/modules/
修改 httpd.conf
比如 http://selboo.com.cn/色萝卜.txt 使用IE可以读取到文件内容
环境:Apache/2.2.12 (Unix) 需要给Apache 增加模块
mod_encoding-20021209.tar.gz
mod_encoding.c-apache2.2-20060520.patch
mod_encoding.c.apache2.20040616

[root@localhost mod]# tar -zxvf mod_encoding-20021209.tar.gz
[root@localhost mod]# cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c
[root@localhost mod]# cd mod_encoding-20021209
[root@localhost mod_encoding-20021209]# patch -p0 < mod_encoding.c-apache2.2-20060520.patch
[root@localhost mod_encoding-20021209]# cd lib/
[root@localhost lib]# ./configure
[root@localhost lib]# make
[root@localhost lib]# make install
[root@localhost lib]# cd ..
[root@localhost mod_encoding-20021209]# cp ../mod_encoding.c-apache2.2-20060520.patch ./
[root@localhost mod_encoding-20021209]# patch -p0 < mod_encoding.c-apache2.2-20060520.patch
[root@localhost mod_encoding-20021209]# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-iconv-hook=/usr/include
[root@localhost mod_encoding-20021209]# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook
[root@localhost mod_encoding-20021209]# cp mod_encoding.so /usr/local/apache/modules/
修改 httpd.conf
LoadModule headers_module modules/mod_headers.so
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding GBK
DefaultClientEncoding UTF-8 GBK GB2312
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
</IfModule>
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding GBK
DefaultClientEncoding UTF-8 GBK GB2312
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
</IfModule>
找出空目录
find /path -depth -type d -empty
找字节为0的文件
find /path -depth -type f -empty
找出具体文件名的文件
find /path -name name_of_file
找出特定扩展名的文件
find /path -name "*.given_extension"
根据权限及指定扩展名寻找文件
find /path -name '*.txt' -perm 644
找出指定权限的文件
find /path -perm -permision_bits(权限位)
找出指定文件名(任意扩展名的文件)
find /path -name 'given_name.*'
find根据时间寻找
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
各参数说明
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
-mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件
更改时间在5日以内的文件
find /path -mtime -5
找出并删除文件
find /path -name "core.*" -type f -print | xargs /bin/rm -f
====================================================
find pathname -options [-print -exec -ok]
pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print find命令将匹配的文件输出到标准输出。
-exec find命令对匹配的文件执行该参数所给出的shell命令。
相应命令的形式为'command'{} \;,注意{}和\;之间的空格。
-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
文件状态判断:
-mtime: 指定时间文件内容被修改过
-ctime: 指定时间文件权限被修改过
-atime: 指定时间文件被读取过
找出3天“以前”被修改过的文档
# find /var/log/ -mtime +3 -type f -print
找出3天“内”被修改过的文档
# find /var/log/ -mtime -3 -type f -print
找出第3天被修改过的文档.
# find /var/log/ -mtime 3 -type f -print
或这样写:
#find /var/log/ -mtime +2 -mtime -4 -type f -print
注:
访问过用amin,修改过用mmin,文件状态改变过用cmin
精确到分钟的用amin,mmin,cmin,精确到天的用atime,mtime,ctime
找出指定扩展名后修改扩展名
find /path -type f | xargs rename .baksh ".sh"
find /path -depth -type d -empty
找字节为0的文件
find /path -depth -type f -empty
找出具体文件名的文件
find /path -name name_of_file
找出特定扩展名的文件
find /path -name "*.given_extension"
根据权限及指定扩展名寻找文件
find /path -name '*.txt' -perm 644
找出指定权限的文件
find /path -perm -permision_bits(权限位)
找出指定文件名(任意扩展名的文件)
find /path -name 'given_name.*'
find根据时间寻找
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
各参数说明
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
-mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件
更改时间在5日以内的文件
find /path -mtime -5
找出并删除文件
find /path -name "core.*" -type f -print | xargs /bin/rm -f
====================================================
find pathname -options [-print -exec -ok]
pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print find命令将匹配的文件输出到标准输出。
-exec find命令对匹配的文件执行该参数所给出的shell命令。
相应命令的形式为'command'{} \;,注意{}和\;之间的空格。
-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
文件状态判断:
-mtime: 指定时间文件内容被修改过
-ctime: 指定时间文件权限被修改过
-atime: 指定时间文件被读取过
找出3天“以前”被修改过的文档
# find /var/log/ -mtime +3 -type f -print
找出3天“内”被修改过的文档
# find /var/log/ -mtime -3 -type f -print
找出第3天被修改过的文档.
# find /var/log/ -mtime 3 -type f -print
或这样写:
#find /var/log/ -mtime +2 -mtime -4 -type f -print
注:
访问过用amin,修改过用mmin,文件状态改变过用cmin
精确到分钟的用amin,mmin,cmin,精确到天的用atime,mtime,ctime
找出指定扩展名后修改扩展名
find /path -type f | xargs rename .baksh ".sh"
Are you sure you want to continue connecting (yes/no)?
[ 2009/08/31 12:04 | by selboo ]
The authenticity of host '64.71.167.20 (64.71.167.20)' can't be established.
RSA key fingerprint is bf:fd:e4:52:fe:25:9c:72:f5:1f:49:77:cf:3b:85:79.
Are you sure you want to continue connecting (yes/no)?
ssh 连接时经常能碰到如上信息,如果一两台还可以手动输入,如果多了就麻烦下
可以使用 -oStrictHostKeyChecking=no 参数进行过滤
ssh -oStrictHostKeyChecking=no 64.61.167.20
也可以使用 expect 命令模拟键盘输入"yes"
RSA key fingerprint is bf:fd:e4:52:fe:25:9c:72:f5:1f:49:77:cf:3b:85:79.
Are you sure you want to continue connecting (yes/no)?
ssh 连接时经常能碰到如上信息,如果一两台还可以手动输入,如果多了就麻烦下
可以使用 -oStrictHostKeyChecking=no 参数进行过滤
ssh -oStrictHostKeyChecking=no 64.61.167.20
也可以使用 expect 命令模拟键盘输入"yes"
使用mob_bw管理apache2下载带宽
[ 2009/08/17 19:07 | by selboo ]
有个下载站,提供大文件的上传下载服务,没有盗链,都是正常应用,带宽经常占满。后来查到原来有几个用户使用的带宽是百兆光纤,这几个用户一下载,整个服务器的带宽就基本上被用光了,其他用户再来下载,基本上就下载不下来了。
机房给的带宽是百兆共享,最多能用到10M,为了能充分合理的使用带宽,这里使用了apache的bw_module。
安装
wget http://apache.ivn.cl/files/source/mod_bw-0.8.tgz
tar xzvf mod_bw-0.8.tgz
cd mod_bw
/usr/local/apache/bin/apxs -i -a -c mod_bw.c
配置
编辑httpd.conf
添加如下一行
LoadModule bw_module modules/mod_bw.so
设置带宽控制策略
我这里的需求有两点,一是只要带宽足够,则尽量给用户最多的带宽;而是如果同时下载人数过多,则给用户保障一个最低带宽,并且尽量平均分配。
BandWidthModule on
ForceBandWidthModule On
BandWidth all 10240000
MinBandWidth all 204800
在这种情况下,总带宽限制在10M,如果服务器上只有一个用户在下载,那么就给他10M的带宽(如果客户端也能有这么高带宽的话),当有50个用户在下载的话,则保障每个用户都能有200K带宽,当有100个用户在下载的话,则平均每个用户分配100K带宽。
bw_module的策略还有很多种,具体可以看源代码中的mod_bw.txt
机房给的带宽是百兆共享,最多能用到10M,为了能充分合理的使用带宽,这里使用了apache的bw_module。
安装
wget http://apache.ivn.cl/files/source/mod_bw-0.8.tgz
tar xzvf mod_bw-0.8.tgz
cd mod_bw
/usr/local/apache/bin/apxs -i -a -c mod_bw.c
配置
编辑httpd.conf
添加如下一行
LoadModule bw_module modules/mod_bw.so
设置带宽控制策略
我这里的需求有两点,一是只要带宽足够,则尽量给用户最多的带宽;而是如果同时下载人数过多,则给用户保障一个最低带宽,并且尽量平均分配。
BandWidthModule on
ForceBandWidthModule On
BandWidth all 10240000
MinBandWidth all 204800
在这种情况下,总带宽限制在10M,如果服务器上只有一个用户在下载,那么就给他10M的带宽(如果客户端也能有这么高带宽的话),当有50个用户在下载的话,则保障每个用户都能有200K带宽,当有100个用户在下载的话,则平均每个用户分配100K带宽。
bw_module的策略还有很多种,具体可以看源代码中的mod_bw.txt
使用内存作linux下的临时文件夹
[ 2009/08/17 18:37 | by selboo ]
从理论上来说,内存的读写速度是硬盘的几十倍,性能应该会有所提升
在一些访问量比较高的系统上,通过把一些频繁访问的文件,比如session 放入内存中,能够减少很多的iowait,大大提高服务器的性能
在/etc/fstab中加入一行:
none /tmp tmpfs defaults 0 0
重启后生效
或者在/etc/rc.local中加入
mount tmpfs /tmp -t tmpfs -o size=128m
其中size=128m 表示/tmp最大能用128m
或
mount tmpfs /tmp -t tmpfs
不限制大小,这种情况可以用到2G内存,用 df -h 可以看到
tmpfs 2.0G 48M 2.0G 3% /tmp
注:不管哪种方式,只要linux重启,/tmp下的文件全部消失
另外,在一个正在运行的系统上运行 mount tmpfs /tmp -t tmpfs 会导致 /tmp下原来的所有文件都会被“覆盖”掉,之所以加个“”,因为这种覆盖只是暂时的,如果 umount /tmp的话,原来的文件还能再访问。
因为这些文件会被“覆盖”,比如原来的session mysql.sock等文件就不能访问了,用户的登陆信息就会丢失,mysql数据库也无法连接了(如果mysql.sock位于/tmp下的话)。
正确的做法是,先把/tmp下的所有文件临时mv到一个别的目录,mount tmpfs之后,再mv回来
在一些访问量比较高的系统上,通过把一些频繁访问的文件,比如session 放入内存中,能够减少很多的iowait,大大提高服务器的性能
在/etc/fstab中加入一行:
none /tmp tmpfs defaults 0 0
重启后生效
或者在/etc/rc.local中加入
mount tmpfs /tmp -t tmpfs -o size=128m
其中size=128m 表示/tmp最大能用128m
或
mount tmpfs /tmp -t tmpfs
不限制大小,这种情况可以用到2G内存,用 df -h 可以看到
tmpfs 2.0G 48M 2.0G 3% /tmp
注:不管哪种方式,只要linux重启,/tmp下的文件全部消失
另外,在一个正在运行的系统上运行 mount tmpfs /tmp -t tmpfs 会导致 /tmp下原来的所有文件都会被“覆盖”掉,之所以加个“”,因为这种覆盖只是暂时的,如果 umount /tmp的话,原来的文件还能再访问。
因为这些文件会被“覆盖”,比如原来的session mysql.sock等文件就不能访问了,用户的登陆信息就会丢失,mysql数据库也无法连接了(如果mysql.sock位于/tmp下的话)。
正确的做法是,先把/tmp下的所有文件临时mv到一个别的目录,mount tmpfs之后,再mv回来