Apache模块开发/用C语言扩展apache(1:简述)
by linux_prog
Apache是一个非常稳定而且非常open的web server,它的很多功能都可以通过plugin的方式去扩展。
比如:mod_proxy使得apache可以作代理, mod_rewrite使得apache可以实现非常强大的url mapping和rewritting
功能,你是否也想自己来开发一个apache module呢?网上这方面的文章非常的少,而且全是E文,
希望我的这篇文章能够给你一些实质性的帮助。
阅读全文
by linux_prog
Apache是一个非常稳定而且非常open的web server,它的很多功能都可以通过plugin的方式去扩展。
比如:mod_proxy使得apache可以作代理, mod_rewrite使得apache可以实现非常强大的url mapping和rewritting
功能,你是否也想自己来开发一个apache module呢?网上这方面的文章非常的少,而且全是E文,
希望我的这篇文章能够给你一些实质性的帮助。
阅读全文
今年2月2日,国外媒体报道,Google Android平台在2010年第四季度超越nokia Symbian成为全球最大智能手机平台,结束了Symbian引领智能手机市场长达10多年的历史。就这样一款机器人,拯救了moto,巅峰了HTC。android是如何将智能手机市场霸主Symbian一步步拉下神坛,自己又是如何步步为营,转向坐上全球智能手机操作系统的王座,手段和策略值得深思!
android是一款基于Linux内核的操作系统,Google2005年收购android inc.之后,在原有操作系统的基础上采用软件叠层(software stack)的技术架构,分别为基础层,中间层,用户界面和应用层。android诞生之时正是Symbian大行其道之时,作为一款新兴的操作系统,是如何在寡头市场杀出一条血路,android主要祭出了四招,正可谓招招见血,刀刀到肉!
阅读全文
android是一款基于Linux内核的操作系统,Google2005年收购android inc.之后,在原有操作系统的基础上采用软件叠层(software stack)的技术架构,分别为基础层,中间层,用户界面和应用层。android诞生之时正是Symbian大行其道之时,作为一款新兴的操作系统,是如何在寡头市场杀出一条血路,android主要祭出了四招,正可谓招招见血,刀刀到肉!
阅读全文
斯德哥尔摩综合症(Stockholm syndrome),斯德哥尔摩效应,又称斯德哥尔摩症候群或者称为人质情结或人质综合症,是指犯罪的被害者对于犯罪者产生情感,甚至反过来帮助犯罪者的一种情结。这个情感造成被害人对加害人产生好感、依赖心、甚至协助加害于他人。
人质会对劫持者产生一种心理上的依赖感。他们的生死操在劫持者手里,劫持者让他们活下来,他们便不胜感激。他们与劫持者共命运,把劫持者的前途当成自己的前途,把劫持者的安危视为自己的安危。于是,他们采取了“我们反对他们”的态度,把解救者当成了敌人。
据心理学者的研究,情感上会依赖他人且容易受感动的人,若遇到类似的状况,很容易产生斯德哥尔摩综合症。
1973年的斯德哥尔摩银行劫案
1973年8月23日,两名有前科的罪犯Jan Erik Olsson与Clark Olofsson,在意图抢劫瑞典首都斯德哥尔摩市内最大的一家银行失败后,挟持了四位银行职员,在警方与歹徒僵持了130个小时之后,因歹徒放弃而结束。然而这起事件发生后几个月,这四名遭受挟持的银行职员,仍然对绑架他们的人显露出怜悯的情感,他们拒绝在法院指控这些绑匪,甚至还为他们筹措法律辩护的资金,他们都表明并不痛恨歹徒,并表达他们对歹徒非但没有伤害他们却对他们照顾的感激,并对警察采取敌对态度。更甚者,人质中一名女职员Christian竟然还爱上劫匪Olofsson,并与他在服刑期间订婚。 这两名抢匪劫持人质达六天之久,在这期间他们威胁受俘者的性命,但有时也表现出仁慈的一面。在出人意表的心理错综转变下,这四名人质抗拒政府最终营救他们的努力。这件事激发了社会科学家,他们想要了解在掳人者与遭挟持者之间的这份感情结合,到底是发生在这起斯德哥尔摩银行抢案的一宗特例,还是这种情感结合代表了一种普遍的心理反应。而后来的研究显示,这起研究学者称为“斯德哥尔摩症候群”的事件,令人惊讶的普遍。研究者发现到这种症候群的例子见诸于各种不同的经验中,从集中营的囚犯、战俘、受虐妇女与乱伦的受害者,都可能发生斯德哥尔摩综合症经验。以人质为例,如果符合下列条件,任何人都有可能遭受到斯德哥尔摩综合症。 第1,是要你切实感觉到你的生命受到威胁,让你感觉到,至于是不是要发生不一定。然后相信这个施暴的人随时会这么做,是毫不犹豫。 第2,这个施暴的人一定会给你施以小恩小惠,最关键的条件。如在你各种绝望的情况下给你水喝。 第3,除了他给所控制的信息和思想,任何其它信息都不让你得到,完全隔离了。 第4,让你感到无路可逃。 有了这4个条件下,人们就会产生斯德哥尔摩综合症。 警方找来心理学家:三个人质为甚么在最后的性命关头都帮匪徒逃命呢?专家深入研究,结论是:人性能承受的恐惧有一条脆弱的底线。当人遇上了一个凶狂的杀手,杀手不讲理,随时要取他的命,人质就会把生命权渐渐付托给这个凶徒。时间拖久了,人质吃一口饭、喝一口水,每一呼吸,他自己都会觉得是恐怖份子对他的宽忍和慈悲。对於绑架自己的暴徒,他的恐惧,会先转化为对他的感激,然后变为一种崇拜,最后人质也下意识地以为凶徒的安全,就是自己的安全。 这种屈服于暴虐的弱点,就叫“斯德哥尔摩精神症候群”。一九七四年,美国报业大王赫斯特的孙女派翠西亚被美国的“共生解放军”绑架,最后自己宣明加入共生解放军,并参于抢劫银行,一九七五年九月被捕。
人质会对劫持者产生一种心理上的依赖感。他们的生死操在劫持者手里,劫持者让他们活下来,他们便不胜感激。他们与劫持者共命运,把劫持者的前途当成自己的前途,把劫持者的安危视为自己的安危。于是,他们采取了“我们反对他们”的态度,把解救者当成了敌人。
据心理学者的研究,情感上会依赖他人且容易受感动的人,若遇到类似的状况,很容易产生斯德哥尔摩综合症。
1973年的斯德哥尔摩银行劫案
1973年8月23日,两名有前科的罪犯Jan Erik Olsson与Clark Olofsson,在意图抢劫瑞典首都斯德哥尔摩市内最大的一家银行失败后,挟持了四位银行职员,在警方与歹徒僵持了130个小时之后,因歹徒放弃而结束。然而这起事件发生后几个月,这四名遭受挟持的银行职员,仍然对绑架他们的人显露出怜悯的情感,他们拒绝在法院指控这些绑匪,甚至还为他们筹措法律辩护的资金,他们都表明并不痛恨歹徒,并表达他们对歹徒非但没有伤害他们却对他们照顾的感激,并对警察采取敌对态度。更甚者,人质中一名女职员Christian竟然还爱上劫匪Olofsson,并与他在服刑期间订婚。 这两名抢匪劫持人质达六天之久,在这期间他们威胁受俘者的性命,但有时也表现出仁慈的一面。在出人意表的心理错综转变下,这四名人质抗拒政府最终营救他们的努力。这件事激发了社会科学家,他们想要了解在掳人者与遭挟持者之间的这份感情结合,到底是发生在这起斯德哥尔摩银行抢案的一宗特例,还是这种情感结合代表了一种普遍的心理反应。而后来的研究显示,这起研究学者称为“斯德哥尔摩症候群”的事件,令人惊讶的普遍。研究者发现到这种症候群的例子见诸于各种不同的经验中,从集中营的囚犯、战俘、受虐妇女与乱伦的受害者,都可能发生斯德哥尔摩综合症经验。以人质为例,如果符合下列条件,任何人都有可能遭受到斯德哥尔摩综合症。 第1,是要你切实感觉到你的生命受到威胁,让你感觉到,至于是不是要发生不一定。然后相信这个施暴的人随时会这么做,是毫不犹豫。 第2,这个施暴的人一定会给你施以小恩小惠,最关键的条件。如在你各种绝望的情况下给你水喝。 第3,除了他给所控制的信息和思想,任何其它信息都不让你得到,完全隔离了。 第4,让你感到无路可逃。 有了这4个条件下,人们就会产生斯德哥尔摩综合症。 警方找来心理学家:三个人质为甚么在最后的性命关头都帮匪徒逃命呢?专家深入研究,结论是:人性能承受的恐惧有一条脆弱的底线。当人遇上了一个凶狂的杀手,杀手不讲理,随时要取他的命,人质就会把生命权渐渐付托给这个凶徒。时间拖久了,人质吃一口饭、喝一口水,每一呼吸,他自己都会觉得是恐怖份子对他的宽忍和慈悲。对於绑架自己的暴徒,他的恐惧,会先转化为对他的感激,然后变为一种崇拜,最后人质也下意识地以为凶徒的安全,就是自己的安全。 这种屈服于暴虐的弱点,就叫“斯德哥尔摩精神症候群”。一九七四年,美国报业大王赫斯特的孙女派翠西亚被美国的“共生解放军”绑架,最后自己宣明加入共生解放军,并参于抢劫银行,一九七五年九月被捕。
在活动中,有一些功能被一直的访问想捞好处是很多人喜欢干的事,估计是用while(1){不段刷页面,IP不变,通过Apache日志看出来},用程序来实现获取兑换码,邀请好友等,还用多线程,给Apache服务器弄挂了,因为后台用的是直连Mysql,这样频繁是没法让Mysql消停的,这时就可以用这个插件了,其实也可以用Memcache来做到程序里,但我个人觉得这种应该是运维来做的事情,所以,我也想实践一下这个Apache插件的实际效果,乃至于编写Apache插件Etc,做了下测试发现这个mod_evasive20还真有必要给放上去,能避免一些用工具刷分的给把Apache以及后台DB给搞挂了:。
Apache的主要插件列表:
1)apache简单防DDOS攻击的配置,需要从网上找一个mod_evasive20模块一般情况下没有必要配置这玩意,但是活动确实有这样的问题压垮Apache,进而DB挂了。
2)apache防sql注入攻击的配置,需要安装mod_security模块。
加大apache最大连接数的配置,如果选择的是preworker工作方式。preworker和worker的区别就不讲了。apache2.0以上直接设置ServerLimit即可,apache2.0以前还要修改源代码才能使修改
的ServerLimit生效,建议应用服务器用apache2.0吧,性能差不了多少。
3)压缩传输的配置,这个做为网站来说非常重要,它是不压缩传输大小的20%左右,也就是说用户访问一个网站速度快了5倍,不配置不行,但是图片不能做压缩了。mod_deflate这个模块就是干这个的。实验证明,启用Apache的mod_deflate模块进行网页内容压缩,能够平均将网页大小降到原来的60%左右。尤其是对非图片、非多媒体为主的网站效果更加明显,http://yangsiwei.com/add-mod_deflate-module-to-apache2。
来源:http://www.youican.com/web/php/9035.html
相关配置参考DownLoad:
下载文件
主要是先看配置文件的中文注释:
========================================================================
DOSHashTableSize 3097 这个是1G数量。
DOSPageCount 5 同一个时间同一个页面被访问的次数。对同一个用户
DOSSiteCount 100 同一个用户同时并发的连接数是100
DOSPageInterval 2
DOSSiteInterval 2 间隔时间
DOSBlockingPeriod 600 被封锁的时间是600秒
DOSLogDir "/var/log/mod_evasive" 日志文件的存放位置。
#DOSWhitelist 127.0.0.1
#DOSWhitelist 192.168.0.*这个就是白名单,这里的ip就不受上面的限制。
[root@102 ~]# touch /var/log/mod_evasive 这样就可以了。
========================================================================
我的实践情况,如下:
#wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
#tar zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
vi mod_evasive20.c
/*
#define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 10 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR "/tmp" // Default temp directory
*/
#define DEFAULT_HASH_TBL_SIZE 6195ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache2/logs" // Default temp directory
/usr/local/apache2/bin/apxs -i -c mod_evasive20.c
...
cp .libs/mod_evasive20.so /usr/local/apache2/modules/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/local/apache2/modules/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/local/apache2/modules/mod_evasive20.a
ranlib /usr/local/apache2/modules/mod_evasive20.a
chmod 644 /usr/local/apache2/modules/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_evasive20.so
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache2/conf/httpd.conf文件中,默认添加一行
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
vi /usr/local/apache2/conf/httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
mkdir -p /usr/local/apache/logs //apache2 ,没有这个apache目录
D:\APMServ5.2.6\Apache\bin>ab.exe -n10000 -c1000 http://http://192.168.1.104/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking http: (be patient)
http://192.168.1.104/
效果果然成了:
Forbidden
You don't have permission to access / on this server.
Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80
而在这个机器上:
root@192.168.1.104:~ curl "http://192.168.1.104/"
...
<title>Test Page for Apache Installation</title>
...
依然正常,说明该模块生效。
发现,没有出现这个文件夹,估计是权限的问题,于是:
chmod -R 777 /usr/local/apache/logs/
再使用:
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
root@192.168.1.104:~ /usr/local/apache/logs # ls
dos-192.168.1.101
本机测试:
root@192.168.1.104:~/usr/local/apache2/bin # ./ab -n10000 -c1000 http://192.168.1.104/
后再看这个页面的情况:
root@192.168.1.104:~/usr/local/apache2/bin # curl "http://192.168.1.104/"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80</address>
</body></html>
看日志,在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip],果然有,如下:
ls /usr/local/apache/logs/
dos-192.168.1.101 dos-192.168.1.104
查看日志多了一个:
dos-192.168.1.104
再看:
tail -f /usr/local/apache2/logs/error_log中日志如下:【注意:是错误日志在apache2/Logs,在第在apache2中】
bogon:/usr/local/apache/logs # tail /usr/local/apache2/logs/error_log
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
。。。
========================================================================
以下是这位兄弟的,看自己的不明白再看他的罢,以下来源:
http://hi.baidu.com/suantop/blog/item/33f392a423bbbbe59152ee01.html
安装modsecurity(mod_security 可以加强apache的安全性特别是在防sql 注入上有很好的效果。):
# tar zxvf
modsecurity-apache-1.9.tar.gz
# cd modsecurity-apache-1.9/apache2/
# /apache2/bin/apxs -cia mod_security.c
打开httpd.conf加入
查看是否有
LoadModule security_module modules/mod_security.so
如没有则加上去
添加一段mod_security的配置文件
<IfModule mod_security.c>
SecFilterEngine On
SecFilterCheckURLEncoding
On
SecFilterDefaultAction "deny,log,status:500"
#SecFilterForceByteRange
32 126
#SecFilterScanPOST On
SecAuditLog
logs/audit_log
###
SecFilter "\.\./"
#####
SecFilter
/etc/*passwd
SecFilter /bin/*sh
#for css attack
SecFilter "<( |
)*script"
SecFilter "<(.| )+>"
#for sql attack
SecFilter "delete[
]+from"
SecFilter "insert[ ]+into"
SecFilter "select.+from"
SecFilter
"union[ ]+from"
SecFilter "drop[ ]"
</IfModule>
来源:http://www.dzhope.com/post/752/
阅读全文
Apache的主要插件列表:
1)apache简单防DDOS攻击的配置,需要从网上找一个mod_evasive20模块一般情况下没有必要配置这玩意,但是活动确实有这样的问题压垮Apache,进而DB挂了。
2)apache防sql注入攻击的配置,需要安装mod_security模块。
加大apache最大连接数的配置,如果选择的是preworker工作方式。preworker和worker的区别就不讲了。apache2.0以上直接设置ServerLimit即可,apache2.0以前还要修改源代码才能使修改
的ServerLimit生效,建议应用服务器用apache2.0吧,性能差不了多少。
3)压缩传输的配置,这个做为网站来说非常重要,它是不压缩传输大小的20%左右,也就是说用户访问一个网站速度快了5倍,不配置不行,但是图片不能做压缩了。mod_deflate这个模块就是干这个的。实验证明,启用Apache的mod_deflate模块进行网页内容压缩,能够平均将网页大小降到原来的60%左右。尤其是对非图片、非多媒体为主的网站效果更加明显,http://yangsiwei.com/add-mod_deflate-module-to-apache2。
来源:http://www.youican.com/web/php/9035.html
相关配置参考DownLoad:
下载文件 主要是先看配置文件的中文注释:
========================================================================
DOSHashTableSize 3097 这个是1G数量。
DOSPageCount 5 同一个时间同一个页面被访问的次数。对同一个用户
DOSSiteCount 100 同一个用户同时并发的连接数是100
DOSPageInterval 2
DOSSiteInterval 2 间隔时间
DOSBlockingPeriod 600 被封锁的时间是600秒
DOSLogDir "/var/log/mod_evasive" 日志文件的存放位置。
#DOSWhitelist 127.0.0.1
#DOSWhitelist 192.168.0.*这个就是白名单,这里的ip就不受上面的限制。
[root@102 ~]# touch /var/log/mod_evasive 这样就可以了。
========================================================================
我的实践情况,如下:
#wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
#tar zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
vi mod_evasive20.c
/*
#define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 10 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR "/tmp" // Default temp directory
*/
#define DEFAULT_HASH_TBL_SIZE 6195ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache2/logs" // Default temp directory
/usr/local/apache2/bin/apxs -i -c mod_evasive20.c
...
cp .libs/mod_evasive20.so /usr/local/apache2/modules/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/local/apache2/modules/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/local/apache2/modules/mod_evasive20.a
ranlib /usr/local/apache2/modules/mod_evasive20.a
chmod 644 /usr/local/apache2/modules/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_evasive20.so
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache2/conf/httpd.conf文件中,默认添加一行
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
vi /usr/local/apache2/conf/httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
mkdir -p /usr/local/apache/logs //apache2 ,没有这个apache目录
D:\APMServ5.2.6\Apache\bin>ab.exe -n10000 -c1000 http://http://192.168.1.104/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking http: (be patient)
http://192.168.1.104/
效果果然成了:
Forbidden
You don't have permission to access / on this server.
Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80
而在这个机器上:
root@192.168.1.104:~ curl "http://192.168.1.104/"
...
<title>Test Page for Apache Installation</title>
...
依然正常,说明该模块生效。
发现,没有出现这个文件夹,估计是权限的问题,于是:
chmod -R 777 /usr/local/apache/logs/
再使用:
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
root@192.168.1.104:~ /usr/local/apache/logs # ls
dos-192.168.1.101
本机测试:
root@192.168.1.104:~/usr/local/apache2/bin # ./ab -n10000 -c1000 http://192.168.1.104/
后再看这个页面的情况:
root@192.168.1.104:~/usr/local/apache2/bin # curl "http://192.168.1.104/"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80</address>
</body></html>
看日志,在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip],果然有,如下:
ls /usr/local/apache/logs/
dos-192.168.1.101 dos-192.168.1.104
查看日志多了一个:
dos-192.168.1.104
再看:
tail -f /usr/local/apache2/logs/error_log中日志如下:【注意:是错误日志在apache2/Logs,在第在apache2中】
bogon:/usr/local/apache/logs # tail /usr/local/apache2/logs/error_log
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
。。。
========================================================================
以下是这位兄弟的,看自己的不明白再看他的罢,以下来源:
http://hi.baidu.com/suantop/blog/item/33f392a423bbbbe59152ee01.html
安装modsecurity(mod_security 可以加强apache的安全性特别是在防sql 注入上有很好的效果。):
# tar zxvf
modsecurity-apache-1.9.tar.gz
# cd modsecurity-apache-1.9/apache2/
# /apache2/bin/apxs -cia mod_security.c
打开httpd.conf加入
查看是否有
LoadModule security_module modules/mod_security.so
如没有则加上去
添加一段mod_security的配置文件
<IfModule mod_security.c>
SecFilterEngine On
SecFilterCheckURLEncoding
On
SecFilterDefaultAction "deny,log,status:500"
#SecFilterForceByteRange
32 126
#SecFilterScanPOST On
SecAuditLog
logs/audit_log
###
SecFilter "\.\./"
#####
SecFilter
/etc/*passwd
SecFilter /bin/*sh
#for css attack
SecFilter "<( |
)*script"
SecFilter "<(.| )+>"
#for sql attack
SecFilter "delete[
]+from"
SecFilter "insert[ ]+into"
SecFilter "select.+from"
SecFilter
"union[ ]+from"
SecFilter "drop[ ]"
</IfModule>
来源:http://www.dzhope.com/post/752/
阅读全文
在Android系统中,自带的闹钟软件自能设定自己默认的铃声作为提示音。要添加自己的铃声,使用闹钟软件是一个方法。但是物尽所用,能用自身软件解决就用自身软件则好。
其实很简单,在SD卡中建立media\audio\ringtones,notifications,alarms三个文件夹就可以添加自己的铃声了。这三个文件夹“ringtones”对应手机铃声;“notification”对应消息提示音(短信铃声);“alarms”即为闹钟铃声。而在这其中的音乐文件不会在播放器中搜索到。
试试吧。
其实很简单,在SD卡中建立media\audio\ringtones,notifications,alarms三个文件夹就可以添加自己的铃声了。这三个文件夹“ringtones”对应手机铃声;“notification”对应消息提示音(短信铃声);“alarms”即为闹钟铃声。而在这其中的音乐文件不会在播放器中搜索到。
试试吧。
问题:rontab里最小的时间单位是分钟,我用*/120,想让每半分钟执行一次,也不行啊。
回答:我想应该是不行的,因为 cron 每分钟才读一次配置文件,看哪些命令要执行,精度应该不能再高了。
有没有其他的解决方案:
这种思路挺巧妙的
但为什么不设置成开机后就启动这个脚本,然后在脚本里面控制间隔呢。
换个思路如下:
方法1:
两个脚本
1个正常,一个sleep30
crontab设置同时启动,想到的只有这个办法了
让其中一个脚本睡眠30秒,另一个正常运行
举例
a.sh是你的脚本
再写一个b.sh
内容如下:
sleep 30
a.sh
然后在cron中把这两个脚本都加进去,设置一样的启动条件(分钟是*)
shell知识:
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时)
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
方法2:
TenSecend.sh
方法3:
* * * * * cmd
* * * * * (sleep 10 && cmd)
* * * * * (sleep 20 && cmd)
* * * * * (sleep 30 && cmd)
* * * * * (sleep 40 && cmd)
* * * * * (sleep 50 && cmd)
这样就可以了,这是个简单的问题,而我没有在Jackxiang上得到答案,看来绝对是我描述问题的方法有问题. 下次定要记得把问题说清楚,这样各位朋友才好帮到我,呵呵~
你可以不停的使用
at
batch
不过得保证10秒程序执行完。
回答:我想应该是不行的,因为 cron 每分钟才读一次配置文件,看哪些命令要执行,精度应该不能再高了。
有没有其他的解决方案:
这种思路挺巧妙的
但为什么不设置成开机后就启动这个脚本,然后在脚本里面控制间隔呢。
换个思路如下:
方法1:
两个脚本
1个正常,一个sleep30
crontab设置同时启动,想到的只有这个办法了
让其中一个脚本睡眠30秒,另一个正常运行
举例
a.sh是你的脚本
再写一个b.sh
内容如下:
sleep 30
a.sh
然后在cron中把这两个脚本都加进去,设置一样的启动条件(分钟是*)
shell知识:
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时)
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
方法2:
TenSecend.sh
方法3:
* * * * * cmd
* * * * * (sleep 10 && cmd)
* * * * * (sleep 20 && cmd)
* * * * * (sleep 30 && cmd)
* * * * * (sleep 40 && cmd)
* * * * * (sleep 50 && cmd)
这样就可以了,这是个简单的问题,而我没有在Jackxiang上得到答案,看来绝对是我描述问题的方法有问题. 下次定要记得把问题说清楚,这样各位朋友才好帮到我,呵呵~
你可以不停的使用
at
batch
不过得保证10秒程序执行完。
mysql消除乱码方法集
我用php+mysql做系统的时候发现数据库的汉字在数据库里是显示正常的,但是一旦数据库与php连接,汉字就会显示为???多个问号,一直都在想办法解决它,但是试了好包括修改php 还有mysql配置文件的默认字体,还有在建html时的字体的设置,但是都不行,今天突然在网上看到有说用 这中方法可以的。1.在使用MySQL和php的时候出现过中文乱码问题
阅读全文
我用php+mysql做系统的时候发现数据库的汉字在数据库里是显示正常的,但是一旦数据库与php连接,汉字就会显示为???多个问号,一直都在想办法解决它,但是试了好包括修改php 还有mysql配置文件的默认字体,还有在建html时的字体的设置,但是都不行,今天突然在网上看到有说用 这中方法可以的。1.在使用MySQL和php的时候出现过中文乱码问题
阅读全文
有很长一段时间一直以为empty应该是能够判断一个东西是否为空的,直到有一天我像这样“empty(trim($a))”使用的时候出现了error,然后查手册才知道了原来empty函数只能判断一个变量是否为空,而不能判断一个字符串(或者其他的值,包括函数返回值)为空。虽然知道了这只是一个表层的原因,但是却没有再去了解深层次的原因。
阅读全文
阅读全文
PDO连接Mysql出现如下:Connection failed: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/usr/local/webserver/mysql/data/mysql.sock' (2)
如下命令编译php后,注意其中有一行是涉及到PDO和MysqlLi的--with-pdo-mysql=/usr/local/webserver/mysql
编译PHP:
wget http://cn.php.net/distributions/php-5.3.6.tar.gz
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl
老外这样说的:configure --with-pdo-mysql --with-mysql-sock=/usr/local/webserver/mysql/data/mysql.sock... This value can either be set at compile time if a domain socket is found at configure.
在:--socket=/data0/data/mysql.sock ,这时你一是可以建立软链接
这儿是可以重新编译一次PDO来实现,二是能通过软链接来实现,重新编译PDO如下:
PDO_MYSQL:
http://pecl.php.net/package/PDO_MYSQL
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql
make
make install
cd ../
要么你直接在编译PHP源代码时编译进去,这儿单独编译时可能会找不到mysql.h,造成上面一一致的原因是我修改了原来Mysql默认的配置:mysql.sock的Path,同时修改了PHP里的Mysql常规Path,而这个PDO的PAth没有在PHP.ini里体现出来,没法修改,只有建立软链接或者重新编译才行。这就是根本原因。
(1)直接建立软链接指向其位置:ln -s /data0/data/mysql.sock /usr/local/webserver/mysql/data/mysql.sock 立竿见影。
(2)重新编译PDO【注意把:mysql.sock设置一下位置,让PDO知道不是以前的那个位Path了】
(3)这儿发现第三种方法,修改好编译好的二进制so文件:
vi /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/pdo_mysql.so
找到那个写死了的mysql.sock的配置处,把路径给修改下,再修改回去,呵呵,如下:
@^@^@/root/jackxiang.com/PDO_MYSQL-1.0.2/mysql_driver.c^@^@/usr/local/webserver/mysql/data/mysql.sock^@^@
修改为这样:
@/root/jackxiang.com/PDO_MYSQL-1.0.2/mysql_driver.c^@^@/data0/data/mysql.sock^@^@/root/jackxiang.com
强制写入,这时,我用的是Nginx下Php的FastCGI,得重启下PHPFastCGI,而要是Apache得重启下Apache即可。
这儿的修改可能有些问题:
root@116.255.139.240:/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626# sh /root/runphp.sh
Starting php-fpm /etc/init.d/phpfpm: line 53: 12947 Segmentation fault $php_fpm_BIN $php_opts
failed
但是说明一个问题:这个配置/usr/local/webserver/mysql/data/mysql.sock确实是写死在这个:pdo_mysql.so 文件里的!!!
php -i|grep mysql.sock得到如下两个设置的地方,
mysql.default_socket => /data0/data/mysql.sock => /data0/data/mysql.sock //常规的Mysql的句柄,和下面不一样导致,pdo报错。
MYSQLI_SOCKET => /usr/local/webserver/mysql/data/mysql.sock //PDO的Mysql句柄
为何这上面两个不一样呢?请查看: php连接到MySQL数据库服务器时三种主要的API:mysql,mysqli,pdo区别及联系
PHP用PDO连接Mysql时出现问题,PHP代码如下:
<?php
$dsn = "mysql:host=localhost;dbname=360syn_mysql";
$db = new PDO($dsn, 'root', '');
root@116.255.139.240:/data0/htdocs/happycun.com# php pdo.php
PHP PDOException: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/usr/local/webserver/mysql/data/mysql.sock' (2) in /data0/htdocs/happycun.com/pdo.php on line 3
也就是这个设置不对:MYSQLI_SOCKET => /usr/local/webserver/mysql/data/mysql.sock
查看Mysql的mysql.sock是在哪儿?如下命令查看:
ps aux|grep mysql
/usr/local/webserver/mysql/bin/mysqld --basedir=/usr/local/webserver/mysql --datadir=/data0/data --plugin-dir=/usr/local/webserver/mysql/lib/plugin --user=mysql --log-error=/data0/data/error_log/log-error.log --pid-file=/data0/data/localhost.localdomain.pid --socket=/data0/data/mysql.sock --port=3306
是谁不小心把/tmp/mysql.sock删除了,最后建立软连接才好了!
原因:
其本质是在编译Mysql的时候可能此时mysql.sock是在/tmp/mysql.sock,而可能在实际配置Mysql的时候,vi /etc/my.cnf 其定义到了:/usr/local/services/mysql-5.0.2*/var/mysql.sock
---------------------
来源网上:
摘要:解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql .sock'连到服务器,而php标准配置正是用过'/tmp/mysql .sock',但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东: [mysql d] socket=/var/lib/mysql .sock 改一下就好了,但也会引起其他的问题,如mysql 程序连不上了,再加一点: [mysql ] socket=/tmp/mysql .sock 或者还可以通过修改php.ini中的配置来使php用其他的mysql .sock来连,这个大家自己去找找 或者用这样的方法: ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock 成功了,就是这样ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock OK!
[mysqld]
socket=/var/lib/mysql.sock
改一下就好了,但也会引起其他的问题,如mysql程序连不上了,再加一点:
[mysql]
socket=/tmp/mysql.sock
或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连:
On my RedHat-Box the socket of mysql is /var/lib/mysql/mysql.sock. In your php.ini you will find a line
mysql.default_socket = /tmp/mysql.sock
change it to
mysql.default_socket = /var/lib/mysql/mysql.sock
Then restart apache and it will work.
---
如果做了软链接依旧连接不上,提示PHP连接mysql找不到'/tmp/mysql.sock,请参阅Mysql绑定端口引发的:ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1':
http://jackxiang.com/post/4305/
如下命令编译php后,注意其中有一行是涉及到PDO和MysqlLi的--with-pdo-mysql=/usr/local/webserver/mysql
编译PHP:
wget http://cn.php.net/distributions/php-5.3.6.tar.gz
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl
老外这样说的:configure --with-pdo-mysql --with-mysql-sock=/usr/local/webserver/mysql/data/mysql.sock... This value can either be set at compile time if a domain socket is found at configure.
在:--socket=/data0/data/mysql.sock ,这时你一是可以建立软链接
这儿是可以重新编译一次PDO来实现,二是能通过软链接来实现,重新编译PDO如下:
PDO_MYSQL:
http://pecl.php.net/package/PDO_MYSQL
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql
make
make install
cd ../
要么你直接在编译PHP源代码时编译进去,这儿单独编译时可能会找不到mysql.h,造成上面一一致的原因是我修改了原来Mysql默认的配置:mysql.sock的Path,同时修改了PHP里的Mysql常规Path,而这个PDO的PAth没有在PHP.ini里体现出来,没法修改,只有建立软链接或者重新编译才行。这就是根本原因。
(1)直接建立软链接指向其位置:ln -s /data0/data/mysql.sock /usr/local/webserver/mysql/data/mysql.sock 立竿见影。
(2)重新编译PDO【注意把:mysql.sock设置一下位置,让PDO知道不是以前的那个位Path了】
(3)这儿发现第三种方法,修改好编译好的二进制so文件:
vi /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/pdo_mysql.so
找到那个写死了的mysql.sock的配置处,把路径给修改下,再修改回去,呵呵,如下:
@^@^@/root/jackxiang.com/PDO_MYSQL-1.0.2/mysql_driver.c^@^@/usr/local/webserver/mysql/data/mysql.sock^@^@
修改为这样:
@/root/jackxiang.com/PDO_MYSQL-1.0.2/mysql_driver.c^@^@/data0/data/mysql.sock^@^@/root/jackxiang.com
强制写入,这时,我用的是Nginx下Php的FastCGI,得重启下PHPFastCGI,而要是Apache得重启下Apache即可。
这儿的修改可能有些问题:
root@116.255.139.240:/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626# sh /root/runphp.sh
Starting php-fpm /etc/init.d/phpfpm: line 53: 12947 Segmentation fault $php_fpm_BIN $php_opts
failed
但是说明一个问题:这个配置/usr/local/webserver/mysql/data/mysql.sock确实是写死在这个:pdo_mysql.so 文件里的!!!
php -i|grep mysql.sock得到如下两个设置的地方,
mysql.default_socket => /data0/data/mysql.sock => /data0/data/mysql.sock //常规的Mysql的句柄,和下面不一样导致,pdo报错。
MYSQLI_SOCKET => /usr/local/webserver/mysql/data/mysql.sock //PDO的Mysql句柄
为何这上面两个不一样呢?请查看: php连接到MySQL数据库服务器时三种主要的API:mysql,mysqli,pdo区别及联系
PHP用PDO连接Mysql时出现问题,PHP代码如下:
<?php
$dsn = "mysql:host=localhost;dbname=360syn_mysql";
$db = new PDO($dsn, 'root', '');
root@116.255.139.240:/data0/htdocs/happycun.com# php pdo.php
PHP PDOException: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/usr/local/webserver/mysql/data/mysql.sock' (2) in /data0/htdocs/happycun.com/pdo.php on line 3
也就是这个设置不对:MYSQLI_SOCKET => /usr/local/webserver/mysql/data/mysql.sock
查看Mysql的mysql.sock是在哪儿?如下命令查看:
ps aux|grep mysql
/usr/local/webserver/mysql/bin/mysqld --basedir=/usr/local/webserver/mysql --datadir=/data0/data --plugin-dir=/usr/local/webserver/mysql/lib/plugin --user=mysql --log-error=/data0/data/error_log/log-error.log --pid-file=/data0/data/localhost.localdomain.pid --socket=/data0/data/mysql.sock --port=3306
是谁不小心把/tmp/mysql.sock删除了,最后建立软连接才好了!
原因:
其本质是在编译Mysql的时候可能此时mysql.sock是在/tmp/mysql.sock,而可能在实际配置Mysql的时候,vi /etc/my.cnf 其定义到了:/usr/local/services/mysql-5.0.2*/var/mysql.sock
---------------------
来源网上:
摘要:解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql .sock'连到服务器,而php标准配置正是用过'/tmp/mysql .sock',但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东: [mysql d] socket=/var/lib/mysql .sock 改一下就好了,但也会引起其他的问题,如mysql 程序连不上了,再加一点: [mysql ] socket=/tmp/mysql .sock 或者还可以通过修改php.ini中的配置来使php用其他的mysql .sock来连,这个大家自己去找找 或者用这样的方法: ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock 成功了,就是这样ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock OK!
[mysqld]
socket=/var/lib/mysql.sock
改一下就好了,但也会引起其他的问题,如mysql程序连不上了,再加一点:
[mysql]
socket=/tmp/mysql.sock
或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连:
On my RedHat-Box the socket of mysql is /var/lib/mysql/mysql.sock. In your php.ini you will find a line
mysql.default_socket = /tmp/mysql.sock
change it to
mysql.default_socket = /var/lib/mysql/mysql.sock
Then restart apache and it will work.
---
如果做了软链接依旧连接不上,提示PHP连接mysql找不到'/tmp/mysql.sock,请参阅Mysql绑定端口引发的:ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1':
http://jackxiang.com/post/4305/
MYSQL 5.5 中安装BOBLOG,结果安装到最后一步时,出现SQL语句错误。查看错误发现是BOBLOG使用了SQL语句“TYPE=MYISAM”来设定存储引擎,但是在5.5中这个语句已经不在支持了。
解决方法也很简单,找到install/install.php,把其中的TYPE替换为ENGINE即可。
-------
MYSQL 5.5 已经默认是INNODB,还得注意。
解决方法也很简单,找到install/install.php,把其中的TYPE替换为ENGINE即可。
-------
MYSQL 5.5 已经默认是INNODB,还得注意。
通过 lsb_release -a命令可以看出我的linux的发行版是CentOS release 5.6 (Final) 默认是没有安装无线网卡驱动的,但是需要使用无线网,没办法,那要自己安装驱动了!
我的笔记本是MSI U90/100 上网本,到官网查看了相关的信息,只显示了802.11b/g没有具体的商家信息,然后我通过lspci -v 查看到了我的网卡是Network controller: RaLink RT2860
到RaLink官网,很遗憾网站打不开,只能通过google搜索,找到了一个可以下载的,Ralink_RT3562_Linux_STA_2.3.0.0.tar.bz2(支持RT2860)[下载地址:http://down9.zol.com.cn/wuxianlan/Ralink_RT3562_Linux_STA_2.3.0.0.tar.bz2?key=216802e3cb50f87f86cd04b5bf5de5cf ]
通过多次尝试,还需要网卡的固件,最新的版本是rt2860-firmware-11,必须要安装,否则即使安装的驱动,也会报错,[下载地址:http://elrepo.org/linux/elrepo/el5/i386/RPMS/rt2860-firmware-11-1.elrepo.noarch.rpm]
阅读全文
我的笔记本是MSI U90/100 上网本,到官网查看了相关的信息,只显示了802.11b/g没有具体的商家信息,然后我通过lspci -v 查看到了我的网卡是Network controller: RaLink RT2860
到RaLink官网,很遗憾网站打不开,只能通过google搜索,找到了一个可以下载的,Ralink_RT3562_Linux_STA_2.3.0.0.tar.bz2(支持RT2860)[下载地址:http://down9.zol.com.cn/wuxianlan/Ralink_RT3562_Linux_STA_2.3.0.0.tar.bz2?key=216802e3cb50f87f86cd04b5bf5de5cf ]
通过多次尝试,还需要网卡的固件,最新的版本是rt2860-firmware-11,必须要安装,否则即使安装的驱动,也会报错,[下载地址:http://elrepo.org/linux/elrepo/el5/i386/RPMS/rt2860-firmware-11-1.elrepo.noarch.rpm]
阅读全文
说到Git,作为Linus的另一大著名作品,目前已经成熟,与CVS和SVN相比优势明显,一回特别喜欢其分布式及灵活的分支合并功能,另外源码下载和上传的速度体验也相当凑合。本文将分享下如何在centos5.6(CSSer.com的VPS采用的发行版)配置Git服务器。
目标
配置Git服务器有很多种方式,一回的目标是配置能满足多人协作、可以细分权限的Git服务器,另外还要有较好的安全性,在迎合这种目标的各种组合中,最终选择了gitolite。
基础知识
你需要具有简单的linux基础知识,如ssh、用户及用户组、权限、密钥、git操作等。整个过程相当简单,按照下面的步骤操作,如无意外,就能成功!
阅读全文
目标
配置Git服务器有很多种方式,一回的目标是配置能满足多人协作、可以细分权限的Git服务器,另外还要有较好的安全性,在迎合这种目标的各种组合中,最终选择了gitolite。
基础知识
你需要具有简单的linux基础知识,如ssh、用户及用户组、权限、密钥、git操作等。整个过程相当简单,按照下面的步骤操作,如无意外,就能成功!
阅读全文
用Php分析并绘制音频文件的波形图,网上还是很少见到。其实只要根据wav文件的规范,用Php的fseek,fopen,fopen,pack/unpack等函数,以及强大的gd图形库,这些都是很容易的。很多人可能对pack/unpack函数不熟悉;这其实是Php借用perl的,他们提供了使用脚本语言访问复杂二进制数据结构的方法。我的这段简化的程序只能处理PCM格式的RIFF音频文件(这也是最常见的wav格式) ,不限声道,但是比特率(BitsPerSample)最好是16。
这里有wave file format 和 MicroSoft wave soundfile format可以参考。这里是一个实际的例子(下载放大看)
阅读全文
这里有wave file format 和 MicroSoft wave soundfile format可以参考。这里是一个实际的例子(下载放大看)
阅读全文
Linux下方便的socket读写查看器(socktop)
晚上找个工具来调查下unix域套接字的发送和接受情况,比如说A程序是否送出,B程序是否接收到,他找了tcpdump ,wireshark什么的,貌似都不支持。
这时候还是伟大的systemtap来救助了。 因为所有的socket通讯都是通过socket接口来的,任何family的通讯包括unix域套接都要走的,所以只要截获了socket 读写的几个syscall 就搞定了.
systemtap发行版本提供了个工具socktop, 位于 /usr/share/doc/systemtap/examples/network/socktop, 是个非常方便的工具, 干这个事情最合适了。
阅读全文
晚上找个工具来调查下unix域套接字的发送和接受情况,比如说A程序是否送出,B程序是否接收到,他找了tcpdump ,wireshark什么的,貌似都不支持。
这时候还是伟大的systemtap来救助了。 因为所有的socket通讯都是通过socket接口来的,任何family的通讯包括unix域套接都要走的,所以只要截获了socket 读写的几个syscall 就搞定了.
systemtap发行版本提供了个工具socktop, 位于 /usr/share/doc/systemtap/examples/network/socktop, 是个非常方便的工具, 干这个事情最合适了。
阅读全文
设置网站ico图标的两种方法
方法一:
直接在站点根目录下放入名为:favicon.ico 的图标文件(必须要为 ICO 文件,BMP 及其他格式的图片文件不行)。还有将 favicon.ico 中的 favicon 命名为你网站域名的名称也可以,例如:你网站的域名为:xll.com,你可以将该 ICO 文件命名为:xll.ico 。其IE地址栏图标绝对地址就可以为:http://www.jackxiang.com/favicon.ico和http://www.jackxiang.com/jackxiang.ico
方法二:
在网页的 <head>...</head> 区加入代码:<link rel="Shortcut Icon" href="favicon.ico" />,如果用这一种方法的话,其中 ICO 文件的文件名就不一定要用 favicon.ico了,可以用任意的名字来命名,如:aoul.ico,你甚至可以使每一个目录下的每一个网页文件的IE地址栏图标都不同,但前提是必须做到图标文件的链接地址要正确。还有,在 <head>...</head> 区加入代码:<link rel="Bookmark" href="favicon.ico" />,就可以在收藏夹中显示你网页链接的自定义图标。
我使用:<link rel="shortcut icon" href="./jackxiang.ico" type="image/x-icon" /> 就Ok了。
方法一:
直接在站点根目录下放入名为:favicon.ico 的图标文件(必须要为 ICO 文件,BMP 及其他格式的图片文件不行)。还有将 favicon.ico 中的 favicon 命名为你网站域名的名称也可以,例如:你网站的域名为:xll.com,你可以将该 ICO 文件命名为:xll.ico 。其IE地址栏图标绝对地址就可以为:http://www.jackxiang.com/favicon.ico和http://www.jackxiang.com/jackxiang.ico
方法二:
在网页的 <head>...</head> 区加入代码:<link rel="Shortcut Icon" href="favicon.ico" />,如果用这一种方法的话,其中 ICO 文件的文件名就不一定要用 favicon.ico了,可以用任意的名字来命名,如:aoul.ico,你甚至可以使每一个目录下的每一个网页文件的IE地址栏图标都不同,但前提是必须做到图标文件的链接地址要正确。还有,在 <head>...</head> 区加入代码:<link rel="Bookmark" href="favicon.ico" />,就可以在收藏夹中显示你网页链接的自定义图标。
我使用:<link rel="shortcut icon" href="./jackxiang.ico" type="image/x-icon" /> 就Ok了。
用C/C++开发其中最令人头疼的一个问题就是内存管理,有时候为了查找一个内存泄漏或者一个内存访问越界,需要要花上好几天时间,如果有一款工具能够帮助我们做这件事情就好了,valgrind正好就是这样的一款工具。
Valgrind是一款基于模拟linux下的程序调试器和剖析器的软件套件,可以运行于x86, amd64和ppc32架构上。valgrind包含一个核心,它提供一个虚拟的CPU运行程序,还有一系列的工具,它们完成调试,剖析和一些类似的任务。valgrind是高度模块化的,所以开发人员或者用户可以给它添加新的工具而不会损坏己有的结构。
valgrind的官方网址是:http://valgrind.org
你可以在它的网站上下载到最新的valgrind,它是开放源码和免费的。
阅读全文
Valgrind是一款基于模拟linux下的程序调试器和剖析器的软件套件,可以运行于x86, amd64和ppc32架构上。valgrind包含一个核心,它提供一个虚拟的CPU运行程序,还有一系列的工具,它们完成调试,剖析和一些类似的任务。valgrind是高度模块化的,所以开发人员或者用户可以给它添加新的工具而不会损坏己有的结构。
valgrind的官方网址是:http://valgrind.org
你可以在它的网站上下载到最新的valgrind,它是开放源码和免费的。
阅读全文
安装了两个vim的大型插件,分别是csupport和perl-support,每一个都是几百k。但是这两个插件让我的vim启动速度明显变慢,大概需要两秒。而不使用这两个插件,几乎是瞬间启动。
经过观察,不管用vim打开什么文件,这两个插件都会启动。去vim的安装目录vimfiles/plugin一看,果然,有两个超过100k的.vim文件,分别是c.vim和perl-support.vim。应就是他们两个拖慢了vim的启动速度。也正是因为他们两个被放在了plugin文件夹,所以才会不管打开什么文件,这两个插件都会启动。
安装了两个vim的大型插件,分别是csupport和perl-support,每一个都是几百k。但是这两个插件让我的vim启动速度明显变慢,大概需要两秒。而不使用这两个插件,几乎是瞬间启动。
经过观察,不管用vim打开什么文件,这两个插件都会启动。去vim的安装目录vimfiles/plugin一看,果然,有两个超过100k的.vim文件,分别是c.vim和perl-support.vim。应就是他们两个拖慢了vim的启动速度。也正是因为他们两个被放在了plugin文件夹,所以才会不管打开什么文件,这两个插件都会启动。
所以,将c.vim改名为c_c.vim移动到vimfiles/ftplugin。将perl-support.vim改名perl_support.vim为移动到vimfiles/ftplugin。现在,这两个插件可以“伺机”启动啦。
自己试了下移动,果然Vim快多了好多,移动情况如下:
解释vimfiles:
vimfiles相当于用户自己的一个配置文件夹,而vim73相当于是安装目录。
vim73中的plugin何vimfiles中的plugin作用是一样的,插件放到这2个文件夹都会起作用。
建议把后安装的插件都放到vimfiles中,备份起来比较容易。
Unix 下的 $HOME/.vim/after 或 Windows 下的 %HOME%/vimfiles/after: 用于对已有设置进行一些小的修正和覆写。
Unix 下的 $HOME/.vim 或 Windows 下的 %HOME%/vimfiles: 用户自定义脚本及插件。 该目录下的脚本会在系统脚本加载前执行, 用于扩展与替代系统脚本原有功能。
所以,将c.vim改名为c_c.vim移动到vimfiles/ftplugin。将perl-support.vim改名perl_support.vim为移动到vimfiles/ftplugin。现在,这两个插件可以“伺机”启动啦。
插件实在是太多了:
code_complete.vim
cppcomplete.vim
exec_menuitem.vim
fs_menu.vim
NERD_tree.vim
supertab.vim
taglist.vim
没有试过,作为参考。
经过观察,不管用vim打开什么文件,这两个插件都会启动。去vim的安装目录vimfiles/plugin一看,果然,有两个超过100k的.vim文件,分别是c.vim和perl-support.vim。应就是他们两个拖慢了vim的启动速度。也正是因为他们两个被放在了plugin文件夹,所以才会不管打开什么文件,这两个插件都会启动。
安装了两个vim的大型插件,分别是csupport和perl-support,每一个都是几百k。但是这两个插件让我的vim启动速度明显变慢,大概需要两秒。而不使用这两个插件,几乎是瞬间启动。
经过观察,不管用vim打开什么文件,这两个插件都会启动。去vim的安装目录vimfiles/plugin一看,果然,有两个超过100k的.vim文件,分别是c.vim和perl-support.vim。应就是他们两个拖慢了vim的启动速度。也正是因为他们两个被放在了plugin文件夹,所以才会不管打开什么文件,这两个插件都会启动。
所以,将c.vim改名为c_c.vim移动到vimfiles/ftplugin。将perl-support.vim改名perl_support.vim为移动到vimfiles/ftplugin。现在,这两个插件可以“伺机”启动啦。
自己试了下移动,果然Vim快多了好多,移动情况如下:
解释vimfiles:
vimfiles相当于用户自己的一个配置文件夹,而vim73相当于是安装目录。
vim73中的plugin何vimfiles中的plugin作用是一样的,插件放到这2个文件夹都会起作用。
建议把后安装的插件都放到vimfiles中,备份起来比较容易。
Unix 下的 $HOME/.vim/after 或 Windows 下的 %HOME%/vimfiles/after: 用于对已有设置进行一些小的修正和覆写。
Unix 下的 $HOME/.vim 或 Windows 下的 %HOME%/vimfiles: 用户自定义脚本及插件。 该目录下的脚本会在系统脚本加载前执行, 用于扩展与替代系统脚本原有功能。
所以,将c.vim改名为c_c.vim移动到vimfiles/ftplugin。将perl-support.vim改名perl_support.vim为移动到vimfiles/ftplugin。现在,这两个插件可以“伺机”启动啦。
插件实在是太多了:
code_complete.vim
cppcomplete.vim
exec_menuitem.vim
fs_menu.vim
NERD_tree.vim
supertab.vim
taglist.vim
没有试过,作为参考。
蓝金伟 說:
民大的学生你还有联系的么
向东阳 說:
哪个学生?
蓝金伟 說:
下几届还有认识的没, 我想看看能不能找几个实习生
向东阳 說:
计算机的?
专业的。
蓝金伟 說:
不一定
理科的
向东阳 說:
喔,我问问哈。
搞什么语言的。
蓝金伟 說:
恩
php的
向东阳 說:
在北京 哪儿?
蓝金伟 說:
北京
向东阳 說:
招几人?
不会PHP也没有关系吧?哈哈。
蓝金伟 說:
没关系
2,3人
向东阳 說:
嗯,我给问问。。。
蓝金伟 說:
恩
向东阳 說:
现在在哪儿上班了,还要招人。
蓝金伟 說:
卓望信息
向东阳 說:
实习生有工资吧?多少钱。
蓝金伟 說:
看能力
请把简历发我邮箱:xdy108@126.com
民大的学生你还有联系的么
向东阳 說:
哪个学生?
蓝金伟 說:
下几届还有认识的没, 我想看看能不能找几个实习生
向东阳 說:
计算机的?
专业的。
蓝金伟 說:
不一定
理科的
向东阳 說:
喔,我问问哈。
搞什么语言的。
蓝金伟 說:
恩
php的
向东阳 說:
在北京 哪儿?
蓝金伟 說:
北京
向东阳 說:
招几人?
不会PHP也没有关系吧?哈哈。
蓝金伟 說:
没关系
2,3人
向东阳 說:
嗯,我给问问。。。
蓝金伟 說:
恩
向东阳 說:
现在在哪儿上班了,还要招人。
蓝金伟 說:
卓望信息
向东阳 說:
实习生有工资吧?多少钱。
蓝金伟 說:
看能力
请把简历发我邮箱:xdy108@126.com
就一个晚上,博客垃圾留言就达到3286条,太恐怖了。还好,昨天在关电脑前设置了所有发言都需审核。Bo-blog官方论坛说,Bo-blog主程序目前有防止大量垃圾发言的有效补丁,我也安装了,但是依旧有上千条,我都不知道Bo-Blog新发的补丁有验证码和自动识别还是有这么多的垃圾留言,难道真有人自动填写验证码的一个产业链的形成,我看是无法避免喽,所以,面对如此大规模的轰炸,我们该怎么办呢?
不懂博客的我,不得不采取宁可错杀1万,不可放过1个的安全策略——
进入后台 -> 数据维护 -> MySQL -> 复制下列语句 -> 确定(以下语句,请对号入座、谨慎操作!)
批量删除未审核评论
批量删除未审核留言
delete from [db]messages where reproperty=2
批量删除已审核评论(危险,谨慎操作)
delete from [db]replies where reproperty=0
批量删除未审核引用
delete from [db]replies where reproperty=5
批量删除已审核引用
delete from [db]replies where reproperty=4
SQL操作:
Delete it:
不懂博客的我,不得不采取宁可错杀1万,不可放过1个的安全策略——
进入后台 -> 数据维护 -> MySQL -> 复制下列语句 -> 确定(以下语句,请对号入座、谨慎操作!)
批量删除未审核评论
批量删除未审核留言
delete from [db]messages where reproperty=2
批量删除已审核评论(危险,谨慎操作)
delete from [db]replies where reproperty=0
批量删除未审核引用
delete from [db]replies where reproperty=5
批量删除已审核引用
delete from [db]replies where reproperty=4
SQL操作:
Delete it:
尽管QQ有简单的截图功能,但是在家不是一开机就上QQ,网页如查询邮寄的包裹什么的,还得截图方便,IE有一款截图插件,值得推荐,名字叫:LightShot for Internet Explorer
下载地址:
http://www.525down.com/soft_info/26506.html
下载地址:
http://www.525down.com/soft_info/26506.html
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
修改my.cnf
1. 注释掉 # skip-networking
2. 给MYSQL绑定IP bind-address = 192.168.25.5 # server IP address
重启mysql.
我的处理:
1.去掉:bind-address = 192.168.25.5
2. 修改 PHPMyadmin:
/phpmyadmin # vi ./libraries/auth/cookie.auth.lib.php
$default_server = '127.0.0.1:3306'; 为: $default_server = 'localhost:3306';
为何要修改的原因是Shell下执行的情况出现了:
/usr/local/mysql/bin # mysql -h127.0.0.1 -uroot -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111),也正是PHPMYADMIN报错的内容。
典型的反其道而行之,哈哈。
本质是:机器的IP,Localhost,127.0.0.1,在/etc/hosts的指向,以及Mysql是否绑定端口。
修改my.cnf
1. 注释掉 # skip-networking
2. 给MYSQL绑定IP bind-address = 192.168.25.5 # server IP address
重启mysql.
我的处理:
1.去掉:bind-address = 192.168.25.5
2. 修改 PHPMyadmin:
/phpmyadmin # vi ./libraries/auth/cookie.auth.lib.php
$default_server = '127.0.0.1:3306'; 为: $default_server = 'localhost:3306';
为何要修改的原因是Shell下执行的情况出现了:
/usr/local/mysql/bin # mysql -h127.0.0.1 -uroot -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111),也正是PHPMYADMIN报错的内容。
典型的反其道而行之,哈哈。
本质是:机器的IP,Localhost,127.0.0.1,在/etc/hosts的指向,以及Mysql是否绑定端口。
1 用户命令, 可由任何人启动的。
2 系统调用, 即由内核提供的函数。
3 例程, 即库函数。
4 设备, 即/dev目录下的特殊文件。
5 文件格式描述, 例如/etc/passwd。
6 游戏, 不用解释啦!
7 杂项, 例如宏命令包、惯例等。
8 系统管理员工具, 只能由root启动。
9 其他(Linux特定的), 用来存放内核例行程序的文档。
n 新文档, 可能要移到更适合的领域。
o 老文档, 可能会在一段期限内保留。
l 本地文档, 与本特定系统有关的。
2 系统调用, 即由内核提供的函数。
3 例程, 即库函数。
4 设备, 即/dev目录下的特殊文件。
5 文件格式描述, 例如/etc/passwd。
6 游戏, 不用解释啦!
7 杂项, 例如宏命令包、惯例等。
8 系统管理员工具, 只能由root启动。
9 其他(Linux特定的), 用来存放内核例行程序的文档。
n 新文档, 可能要移到更适合的领域。
o 老文档, 可能会在一段期限内保留。
l 本地文档, 与本特定系统有关的。
论语言:语言的决定权往往掌握在少数人的手里,平台制定者的手里,业界大佬的手里。而我们一帮民众就只能呼啦啦跟风,墙头草随风倒。需求到了哪里,语言就跟随到哪里。
论开放:Microsoft自己将一切包装的太好了,所以带来一些便利,但同时也给我带来了迷惑,当然我相信这份迷惑不是我独有的,每个学习这些东西的人都会有迷惑。还有一点,Microsoft就是大包大揽,什么都自己弄,虽说人多,但还是不利于技术的发展,而开源技术往往开发者众多,当然存在一些不稳定的因素,但还是广大人民群众的力量大。Windows最大的成功之处就是上面应用众多,这些应用谁开发的,99.9999%都不是Microsoft开发的,一个人的能力是有限的。所以Apple出了App Store收买开发者,这样人就多了,Google也出了Web Store。然而桌面应用在我国基本没钱赚,只能通过增值服务挣钱,想挣代码的钱那时绝对没有可能的,除非我国民对版权意识加强,然而我国倡导社会主义,最终要到共产主义的,就是大家有什么好东西就要共享,版权神马的都是浮云。飞信还因为.NET容易被反编译,又用C++开发了,大家觉得还是二进制安全。还有就是对于一些非主流的技术Microsoft团队维护能力有限导致bug丛生,又不开源用起来费劲,各种hack,别无它法。
最后,世界仍旧很美好,学习第二语言和其它框架具有重要性,有你好看。
阅读全文
论开放:Microsoft自己将一切包装的太好了,所以带来一些便利,但同时也给我带来了迷惑,当然我相信这份迷惑不是我独有的,每个学习这些东西的人都会有迷惑。还有一点,Microsoft就是大包大揽,什么都自己弄,虽说人多,但还是不利于技术的发展,而开源技术往往开发者众多,当然存在一些不稳定的因素,但还是广大人民群众的力量大。Windows最大的成功之处就是上面应用众多,这些应用谁开发的,99.9999%都不是Microsoft开发的,一个人的能力是有限的。所以Apple出了App Store收买开发者,这样人就多了,Google也出了Web Store。然而桌面应用在我国基本没钱赚,只能通过增值服务挣钱,想挣代码的钱那时绝对没有可能的,除非我国民对版权意识加强,然而我国倡导社会主义,最终要到共产主义的,就是大家有什么好东西就要共享,版权神马的都是浮云。飞信还因为.NET容易被反编译,又用C++开发了,大家觉得还是二进制安全。还有就是对于一些非主流的技术Microsoft团队维护能力有限导致bug丛生,又不开源用起来费劲,各种hack,别无它法。
最后,世界仍旧很美好,学习第二语言和其它框架具有重要性,有你好看。
阅读全文
安装rinetd
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -zxvf rinetd.tar.gz
cd rinetd
make;make install
配置文件
vi /etc/rinetd.conf
最简单的配置方式
192.168.1.100 80 192.168.1.200 80
这样就完成了
然后你所有对于 192.168.1.100 80端口的访问将转发到 192.168.1.200 的80端口上
但是有个前提就是 192.168.1.100这台机子上的没有启动任何占用80端口的进程,如apache等;否则将转发不成功。
PS:他只能转发TCP的端口,不能转发UDP以及其他协议的端口;
rinetd的详细配置教程
http://hi.baidu.com/opbsder/blog/item/31d6f545a1c2f9318694734a.html
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -zxvf rinetd.tar.gz
cd rinetd
make;make install
配置文件
vi /etc/rinetd.conf
最简单的配置方式
192.168.1.100 80 192.168.1.200 80
这样就完成了
然后你所有对于 192.168.1.100 80端口的访问将转发到 192.168.1.200 的80端口上
但是有个前提就是 192.168.1.100这台机子上的没有启动任何占用80端口的进程,如apache等;否则将转发不成功。
PS:他只能转发TCP的端口,不能转发UDP以及其他协议的端口;
rinetd的详细配置教程
http://hi.baidu.com/opbsder/blog/item/31d6f545a1c2f9318694734a.html
这样来查找:
示例Demo:
root@116.255.139.240:/data1/logs# find . -name "*" |du -sh *|awk '{if(match($1, "G")>0) print $0 }'
5.0G access.log
用块模式选中多行,然后在按大些的I,写入注释如://,后按ESC,这些选中的多行也就都给注释了。
esc
0 跳到行首
ctrl+v 可视块模式
jjj 下移3行
I 进入插入模式
//
esc
整个做缩进:
=G
阅读全文
esc
0 跳到行首
ctrl+v 可视块模式
jjj 下移3行
I 进入插入模式
//
esc
整个做缩进:
=G
阅读全文
参考:http://jackxiang.com/post/3927/?php $ch>





