在tomcat上部署pentaho 1.5.3
最近一直在做mondrian的foodmart的实验,有位朋友的公司要部署一个pentaho的demo来做演示,我跟他说直接运行demo就可以 了,但是他们公司非要自己从头配一个,所以我就自己做了一下实验基于最新的1.5.3的,其实步骤都差不多,其他版本也应该可以,希望能给喜欢 pentaho的朋友一点帮助。1 . 首先需要下载pentaho-j2ee-deployment- , pentaho-data- 和 pentaho-solution- 三个包,分别解压到三个不同的地方
2 . 从命令行进入pentaho-j2ee-deployment 目录,运行ant -p 会列出所有的ant 任务,执行war-pentaho-tomcat-hypersonic任务,成功之后会生成4个war包,pentaho-portal- layout.war , pentaho-style.war 和 sw-style.war ,(sw-style.war 是steel-wheel-style ,是可选项,可能是pentaho的一个例子或者是pentaho的一种style风格),还有多出一个tomcat目录下的hsqldb目录下有一个 pentaho.war ,如果你执行的是war-pentaho-mysql就是在tomcat目录下有个mysql5目录,里面一样是pentaho.war.我选用的是 hsqldb .
3 . 在你的tomcat的安装目录下找到conf / server.xml 文件,在其中的host 元素下加上如下这一段,这一段是从pentaho的文档里面抄来的,manual-deployment-pentaho- ,其中它列出来的有些多余,这个文档应该使用confluence 用pdf 方式导出的,抄的时候注意检查一下xml 元素排版上的问题.它列出的resource 元素太多了,你查看pentaho-data- 包里面,应该只有四个数据库hibernate,sampledata,shark,quartz ,把不用的resource元素都删掉,(应该是最上面的四个).如果你的tomcat启动不了了,检查一下你添加的部分是不是有错。
1
2 < Context path ="/pentaho" docbase ="webapps/pentaho/" >
3 < Resource name ="jdbc/SampleData" auth ="Container"
4 type ="javax.sql.DataSource" maxActive ="20" maxIdle ="5" maxWait ="10000"
5 username ="pentaho_user" password ="password"
6 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
7 driverClassName ="org.hsqldb.jdbcDriver"
8 url ="jdbc:hsqldb:hsql://localhost/sampledata" />
9 < Resource name ="jdbc/Hibernate" auth ="Container"
10 type ="javax.sql.DataSource"
11 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
12 maxActive ="20" maxIdle ="5" maxWait ="10000" username ="hibuser"
13 password ="password" driverClassName ="org.hsqldb.jdbcDriver"
14 url ="jdbc:hsqldb:hsql://localhost/hibernate" />
15 < Resource name ="jdbc/Quartz" auth ="Container"
16 type ="javax.sql.DataSource"
17 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
18 maxActive ="20" maxIdle ="5" maxWait ="10000" username ="pentaho_user"
19 password ="password" driverClassName ="org.hsqldb.jdbcDriver"
20 url ="jdbc:hsqldb:hsql://localhost/quartz" />
21 < Resource name ="jdbc/Shark" auth ="Container"
22 type ="javax.sql.DataSource"
23 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
24 maxActive ="20" maxIdle ="5" maxWait ="10000" username ="sa" password =""
25 driverClassName ="org.hsqldb.jdbcDriver"
26 url ="jdbc:hsqldb:hsql://localhost/shark" />
27 </ Context >
28
2 < Context path ="/pentaho" docbase ="webapps/pentaho/" >
3 < Resource name ="jdbc/SampleData" auth ="Container"
4 type ="javax.sql.DataSource" maxActive ="20" maxIdle ="5" maxWait ="10000"
5 username ="pentaho_user" password ="password"
6 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
7 driverClassName ="org.hsqldb.jdbcDriver"
8 url ="jdbc:hsqldb:hsql://localhost/sampledata" />
9 < Resource name ="jdbc/Hibernate" auth ="Container"
10 type ="javax.sql.DataSource"
11 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
12 maxActive ="20" maxIdle ="5" maxWait ="10000" username ="hibuser"
13 password ="password" driverClassName ="org.hsqldb.jdbcDriver"
14 url ="jdbc:hsqldb:hsql://localhost/hibernate" />
15 < Resource name ="jdbc/Quartz" auth ="Container"
16 type ="javax.sql.DataSource"
17 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
18 maxActive ="20" maxIdle ="5" maxWait ="10000" username ="pentaho_user"
19 password ="password" driverClassName ="org.hsqldb.jdbcDriver"
20 url ="jdbc:hsqldb:hsql://localhost/quartz" />
21 < Resource name ="jdbc/Shark" auth ="Container"
22 type ="javax.sql.DataSource"
23 factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
24 maxActive ="20" maxIdle ="5" maxWait ="10000" username ="sa" password =""
25 driverClassName ="org.hsqldb.jdbcDriver"
26 url ="jdbc:hsqldb:hsql://localhost/shark" />
27 </ Context >
28
4 . 把pentaho.war copy到tomcat 的webapps目录下,它会自动解压的,然后关闭tomcat , 找到pentaho/WEB-INF/web.xml 文件,找到solution-path元素,指向你解压后的pentaho-solution- 目录,注意java里面是用正斜杠 / ,如果你从windows的地址栏copy的话注意把反斜杠改一下.
5 . 修改pentaho/WEB-INF/classes 目录下的log4j.xml文件,把 里面的value改成INFO,或者更高,这一步是可选项,主要是启动的时候出现很多不必要的debug 信息.如果你启动的时候出错了,再改回来。(一般都是solution-path没有找对,我用7-zip解压的时候老是解压到一个新的目录,所以后来指 定 solution-path 的时候,目录地址高了一级.)
6 . 启动pentaho-data- 目录里面的hsqldb数据库.
7 . 这个时候启动tomcat ,应该是不报任何错误的.你把浏览器指向http://localhost:8080/pentaho ,会看到pentaho的界面的,只不过是没有什么颜色的那种.
8 . 把编译後的三个war文件copy到tomcat 的webapps目录下,等它们自动解压之后,再进去看,发现有了样式了。安装就完成了.
贴几张图:
pentaho成功启动后应该有 Pentaho BI 平台服务器就绪 这句话.
安装了style 和 portal 包之后的登录界面
在pentaho-data- 目录的lib 目录下执行java -cp hsqldb.jar org.hsqldb.util.DatabaseManager 出现的hsqldb 的manager 登录画面
用户名和密码都在相应目录的数据库文件里面,hsqldb的数据库文件是可以用
文本编辑器打开的,搜索password就可以找到用户名和密码了
sampledata 里面的数据
我在安装的时候也碰到了诸多的问题,
1 . 一开始编译的时候使用的ant war-pentaho-tomcat 任务,它直接报错,说找不到rdbms目录,后来猜想这个任务应该是留给其他数据库编译的时候扩展的.直接就换了war-pentaho-tomcat- hypersonic 任务重新编译了一次
2 . 后来从文档里copy出数据源的那句话出错了,导致tomcat启动不了,因为从pdf文件copy的那段话排版有问题,后来把它粘贴到eclipse (装了WTP插件的)里面,一格式化就看出来了,context 元素和后面的属性path中间的空格没了,还有多出来了几个resource元素.
3 . 指定solution-path的时候目录高了一级.
4 . 启动tomcat的时候出现了很多不必要的debug信息,修改log4j文件就可以了,它在tomcat/bin 目录下还会生成几个log文件,像是server.log 和ReportEngine_ .log 文件。
写这篇文章的目的更多的是希望喜欢pentaho的朋友在用pentaho做实验的时候能够学会思考,出现了问题先在网上找资料,而不是无论遇到什么问题都求别人来回答你,知识是长期积累的过程,新技术总是不断的出现,比如最近火的不得了的JavaFX,
也许将来pentaho可能会用JavaFX 来做OLAP 和 DashBoard 也不一定的 。关键还是要掌握学习的方法,学会思考问题 . 我安装的时候也遇到了很多问题,但是只要你细细的分析问题的原因,总是可以找出解决的办法的.