2010-01-23

剥离CruiseControl dashboard控制台到Debian安装的tomcat6上

在前篇日志 如何剥离CruiseControl内置的Web控制台 中,我已经介绍过怎么剥离CruiseControl内置的控制台dashboard到tomcat6容器中。但那篇日志中介绍的是用下载压缩包方式安装的tomcat6,在这我向大家介绍一下如何用Debian包安装的tomcat6部署dashbaord控制台。

为什么这两种安装tomcat6的方法会给web部署带来异同呢?

原因是,用Debian包安装的tomcat6默认启动了tomcat6 的SecurityManager,这时对于部署在它上面的应用代码进行权限管理,当你的web应用在/WEB-INF/lib或者/WEB-INF/classes目录下加入了第三方或个人的jar包/类库,但没有在/etc/tomcat6/policy.d目录下的安全策略文件中加入访问权限控制,那么你的web应用就不能正常启动,会出现一些意想不到的错误。可参见我的另一篇日志 Dashboard不能运行在Debian包安装的Tomcat6上? 而用解压包安装的tomcat6默认情况下是不启用SecurityManager,比如你运行
CATALIAN_ROOT/bin$ ./startup.sh
就不会启用SecurityManager。如果你想启用SecurityManager,可运行
$CATALINA_HOME/bin/catalina.sh start -security(Unix)
CATALINA_HOME%\bin\catalina start -security      (Windows)

下面就说下用Debian包安装的tomcat6部署dashbaord控制台的步骤:

1、部署dashbaord web应用 将dashbaord项目拷到 /var/lib/tomcat6/webapps目录下 2、编辑 /etc/tomcat6/policy.d/50local.policy 安全策略文件,加入以下几行
// The permissions granted to the context WEB-INF/classes directory
grant codeBase "file:${catalina.base}/webapps/dashboard/WEB-INF/classes/-" {
   permission java.security.AllPermission;
};

// The permissions granted to the context WEB-INF/lib directory
grant codeBase "file:${catalina.base}/webapps/dashboard/WEB-INF/lib/-" {
   permission java.security.AllPermission;
};
3、修改 dashboard-config.xml配置文件,下面是修改后的文件(粗体部分是修改的内容)
<dashboard>
 <buildloop
   logsdir="/PATH/TO/CC/logs"
   artifactsdir="/PATH/TO/CC/artifacts"/>
 <features allowforcebuild="true"/>
 ......
</dashboard>
4、修改CruiseControl构建循环使用的 config.xml 配置文件。(粗体部分是增加的内容)
<cruisecontrol>
 <dashboard url="http://localhost:8080/dashboard" postinterval="5"/>
 .......
</cruisecontrol>
5、告诉 tomcat dashboard-config.xml 文件的位置,编辑/etc/init.d/tomcat6 脚本,加入以下内容(粗体部分是加入的)
JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Ddashboard.config=/path/to/dashboard-config.xml -Djava.io.tmpdir=$JVM_TMP"
6、重启tomcat6就OK了
sudo /etc/init.d/tomcat6 restart
如果你不想tomcat6启用SecurityManager,可修改/etc/init.d/tomcat6( "-“代表删除,"+"代表加入")
# Use the Java security manager? (yes/no)
-  TOMCAT6_SECURITY=yes
+ TOMCAT6_SECURITY=no
这时就不用配置安全策略了。
blog comments powered by Disqus