Sakai 10 系统需求

操作系统选择

Sakai是操作系统中立的。可以安装在绝大多数的Linux发行版上。常见的Linux发行版包括CentOS,Debian GNU/Linux,Fedora,Gentoo Linux,Red Hat Enterprise Linux (RHEL),SUSE Linux,Ubuntu。Sakai也可以运行在Mac OS X服务器,Microsoft Windows以及Sun Solaris上。Linux意外的操作系统没有被充分测试过,所有的社区测试服务器都是部署在Linux上,所以一般也建议使用Linux来部署Sakai。

Java

Sakai 10 主要在Oracle Java 7下进行测试. 但应该在Java 6(Java 1.6)环境下也可以正常运行。但编译系统至少需要JDK 6或以上版本;JDK 8环境应该也可以运行。有些文件(例如*.jsp和*.jws)需要在部署后进行编译,所以仅仅安装JRE是不够的,必须要安装JDK。

Sakai 10 (2014发布)

版本要求 Java 6+。基于 Java 7进行测试。需要使用 Java 6-8进行编译。

Sakai 11 可能需求 (2015发布)

版本要求 Java 7+。可能基于 Java 8进行测试。可能需要使用Java 7-8进行编译。

影响JRE兼容性的主要原因是引入了Java语言的新功能或新函数。

 

Oracle Sun Java J2SE 5.0 (Java 1.5) 已经结束了生命周期,不再被官方维护。如果您还在使用 Java 1.5,请注意相关安全问题,并升级到1.5.0_17或更新版本。

应用服务器选择

推荐使用Apache Tomcat 7,这是被充分测试的应用服务器,一般会与Apache HTTP Server这样的Web服务器一起使用。有些学校也成功使用了Windows IIS或Nginx作为Web服务器。还有一些学校(香港科技大学和瓜达拉哈拉大学)使用JBoss运行Sakai,但这里不提供相关的安装指导。在Sakai 10完成开发时,Tomcat 8依旧处于beta状态,所以没有进行过相关测试。

Sakai 2.8.0和之前版本需要Tomcat 5.5,但可以通过修改配置运行在Tomcat 7中。Sakai 2.9.0及以后版本需要运行Tomcat 7,并需要修改Tomcat的配置来使其正常运行。具体信息请参考这篇文档。

不再支持Websphere

Sakai 2.7.0中包含Websphere模块来支持Websphere/DB2生产环境,然而由于缺乏维护,Websphere已不被支持。

 

数据库选择

现有Sakai生产环境中,使用最多的是MySql 5.5或更新版本,Oracle其次;已知的使用Oracle版本包括10g,11g,12c。Sakai并不局限于这两种数据库,与其它关系型数据库的集成也不是很困难。曾经有学校使用Microsoft SQL Server作为数据库,Sakai开发者中也偶尔有人建议支持PostgreSQL。但是,目前Sakai社区中没有人支持除MySQL和Oracle以外的数据库。

不再支持IBM DB2

Sakai 2.7.0中增加了IBM DB2支持,但是在2.8.0中,数据库更新脚本没有被更新和测试。所以Sakai不再支持DB2,包括此后的2.9.x。
Sakai demo版使用HSQLDB作为数据库,但请不要在生产环境中进行使用。

集群,文件存储和负载均衡策略

典型的Sakai集群使用多台服务器,每个服务器上部署一个或多个Tomcat,然后还可以将这些服务器部署在Apache HTTP Server之后。其中,每个Tomcat中部署一份完整的Sakai。另外还需要部署一台数据库服务器。

将用户文件保存在数据库外是推荐的做法,但需要在Sakai的配置文件中进行设置。多数部署Sakai的学校使用NAS或SAN来存储文件。负载均衡通过Apache HTTP Server(通过mod_jk,mod_proxy,mod_proxy_balancer或mod_proxy_ajp等模块)或者负载均衡硬件(如F5 BIG-IP,NetScaler或Zeus)实现。 

外部认证

Sakai可以与许多外部认证系统集成,如CAS,Kerberos,LDAP,Shibboleth,WebAuth。

与学生信息系统集成

Sakai社区中的高校成功集成过Datatel,Peoplesoft和其它高校自己编写的学生信息系统。

Sakai有几种基本的集成外部系统的方法。这几种方法可以混合使用。第一种是使用Sakai "provider" API,Sakai在运行时可以通过调用这些API获取信息,包括用户帐号,用户信息,课程信息,用户角色等。

用户帐号 API:Sakai用来确定用户是否可以登录到系统。可以用于Kerberos,Active Directory或者LDAP来进行验证用户身份。

用户信息 API: Sakai用来获取用户姓名、email等信息,获取的来源可以是LDAP或X.509。通过选择性地展示用户信息,可以保护用户隐私。

开课成信息API:Sakai用来获取课程信息、选课信息。

用户角色API:Sakai用来判定特定用户在响应站点中所处的角色。

以上API都是“拉取”API,只有在Sakai系统需要相关信息的时候,才会被调用。

如果需要将数据“推送”到Sakai,有2种方案 - 计划任务和Web Services。

Sakai通过内部叫做Quartz的系统执行批量计划任务,通过创建相关的Java类,执行数据同步任务,并通过类似cron表达式的方法按周期运行相关任务。

另一种更加普遍的方法是将相关数据通过Web Services的方法推送到Sakai。通过Web Services,可以简介访问很多Sakai的API。REST和SOAP接口可以被多种语言调用。系统管理员也可以根据实际需要创建自己的Web Services。但这种方法在数据量大时,可能会产生一定的性能问题。