`

Sakai Demo搭建及遇到的问题汇总

阅读更多

转载请注明出处哦~

http://uuflower.iteye.com/blog/1873300

 

最近在调查LMS的开源平台,考虑再三后,计划借鉴Sakai平台,但由于java是0基础,遇到了n多诡异问题,今天终于把这个最简单的Demo搭建弄好了,特意把遇到的问题整理一下,希望像我一样是0基础的人,遇到此类问题,能更顺利地解决。

 

了解Sakai的人估计知道,现在有两个版本:CLE(目前最新的是2.9.1)、OAE(目前最新的是1.4.3),为了权衡这两个平台,先把Demo搭起来对比下,OAE的相对简单,CLE Demo的搭建是一波三折,这里就详细说下这个吧。

 

1、背景

1)搭建环境:windowsXP 内存2G

2)Sakai版本:2.9.1

3)机器已安装并配置Java环境(关键注意环境变量哦)

具体的配置方法可以baidu、google,这个就不说了 。

我机器装的是JDK1.6,具体的版本信息如下:

 

  

2、demo包下载

 

从官网上下2.9.1版本的zip包:

http://source.sakaiproject.org/release/2.9.1/

 

3、解压包

将包解压到指定目录。

这个目录自己可以随便放,不过,路径上最好不要有空格哦,网上有人说有空格会有问题,不过我没试过。

 

4、按照解压文件夹下的说明启动

在\sakai-demo-2.9.1文件夹下,有一个文件demo_readme.txt,是官方的安装说明文档。

简单说Windows下的安装步骤如下:

 

1)启动方法:

开始-》运行-》输入“cmd”启动命令窗口,切换目录到sakai-demo-2.9.1文件夹下;

输入“start-sakai.bat”,启动这个脚本,下面这个是我的启动页面:

 

理论上程序会自动启动tomcat,跳出来熟悉的tomcat启动框了,然后看着tomcat哗哗的启动log从屏幕上跑过,直到tomcat启动完毕;

然后,在浏览器中,输入如下URL即可以看到Sakai的真面目了:

http://localhost:8080/portal

 

2)关闭

步骤与启动一样,唯一不一样执行的脚本是stop-sakai.bat。

 

5、悲催问题整理

上面的步骤看起来很简单人性化哈,但悲催的我生生折腾了两天才折腾好,下面就把我遇到问题整理下,大家一起happy下吧:

 

启动时,输入“start-sakai.bat”后,只显示了上面图中的类似信息,没有启动tomcat。

 

1)环境变量的恶作剧---CATALINA_HOME

baidu、google时,发现有好心网友提醒,如果机器已安装配置过tomcat,原tomcat配置的CATALINA_HOME环境变量会对Sakai Demo自带的tomcat有影响。

仔细观察了下,确实是引用了当前环境变量,导致使用错误的文件。

 

大喜,修改后,再次启动,依旧;有点恼火,但,转念一想,刚刚解决的问题,让咱们离成功近了一步,该高兴。

继续……

 

2)端口到底占用了没?

再次研究demo_readme.txt,发现有如下内容:

 

Problems getting started
-----------------------------------------------------

1) Sakai's Tomcat will run on port 8080, and also make use of ports 8005 and 8009.
   If another process is running on any of these ports, Sakai will not start up.

 

2) Sakai's Tomcat will find itself relative to the startup directory.  Always start it from the sakai-demo folder.
   If you have an environment variable CATALINA_HOME set to another Tomcat, this will interfere with Sakai's startup.

 

第二个问题,咱们在第一步已经解决了,下面就看看这个端口到底占用了没有:

 

首先,在命令窗口中,输入“netstat -ano|find "8080"”查看是否有程序占用了该端口。

如果回车后,没有任何输出结果,说明没有程序占用该端口,说明不是端口被占用导致的问题。

如果有输出内容,看下占用程序最后一列的内容是多少,这一列标识的是程序的pid。

 

然后,输入指令“tasklist”,在输出列表中,查找对应pid的程序是什么

 

如果确实被占用了,退出占用程序,或修改tomcat的使用端口,推荐第二种。

 

修改的端口方法与普通tomcat一样,进入sakai-demo-2.9.1\conf\server.xml,修改tomcat使用端口:

 

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 

我改成了8088,默认的是8080哦。

 

注意,端口号改了后,开启Sakai的URL中的端口号也得变哈,别忘了:

http://localhost:8088/portal

 

再试一次,冥冥中觉得,这不是问题的关键,试下吧……果然,tomcat还是纹丝不动呢哭

 

再查……

 

3)到底是啥阻碍了我与tomcat

到底是啥原因导致tomcat启动不起呢,上面的命令窗口没有任何提示信息,

好吧,我手动进入bin目录,手动启动start.bat,哈哈,有反应,看到tomcat log噌噌跑,有谱……

好景不长,等了5min左右,tomcat启动窗口不见了,自动关闭了!!!

 

为啥?

到logs目录下看所有log文件,找到catalina的log(我的是catalina.2013-05-22.log),打开发现tomcat的启动错误信息如下:

 

2013-5-22 9:25:44 org.apache.catalina.core.ContainerBase addChildInternal
严重: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/osp-common-tool]]
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
 at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:932)
 at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1329)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
 at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
 at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:334)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041)
 at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
 at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:621)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
 at org.apache.tomcat.util.threads.DedicatedThreadExecutor.execute(DedicatedThreadExecutor.java:62)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5220)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 ... 29 more
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
 at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
 at java.util.concurrent.FutureTask.get(FutureTask.java:83)
 at org.apache.tomcat.util.threads.DedicatedThreadExecutor.execute(DedicatedThreadExecutor.java:56)
 ... 31 more
Caused by: java.lang.OutOfMemoryError: Java heap space

……

又是一阵google baidu,修改JAVA_OPTS、CATALINA_OPTS的配置内存大小,参照修改后,再次启动,OK,tomcat自动启动起来了,狂喜……

 

好景不长,过了大约三四分钟,tomcat卡住了,

在tomcat窗口,看到“java.lang.OutOfMemoryError: PermGen space ”错误提示信息

 

吐血,再次google baidu,终于找到一个相当靠谱的方案及解释,推荐大家参考:

http://hi.baidu.com/gonervergiveup/item/3c7a9b374f29749db80c03a9

----------------------------------------------------------------------------------------------------

1、首先是:java.lang.OutOfMemoryError: Java heap space

解释:

Heap size 设置

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.

JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。

可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,

一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

解决方法:

手动设置Heap size
修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

或修改catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

2、其次是:java.lang.OutOfMemoryError: PermGen space

原因:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法:

1. 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

catalina.sh下为:
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"

 

4)终极解决方案

根据上面的粗体提示,用文本文件打开sakai-demo-2.9.1\start-sakai.bat,添加-Xms32m,修改-Xmx256m,和其他所有带XXXm的数字,下面是我的修改数据(我机器的内存是2G):

set JAVA_OPTS=-server -Xms32m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Dhttp.agent=Sakai -Dsakai.demo=true -Djava.awt.headless=true -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dorg.apache.jasper.compiler.Parser.STRICT_WHITESPACE=false -Dsun.lang.ClassLoader.allowArraySyntax=true


set CATALINA_OPTS=-server -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Dhttp.agent=Sakai -Dsakai.demo=true -Djava.awt.headless=true -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dorg.apache.jasper.compiler.Parser.STRICT_WHITESPACE=false -Dsun.lang.ClassLoader.allowArraySyntax=true

 

上面粗体部分是我修改或添加的内容。

保存后,再次按照在命令行中启动指令“start-sakai.bat”,成功自动启动tomcat……然后等待5~6min后,tomcat启动完毕,hoho

 

那试试ok了不,在浏览器中输入URL:http://localhost:8088/portal

oho,终于看到Sakai的真面目了,眼泪哗哗地啊:

用户名、密码都是admin,记得哈



 

 

 6、总结

要不是被逼着,这个问题还不知道啥时候能搞定呢,通过本次事件,得到两个经验教训:

1)网络的力量是无穷的,没有前面兄弟的泣血共享,我也不能解决遇到的问题。

再次感谢慷慨共享的兄弟们,完事我也自己整理了一份,供后来者参观。

 

2)相信问题终将解决

别人能搞定的问题,咱们一样也能搞定,只是时间长短的问题。

在这个浮躁的社会,没有信仰是可怕的,鉴于历朝各代的宗教统治,推荐大家,信春哥吧~~不求永生但求有房有xifu大笑

 

 

  • 大小: 2.2 KB
  • 大小: 5 KB
  • 大小: 45.2 KB
分享到:
评论

相关推荐

    Sakai-src基于Sakai的源码文件

    Sakai的src,Sakai的三种方式中的src,便于更改开发

    Sakai的开发文档

    sakai的开发文档 根据自己做这件事遇到的问题所作的文档,也可以算作是学习笔记。

    sakai样式修改手册

    Sakai 是由高校、商业组织和个人开发者组成的社区,致力于开发一个通用的协作学习环境(Collaboration and Learning Environment,CLE)。Sakai是基于Educational Community License(开源软件许可证的一种)的教育软件...

    sakai的安装配置

    该文档主要是说一下sakai的配置问题,因为我也遇到了相同的问题,所以我将我遇到的问题都记录下来共享一下

    sakai安装文档,很有用的

    sakai安装文档,很有用的安装Sakai App Builder

    sakai2.8安装手册

    详细描述了sakai2.8的安装过程以及错误解析,和hello world示例的演示。。

    E-learning sakai 用户手册

    Sakai 是由高校、商业组织和个人开发者组成的社区,致力于开发一个通用的协作学习环境(Collaboration and Learning Environment,CLE)。Sakai是基于Educational Community License(开源软件许可证的一种)的教育软件...

    sakai 用户注册业务流程分析

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流。欢迎交流!

    sakai doc 2.9.3

    sakai-javadoc-2.9.3.tgz

    使用Sakai构建开放式教学平台(完整版)

    使用Sakai构建开放式教学平台(完整版)

    sakai charon分析文档

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流,欢迎交流!

    Sakai部署步骤 (1)1

    1.修改:/iscas/sakai/tomcat7/conf/server.xml 2.修改:/iscas/sakai/tomcat7/bin/setevn.s

    sakai 工具权限设置逻辑

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流。欢迎交流!

    sakai使用手册

    sakai 是国外一款开源的网络教育平台,由麻省理工大学。

    sakai 的权限流程分析-详细的源码调用过程

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流,欢迎交流!

    教学与教务管理系统2 0教学sakai系统用户使用手册(转自北邮)

    教学与教务管理系统2 0教学sakai系统用户使用手册(转自北邮)。

    Sakai教学平台的基本架构和搭建方法 (2013年)

    介绍了Sakai的基本架构、主要功能模块,并基于Windows系统,描述了搭建及使用Sakai教学平台的基本流程,以此帮助教师快速掌握Sakai教学平台、利用Sakai教学平台共享教学信息资源,扩大教学和学习空间,实现师生实时...

    sakai汉化工具jrceditor

    NULL 博文链接:https://liuyf.iteye.com/blog/723460

    Sakai11远程教育版安装指南

    系统运行软件环境 服务器端: 操作系统:linux 或 windows 数据库:mysql 5.5或更高版本 编译运行环境:Java 1.8 客户端: Windows7、Windows8,IE7以上版本、chrome、firefox浏览器 安装步骤(以linux为例)

    Sakai 框架与内核 附件下载

    NULL 博文链接:https://bochuxt.iteye.com/blog/366339

Global site tag (gtag.js) - Google Analytics