Tag Archives: php
nginx防hashdos模块使用帮助
经过上周一周朋友们帮忙测试和bug fix,nginx_http_hashdos_module已经达到可以线上使用的水平,下面是使用记录。 下载 #wget --no-check-certificate https://github.com/54chen/nginx-http-hashdos-module/zipball/master #mv master nginx_hashdos.zip #unzip nginx_hashdos.zip 编译安装 #tar zxvf nginx-1.0.xx.tar.gz #cd nginx-1.0.xx/ #./configure --prefix=/opt/soft/nginx --with-pcre --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=../54chen-nginx-http-hashdos-module-f84d909 #make && make install 配置注意事项 在http段,增加如下: hashdos on; body_max_count 1000; 在各自的location段,要按照业务情况来加: client_body_buffer_size 2m; client_max_body_size 2m; …
nginx防hashdos模块释出
2012.1.7 更新 编译的时候推荐使用nginx-1.0以上版本,不要加--with-debug参数编译,(感谢agentzh指出)。 hashdos这个事,严格意义上不是各种语言的错了(不过perl的确处理得很好),但是用nginx来擦屁股要干净些。 借鉴tomcat的作法,实现了下面这个nginx-http-hashdos-module,通过设置hashdos(默认on)的开关和body_max_count(默认值1000),对nginx后面的服务进行安全防护,相比对php或者java进行patch,这或许是最好的办法了。 nginx-http-hashdos-module项目地址 https://github.com/54chen/nginx-http-hashdos-module 如何使用 1.下载zip后保存到一个目录,如~/nginx-http-hashdos-module。 2.cd nginx-1.0.9/ 3.重新编译和安装nginx ./configure --prefix=/opt/soft/nginx --with-pcre --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=/path_to/nginx-http-hashdos-module/ && make && make install 4.配置打开: hashdos on; body_max_count
quercus记录:php使用连接池访问数据库
上周记录了如何用quercus建立混合型项目。 http://www.54chen.com/php-tech/quercus-notes-php-java-mixed-projects.html 这里来说说与数据库的访问,使用jndi得到连接池的好处。 JNDI (Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。 正题 在quercus中可以随意使用mysql_connect与mysql_pconnect两个方法来连接数据库。 当在web.xml定义得有database相关的消息时,mysql_connect与mysql_pconnect都会自动忽略里面的参数设置,直接使用web.xml的定义。 添加jndi设置: vim WEB-INF/web.xml <?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://caucho.com/ns/resin"> <description>truth application</description>
quercus记录:php和java的混合型项目建立手记
创业公司参与项目的人口众多、背景不一,目前市场上的主流方向为php与java,很多时候java工程师恨铁不成钢,php工程师也无可奈何。于是便有了此文,讲述如何使用quercus创建php java混合型项目。 quercus是什么? quercus是Caucho公司针对php语言的java实现,100%完成了php5的解析。是resin内建支持的功能。同时,因为使用了resin,使得php可以很容易得到连接池、分布式session、负载均衡等功能。使用resin的php项目可以更加安全,不存在很多fastcgi的问题。 性能如何? 官方:用mediawiki与drupal来做实验,要比mod_php快4倍。 有一个编译选项,在resin专业版里支持,可以把php转成java class,得到更高性能。 新建一个java项目混合php项目 web.xml是关键,里面声明了*.php文件的访问都以com.caucho.quercus.servlet.QuercusServlet来执行。 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun
持续构建工具hudson使用手记
hudson是一个强大的持续性构建服务器。(现在开发者们分了一个分支,改叫Jenkins。)我(54chen)在使用过程中的手记如下: 下载 地址:http://hudson-ci.org/ wget http://java.net/projects/hudson/downloads/download/war/hudson-2.0.1.war 速度不咋的,60k/s. 先决条件 系统:centos 5.5 resin4下不work,换成了tomcat。 cp /opt/soft/hudson/hudson-2.0.1.war /opt/soft/apache-tomcat-7.0.16/webapps/ 遇到的问题 1)tomcat使用utf8环境。 vim tomcat/conf/server.xml 找到8080,加入一行 URIEncoding="UTF-8"。 2)maven不工作 hudson启动后,系统管理里面,设置maven的地址:MAVEN_HOME指到maven的主目录,不是bin目录。 3)svn不工作 报re_version错误,在你的svn地址的最后面加上@HEAD 4)hudson一切正常后,有svn bug FATAL: tried to access method hudson.scm.ChangeLogSet$Entry.setParent(Lhudson/scm/ChangeLogSet;)V from class hudson.scm.SubversionChangeLogSet 报上面的错误,我(54chen)在http://i
java log4j 日志分析工具分享
java线上项目往往有许多的exception出现了没来得及去看,通过下面的工具,可以在每天早晨上班的时候通过邮件发出头一天出现的异常次数,是提高生产力和提早发现问题的好办法。 配置: 1.解压到指定目录 /data/analyze 2.email发送配置 vim mail.pl 5行,6行,7行,14行 修改为自己的配置 3.server配置 ssh-keygen打通ssh cd server 项目名_server写服务器ip,多个机器一行一个 4.其他 可能会有不相同的log目录地址,看着修改一下shell就行。 *修改自烧饼的脚本,点击下载: http://ishare.iask.sina.com.cn/f/16530420.html
java实时日志大文件分析
日志分析时经常会遇到这个问题:一个正在增长中的大文件,要分析新增的每一行的固定内容进行统计并展示啥的。用java的RandomAccessFile盯住文件的末尾,是一个不错的选择,下面的实现,是一个高效的java tail工具,实现类似linux的tail工具的功能。用来做大日志文件的实时分析,是一个不错的选择。 public class LogFileTailer extends Thread { private Logger logger = LoggerFactory.getLogger(LogFileTailer.class); /** * How frequently to check for file changes; defaults to 5 seconds */ private long sampleInterval = 5000; /** * The log file to tail */ …
改写java TreeMap制造方便查询的ip内存库
国库流行的ip库记录数大约在6万条左右,数据格式大约都是如下: start,end,country... 要查询的时候都是放到mysql里去,然后select * from ip where start>=xx and end end <=xx来得到ip信息,我(54chen)在搞一个实时监控时,因为并发量非常大,全部查询IP库,需要好几万每秒的查询,特改了java的TreeMap的get方法,将所有数据放到内存里来操作,put的时候还是保持TreeMap的红黑树实现,以start作为key,而在get的时候有一个 compare的过程,在发现compare是大于0的时候进行如下修改: else if (cmp > 0) { int start = ((Data) p.value).getStart(); int end = ((Data) p.value).getEnd(); int intKey = Integer.parseInt(k.toString()); if (intKey >= start && intKey <= …
maven项目代码质量检测工具sonar使用手记
Sonar是一个开源代码质量控制工具。把它加到现在的持续集成工具中就能够让你的java开发项目集中处于质量控制之下。下面是安装和使用记录 : 修改.m2/settings.xml 增加下边的内容到profiles段落中: <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- EXAMPLE FOR MYSQL --> <sonar.jdbc.url> jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 </sonar.jdbc.url> <sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName> <sonar.jdbc.username>sonar</sonar.jdbc.username> <sonar.jdbc.password>sonar</sonar.jdbc.password> <!-- SERVER ON A REMOTE HOST --> <sonar.host.url
关于maven,做错的十件事
maven管理的java项目越来越多,令人遗憾的是在使用maven的时候,多多少少都会遇到这样那样的问题,于是会有各种各样的解决办法,下面是一个列表,列出了使用maven的误区和解决办法。 1.频繁在所有项目使用mvn install并且随时在更新 这是我见过的最常见的问题,解决了这个问题有许多的好处。在maven的文档中找不到一句对这种情况的描述,不过我坚信一句话:每个artifact在maven仓库中都有一个家。 在你的公司里,应该有一个仓库管理工具。每一个你开发的模块都应该发布到这个仓库上去。你可能会问,应该什么时候发布?答案是,每次在你的构建服务器构建之后,都需要发到仓库。我们通常都使用Hudson来做这件事情,另外还有Continuum和TeamCity也还不错。 现在,当你所有的项目都在仓库里有的时候,你的项目就不再需要不断地mvn install了。如果你修改一个模块,你只需要重建这个模块,其余依赖的模块会由maven自动从仓库中下载。 2.你和你的团队成员依靠复制.m2文件夹来解决项目里的依赖找不到的问题 这看起来很疯狂,不过这件事情经常发生。解决的办法,设置一名仓库管理员。一旦管理好了仓库,就不会再出现大家找u盘复制.m2文件夹的事情了。因为可以加速,你不应该把本地的仓库整个地删除掉,毕竟在本地读取仓库是最快的。 3. 你为了解决依赖找不到一个老版本构件的问题,把最新的pom文件修改了版本弄到了老文件里后安装 考虑到这种情况,有人把一个模块的版本从1.3-SNAPSHOT修改成了1.4-SNAPSHOT。你马上要去度假,所以呢你就不想再更新和安装1.3的版
SEARCH
Update
- 54chen Twitter memo 2012-02-12
- 人肉解析riak_admin join
- go语言安装手记
- 54chen Twitter memo 2012-02-05
- Riak Core说明
- maven库nexus拖不到jar包小记
- 服务接入层小结
- 54chen Twitter memo 2012-01-15
- nginx防hashdos模块使用帮助
- 54chen Twitter memo 2012-01-08
- nginx防hashdos模块释出
- 54chen Twitter memo 2012-01-01
- 水煮鱼杯2011年度不得不总结的十件事
- 年终攻击hashDos-哈希表多碰撞实现拒绝服务-破解办法
- 54chen Twitter memo 2011-12-25
