剥离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这时就不用配置安全策略了。