存档

2008年11月 的存档

今天遇到的几个设置方法

2008年11月28日

nginx
定义错误页面 error_page 404 http://www.k12zy.com;

限速 limit_rate  20k;

虚拟目录 alias /export/file/cn/;

linux
mount windows共享服务: mount -t cifs -o username=***,password=*** //192.168.16.10/e$ /export/ss/

lftp mirror: mirror -c –parallel=5 cn /export/file/

mirror [OPTS] [remote [local]]
下載整個目錄(樓上的 get 只能用來抓檔案)
-c 續傳
-e 這個要小心一些, 比較遠端和本地端的檔案, 假如遠端沒有的, 就將本地端的檔案刪除, 也就是將本地端和遠端資料同步。
-R 上傳整個目錄
-n 只下載較新的檔案
-r 不用遞迴到目錄中
–parallel=n 同時下載 n 個檔案(預設一次只下載一個)

samba中文乱码
vi /etc/samba/smb.conf
根据locales的设置,修改该文件:
1. 如果locale是zh_CN.UTF-8,做如下设置:
display charset = UTF-8
unix charset = UTF-8
dos charset = UTF-8
2. 如果locale是zh_CN.GBK或zh_CN.gb2312,做如下设置:
display charset = cp936
unix charset = cp936
dos charset = cp936
重启samba:
service samba restart
则无论从windows的网上邻居,还是直接用securecrt登陆,均可显示正常中文。

批量改文件名
在当前目录下执行 find . -name “*.zip” | while read file; do mv $file $(echo $file|sed s/zip$/rar/g); done

备忘录 , ,

在centos5.2下配置mrtg监控服务器状态

2008年11月26日

在sun下编译过mrtg,图形化显示网络流量,很好用。

在centos下可以直接用yum来安装mrtg,配置比较复杂下面是简单的记录

1.yum安装

yum install net-snmp net-snmp-devel net-snmp-utils mrtg

2.snmp配置

由于mrtg的统计都是通过snmp来做的,所以一般有错误的话都是snmp没有配置好,从网上学习了一个配置文件,可供参考

vi /etc/snmp/snmpd.conf
com2sec local localhost private
com2sec mynet 192.168.16.0/24 public
com2sec public default public

group mygroup v1 mynet
group mygroup v2c mynet
group mygroup usm mynet
group local v1 local
group local v2c local
group local usm local
group public v1 public
group public v2c public
group public usm public

view all included .1 80

access mygroup “” any noauth exact mib2 none none
access public “” any noauth exact all none none
access local “” any noauth exact all all all

syslocation Right here, right now.
syscontact Me
proc mountd
proc ntalkd 4
proc sendmail 10 1
disk / 9689
disk /export/hd3 153327
load 12 14 14

修改完毕后重启 service snmpd start

3.配置mrtg
制作配置文件:cfgmaker –global ‘WorkDir: /var/www/mrtg’–output /etc/mrtg/mrtg.cfg public@127.0.0.1

生成网页:indexmaker -output=/var/www/mrtg/index.html -title=”k12zy.com status” /etc/mrtg/mrtg.cfg

MRTG除了统计流量之外,还可以根据snmp来统计CPU、UPTIME、内存、磁盘使用量等等,具体配置可以参考我下面提供的链接或者下面的mrtg配置文件。

配置结束后启动env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg 启动三次,因为数据文件的原因前两次会报错,不用理会第三次就好了。

4.配置web服务器

配置自己的web服务器将主目录指向WorkDir,可以设置相关的权限之类的,然后通过浏览器访问就行。

5.配置自动运行

mrtg的运作方式是定时运行,每次运行生成各统计的图片和数据。即他生成的东西都是静态的,但需要经常定时运行。

加入corn 每5分钟运行一次,基本占不了什么资源。

crontab -e
*/5 * * * * env LANG=C /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg.cfg

下面是我的mrtg的配置文件,包含cpu 内存 硬盘等 大家可以参考。关于硬盘需在snmp里设置好,上面配置文件里的disk / 9689,其中9689这个磁盘大小是根据df -am中的数据来设置的。 阅读全文…

linux, 我的网站 ,

nginx 防盗链插件 nginx-accesskey

2008年11月26日

按照官方配置安装后都会出现错误,看了半天源码又在网上转了一圈找到了一个补丁,又出现编译错误,修改了源码才完成编译,试了一下功能很好用。

http://www.ieesee.net:8080/~uingei/nginx-accesskey-2.0.3.diff.bz2

下载上面的补丁文件,进入nginx的目录然后执行:

bzcat ../nginx-accesskey-2.0.3.diff.bz2 | patch -p1
/configure –with-http_accesskey_module …
make
make install

我使用的是centos,编译时提示有未使用的变量 clcf,打开源码将 ngx_http_core_loc_conf_t       *clcf; 这句删掉,然后编译通过。
我配置的0.6.33 也没有问题

我的网站

鼠标点击行为统计

2008年11月24日

       尝试了一下鼠标点击行为统计,关于统计其实很简单,onclick触发行为通过后台的http请求将屏幕宽度、点击点的X、Y坐标点传到服务器。关键的问题是点击点的显示,由于用户分辨率都不同所得到的x、y点相对位置也不同。

      在实际应用中我们需要生成一个鼠标点击点和页面整合得到一张图片。那如何处理上面的相对位置的问题呢,我们现在有用户鼠标点击点的坐标和宽度,如何将所有的点转换为在一个统一分辨率下的坐标值,其实也不是他复杂,针对这个问题想了一个算法:

x¹=(w¹-(w/2-x))+x

其中x¹为新左边点 w¹为新的分辨率宽度

    以上的解决办法只适合网页横向居中的情况,当然在局左的情况下根本也不用处理,靠右的情况下也很好处理,另外Y点在相同的页面上也是没有问题的。

    另一点考虑,是否可以按照板块来处理,比如我的网站里面类似的页面很多,如何将类似的页面结合起来统计,这就带来了页面竖向的问题,因为由于内容的多少的问题页面的高度并不相同,这就很难处理。那么是否可以这样,比如鼠标进入了这一预先设置好的区域内,则根据在这一区域内的相对位置来取得X、Y值,然后在后台将各个区域板块重新组合。

    都是想法,也没具体实现。下图是一个测试。

我的网站 ,

高速内存数据缓存 memcached

2008年11月23日

安装libeven
wget http://monkey.org/~provos/libevent-1.4.8-stable.tar.gz
tar -xvf libevent-1.4.8-stable.tar.gz
cd libevent-1.4.8-stable
./configure
make
make install

安装 memcached
wget wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar -xvf memcached-1.2.6.tar.gz
cd memcached-1.2.6
./configure
make
make install
安装到/usr/local/bin/memcached

linux

nginx apache xcache 效果对比测试

2008年11月23日

安装后我进行了测试以下为测试结果
分别开启关闭xcache 运行两次ab -n 1000 http://bbs.k12zy.com/forum-19-1.html

Server Software: nginx/0.6.33
Server Hostname: bbs.k12zy.com
Server Port: 80
Document Path: /forum-19-1.html
Document Length: 32118 bytes

Time taken for tests: 38.976547 seconds
Requests per second: 25.66 [#/sec] (mean)
Time per request: 38.977 [ms] (mean)
Time per request: 38.977 [ms] (mean, across all concurrent requests)
Transfer rate: 814.16 [Kbytes/sec] received

Time taken for tests: 17.326479 seconds
Requests per second: 57.72 [#/sec] (mean)
Time per request: 17.326 [ms] (mean)
Time per request: 17.326 [ms] (mean, across all concurrent requests)
Transfer rate: 1831.47 [Kbytes/sec] received

那么apache服务器的效果如何呢,又做了测试

Server Software: Apache/2.2.3
Server Hostname: 121.250.15.4
Server Port: 80
Document Path: /forum-19-1.html
Document Length: 32116 bytes

Time taken for tests: 32.138246 seconds
Requests per second: 31.12 [#/sec] (mean)
Time per request: 32.138 [ms] (mean)
Time per request: 32.138 [ms] (mean, across all concurrent requests)
Transfer rate: 988.04 [Kbytes/sec] received

Time taken for tests: 20.6633 seconds
Requests per second: 49.98 [#/sec] (mean)
Time per request: 20.007 [ms] (mean)
Time per request: 20.007 [ms] (mean, across all concurrent requests)
Transfer rate: 1587.17 [Kbytes/sec] received

 其中红色为开启xcache的值

结果来看开启xcache肯定要快,至于apache和nginx的fastcgi来比较缺让人看的不清楚, 只能解释由于第一次测试的是nginx不开xcache可能在数据库端使其变慢,都以一次测试的值也不能算作科学统计,仅做为自己的测试吧。

linux, 我的网站 , , , ,

安装 xcache 加速php

2008年11月22日

在服务器中安装了xcache,来加速php的运行。

关于xcache 可以查看 http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps1/

yum install php-devel

wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
tar -xvf xcache-1.2.2.tar.gz
cd xcache-1.2.2
phpize

./configure –enable-xcache –enable-xcache-coverager
make
make install

得到结果:
Installing shared extensions:     /usr/lib/php/modules/
将配置加入php.ini
cat xcache.ini >> /etc/php.ini

编辑php.ini 将 xcache.so的路径改为  /usr/lib/php/modules/xcache.so
重启fastcgi spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u nobody -g nobody -f /usr/bin/php-cgi
安装 XCache Administration
修改php.ini xcache.admin.pass=”” 为md5(“密码”)的值

复制 admin 文件夹到web目录

浏览器中浏览

启用后居然不管用原来默认配置中xcache.size和xcache.var_size都是0M  改成合适的数值就好

参考:http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps1/

linux, 我的网站 , , ,

nginx 的配置

2008年11月22日

加入了php的支持,nginx使用的是fastcgi。

我使用的是centos5.2系统,其中已经通过yum安装了php,因为不想再自己重新编译了就采用spawn-fcgi的方式来做fastcgi,spawn-fcgi包含在lighttpd,

wget lighttpd

./configure;

make;

cp src/spawn-fcgi /usr/bin/spawn-fcgi

spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u nobody -g nobody -f /usr/bin/php-cgi

加入开机启动

nginx 配置

加入了rewrite来做永久链接

server {
listen 222.132.76.204:80;
server_name www.wangjian.info;
access_log  /export/hd1/weblog/gpsview.access.log  main;

location / {
root /export/hd1/web/blog/;
index index.php;

if (-f $request_filename/index.html){
   rewrite (.*) $1/index.html break;

if (-f $request_filename/index.php){
   rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
   rewrite (.*) /index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /export/hd1/web/blog$fastcgi_script_name;
include fastcgi_params;
}
}
}

OK了,经过感觉,速度好像是快了点。继续测试中。

linux, 我的网站 , , ,

[转]apache 的防盗链

2008年11月22日

NginxHttpAccessKeyModule nginx的防盗链插件

直接用HTTP服务器下载也不是很容易的事。最开始在IIS里面配置,IIS只能设定最大下载速度和最大连接数,这对于一些使用下载工具一来就开50+线程霸道下载的朋友明显是防不住的。网上搜了N久就发现一个用Delphi写的看不懂的ISAPI Filter以及别的收费软件若干。试过之后都起不了作用,也便放弃了,最后发现Apache有这些开源的功能模块,最终打造出完美限制的HTTP下载服务器。

首先说说完美限制的意思:防盗链、限制客户端下载线程数,限制下载带宽。下面一一介绍怎么在Apache里面实现这些功能。

防盗链

传统的防盗链都是通过Referer来判断用户来路的,不过这样的方法对于下载工具来说形同虚设,因为现在的下载工具早就能伪造Referer了。

现在一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击连接的时候服务器会验证这个验证码是否有效从而决定是否允许下载。或者就是用某些方法把文件实际地址进行伪装。不过我觉得这些都不怎么好用,我用了一个简单有效的方式来实现防盗链。

其实就是用Cookie,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。

首先在浏览页面的时候,会向客户端发送一个特别的Cookie,例如“Site=LeiDown.Com“,盗链而来的将没有这个Cookie。

在Apache的httpd.conf文件里面搜索:

#LoadModule rewrite_module modules/mod_rewrite.so

把它前面的#去掉,再找到<Directory />块,在里面加入类似如下代码:

<Directory />
     # Other configurations …
    RewriteEngine On # 启动URL Rewrite引擎
   RewriteCond %{HTTP_COOKIE} !^.*(?:Site=LeiDown.Com).*$ # 对于Cookie里面没有特殊记录的请求进行重定向
   RewriteRule ^.*$ error.html # 将非法访问重定向到错误页面
</Directory>

这样如果一个盗链而来的请求将会因为没有特殊Cookie而被重定向到错误页面,就算实际地址暴露也不怕。至于这个Cookie的内容是什么以及有效时间完全可以由管理员自己来设定,也就是说下载工具也没法伪造,从而防止了服务器资源被盗链的危险。

限制客户端多线程下载

限制多线程现在需要用到一个Apache的扩展模块mod_limitipconn,这里是作者的官方网站http://dominia.org/djao/limitipconn2.html,先下载适合自己版本的模块文件到Apache安装目录下的modules目录下面,然后在httpd.conf文件中搜索:

#LoadModule status_module modules/mod_status.so

把它前面的#去掉,再加入:

ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.dll # 如果你下载的不是Win版,请把后面的文件名改为你所下载的文件名
<IfModule mod_limitipconn.c>
   <Location /> # 这里表示限制根目录,即全部限制,可以根据需要修改
   MaxConnPerIP 2 # 这里表示最多同时两个线程
   NoLimit html/* # 这里表示html目录下不受限制
   </Location>
</IfModule>

这样来自同一客户端的超过2个的线程请求将被拒绝,从而限制了客户端的多线程下载。

限制下载带宽

这个同样需要扩展模块支持,模块是mod_bw,在作者的官方网站http://ivn.cl/apache/可以下载到。同样也是放入modules目录下面,然后在httpd.conf文件中加入:

LoadModule bw_module modules/mod_bw.dll

再找到<Directory />块,加入:

<Directory />
   # Other configurations …
   BandwidthModule On # 启动带宽限制
    ForceBandwidthModule On # 启动带宽限制
     MaxConnection all 2000 # 最大连接数2000
   Bandwidth all 200000 # 单个客户端最大带宽200KB
</Directory>

这样限制了同时最多2000个连接数,每个客户端最大200KB的下载带宽。

到此,我们的完美限制的HTTP下载服务器就配置完成了,重新启动你的Apache这些功能便能生效了。因为Apache和这些模块都是开源免费的,我们不需要为此掏一分钱,不用去购买那些第三方的软件,只是需要多去了解一下这些软件的使用说明。不要一切都祈祷有现成美好的东西,自己动手做一次会有不一样的收获。

RewriteLock RewriteLock file-path None 设置RewriteMap程序的同步锁文件 要求是本地文件,此文件只对rewriting map-program有效。 RewriteMap RewriteMap MapName MapType:MapSource Notused per default 定义重写影射 具体说明参见文档 RewriteBase RewriteBase URL-path physical directory path 设置目录范围内重写的基本URL 具体说明参见文档 RewriteCond RewriteCond TestString CondPattern None 定义规则条件 具体说明参见文档 RewriteRule RewriteRule Pattern Substitution None 定义重写规则 具体说明参见文档

备忘录, 我的网站 ,

给vmware esx 添加物理硬盘

2008年11月21日

研究了2950 的 raid卡PERC 5/I 相对还是比较简单的,功能也挺多。

想给esx加快硬盘,先试验性的加了一块,设置好raid卡,进入系统,结果启动到中间就停住了,在touch: /var/*****  readonly model 具体记不清了。解决办法是进入linux命令模式,查看新加的硬盘 fdisk /dev/sdb 记过为ntfs分区,删除分区新建分区,格式化,重启,顺利进去系统。

进入系统后在vi里添加硬盘,结果显示不能读取现在的分区情况,解决办法,进入ssh fdisk发现居然没有分区了那么就添加一个新分区保存退出。然后再到vi里添加就好了。

添加物理硬盘给虚拟机用

进入ssh:ls /vmfs/devices/disks/ 查看新的硬盘名为 vmhba0:1:0:0 

ls /vmfs/volumes/ 查看已有的存储器名storage1

新建映射(Raw Device Mapping):vmkfstools -r /vmfs/devices/disks/vmhba0:1:0:0 /vmfs/volumes/storage1/sata.vmdk

虚拟机:添加已存在的磁盘-找到sata.vmdk。

遗憾的是不能各虚拟机共享使用。

vmware ,