Java堂  


Apache+Resin泛域名的设置

归档在: Web&Server — Jet @ 3:25 下午
Tags: ,
原文出处: http://www.javatang.com/archives/2008/03/18/2532264.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

在Apache中如果设置范域名的话使用 ServerAlias ,比如

  1. <VirtualHost *:80>
  2.   ServerName javatang.com
  3.   ServerAlias *.javatang.com
  4.   ...
  5. </VirtualHost>

如果使用Apache+Resin架构的话,需要在Resin中设置同样的泛域名与Apache进行对应。在Resin中设置泛域名使用 host-alias-regexp 标签,对应于上面Apache在Resin中设置如下:

  1. <host id="javatang.com" root-directory=".">
  2.    <host-alias-regexp>^([^/]*).javatang.com</host-alias-regexp>
  3.    ...
  4. </host>

参考资料:
host-alias-regexp
apache、resin泛域名、多域名设置

Apache和Resin产生大容量日志的解决办法

归档在: JavaPlateform, Web&Server — Jet @ 8:15 上午
Tags: ,
原文出处: http://www.javatang.com/archives/2007/06/20/1513177.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

昨天服务器上网站无故无法访问,重启Apache之后过一段时间又无法访问。后来无意间看到Apache的日志文件(access.log)竟然有7G多,赶紧删除之再重启Apache就OK了。但是总是这样也不是办法,如果时间一长忘记清空日志文件的话又会造成Apache死掉,另外之前Resin也产生过这样的问题。后来综合Google后的信息采用了如下的解决方法:

1. Apache日志
减少日志大小有两种方法,一种是修改日志记录级别,可以将默认的warn级别提升为error级别;

  1. LogLevel error

另外一种方法就是将日志文件按照每天创建一个文件的方式产生,这样就不会将所有的信息写入到一个文件。在Linux下可以将 httpd.conf 中 CustomLog logs/access.log common 修改为:

  1. CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/%Y_%m_%d.access.log 86400 480" common

Windows下没有rotatelogs这个工具,但是可以下载一个cronolog的软件,进入官方下载页面下载Win 32 version (ZIP file) 版本,将压缩包中的cronolog.exe解压缩到apache安装目录的bin目录下面,然后可以将CustomLog logs/access.log common 修改为:

  1. CustomLog "|bin/cronolog.exe logs/access%Y%m%d.log" combined

这样可以达到同样的效果。需要说明的是再重启Apache之后原来的cronolog.exe进程不会自动关闭,这个应该是软件的bug。官方最新的更新日期是2002-01-24,而且最新的1.6.2 版本没有windows版本,所以要耐心等待了。

2. Resin日志
前段时间提到过因为Resin日志巨大的问题而导致出错,过了这几天又发现jvm.log文件达到1G的容量了,照这样下去如果忘记清空日志的话又会导致程序出错。无意间在一篇文章中看到这样一句话:

Resin启动时通过bin目录下的wrapper.pl文件进行控制,我们可以修改这个文件来加一些参数……

后来经过测试这样的启动方式是在Linux系统下,Windows下面修改这个文件是没有作用的。记得以前我在 Resin 3.x 经验总结文章中提到在Windows下设置jvm内存的时候可以使用下面的命令:

  1. httpd.exe -Xmn100M -Xms500M -Xmx500M

是不是上面提到的wrapper.pl文件中的httpd参数都可以这样设置呢?后来在Resin官方的新闻组里面找到了这个配置参数:

You can use -jvm-log logfile as an option to httpd.exe

这样的话就可以设置Resin不产生jvm.log日志文件,因为里面的信息在web程序中通过log4j获得了。

  1. httpd -jvm-log NUL

按照以下步骤重新按照Resin的NT服务:

  1. #1 停止Resin NT服务和Apache
  2. httpd -remove
  3. #2 安装Resin NT服务
  4. httpd -jvm-log NUL -install
  5. #3 重新启动Resin和Apache

参考资料:
解决Apache日志文件ACCESS.LOG日益膨胀的一个办法
jvm.log workarounds
resin的优化

Resin 频繁宕掉的原因

归档在: JavaPlateform, Web&Server — Jet @ 2:03 上午
Tags:
原文出处: http://www.javatang.com/archives/2007/05/04/0353161.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

最近一段时间Resin频繁的宕掉,大概运行一天左右网站就无法访问了。但是已经使用了有半年多了一直都很好,后来查看Resin的log目录的时候,在里面赫然发现有个jvm.log文件有1.6G。于是赶紧停止Resin然后删除之!!

一般来说,如果一个软件使用很长时间突然出现问题,首先看日志文件!算是一个经验吧,呵呵

Resin 3.0.x 经验总结

归档在: JavaPlateform, Web&Server — Jet @ 11:01 上午
Tags:
原文出处: http://www.javatang.com/archives/2006/08/21/010658.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

这两天正好项目刚刚完成,所以就好好的研究了下Resin。我用的Resin版本是3.0.19,中间遇到一些常见的问题,但是网上大多数的资料都是1.x或2.x的,在3.x中是不能使用的,所以查到解决的办法不是件容易的事情,现在整理出来与大家分享:

1. 怎样关闭目录浏览方式?
查了些资料,大多数都是说可以 将directory-servlet设置为 “none” 来禁止目录浏览,但是这种方式只是针对于Resin2.x,在3.x中已经不使用directory-servlet了。后来看了下官方的文档资料,原来关闭目录浏览的方法很简单,只需要将resin.conf中

  1. <servlet servlet-name="directory" 
  2.               servlet-class="com.caucho.servlets.DirectoryServlet"/>

修改为

  1. <servlet servlet-name="directory" 
  2.               servlet-class="com.caucho.servlets.DirectoryServlet"> 
  3.           <init enable="false"/> 
  4.       </servlet>

或者直接注释掉这一段代码就可以了。

2. 设置Servlet为默认首页
在web.xml中这样设置

<servlet-mapping>
<servlet-name>MainPageServlet</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>

如果这样的话在Tomcat中可以实现的,但是在Resin中会提示404。后来查了下资料,发现在Resin中默认的首页文件必须真实存在才可以的(”Point is that welcome file MUST exist on the server.”),所以除了上述的设置之外还需要在网站跟目录下面创建一个同名的空文件就可以了。

3. 安装Resin为WinNT服务
使用以下命令安装Resin为NT服务:

  1. httpd.exe -install

卸载服务使用下面的命令:

  1. httpd.exe -remove

这里需要说明的是:如果Apache和Resin组合的话,删除Resin的NT服务之前首先需要停止Apache,否则无法删除。

4. 出现OutOfMemoryException的解决方法
出现OOM异常大多数是因为分配给Resin的内存过小造成的,这个时候可以使用以下命令增大Resin的内存:

  1. unix> bin/httpd.sh -Xmn100M -Xms500M -Xmx500M
  2. win> httpd.exe -Xmn100M -Xms500M -Xmx500M
  3. install win service> httpd.exe -Xmn100M -Xms500M -Xmx500M -install

这样就可以设置Resin使用的内存了

5. Resin和Apache组合
我感觉Resin和Apache组合是最简单的,设置比Tomcat简单方便的多。总结一下可以使用如下步骤:
1) 分别安装Apache和Resin
2) 在Apache中的httpd.conf中添加模块,代码如下:

  1. LoadModule caucho_module "yourResinHome/win32/apache-2.0/mod_caucho.dll"

3) 如果是同一IP的多个站点,可以将
ResinConfigServer localhost 6802
放到VirtualHost代码中,下面是一个例子:

  1. <virtualhost *:80>
  2. ServerName www.3721.com
  3. DocumentRoot "C:\website\www"
  4.  
  5. ResinConfigServer localhost 6802
  6. </virtualhost>

当然如果想让虚拟站点正确运行的话,还需要在Resin的resin.conf文件中添加站点,具体可以参考Resin手册;如果不是同IP的虚拟站点,只要将 ResinConfigServer localhost 6802 放到任意一个地方就可以了

最后分别重启一下Resin和Apache就可以了,是不是很简单?

参考资料:
Resin 3.0 官方文档

/RESIN/ welcome-files & servlet
http://groups.google.com/group/fido7.ru.java/browse_thread/thread/986b22abad39551c/8cd4cbffabd64fe1?lnk=st&q=resin+servlet+welcome-file&rnum=2#8cd4cbffabd64fe1