当前位置: 首页 > 工具软件 > uPortal > 使用案例 >

uPortal4.0安装部署记录

凤衡
2023-12-01

uPortal环境要求

编译和运行uPortal完全源代码版本,需要满足下列条件:

  1. Java 1.6
  2. Maven 2.2或更高
  3. Ant 1.8.2 (注: ant 1.8.x 不能适用于 uportal 3.2.2)
  4. Servlet spec 2.5或更高
  5. 数据库

安装 Apache Maven

  1. 下载 Maven
  2. 解压文件 (apache-maven-2.2.x-bin.tar.gz) 到你要安装 Maven 的目录
  3.  添加环境变量 M2_HOME
  4. 添加环境变量 M2
  5. 将环境变量 M2 添加到path
  6. 确保JAVA_HOME 已设置指向你的JDK所在位置并且添加到path变量中
  7. 运行下面的命令,确保mvn已被正确安装
tar -xvf apache-maven-2.2.x-bin.tar.gz
export  M2_HOME=/path/to/apache-maven/apache-maven-2.2.x
export  M2=$M2_HOME/bin
export  PATH=$M2:$PATH
export JAVA_HOME=/path/to/java/jdk1.6.x
export PATH=$JAVA_HOME/bin:$PATH
mvn --version

WindowsMaven的安装

  1. 下载Maven
  2. 解压文件 apache-maven-2.2.x-bin.zip 到你要安装Maven的目录 (例如., C: \Program Files\Apache Software Foundation)
  3. 添加环境变量M2_HOME
    • 打开系统属性 (WinKey + Pause)
    • 选择 "高级" 标签页
    • 点击"环境变量" 按钮
    • 添加 M2_HOME 到用户环境变量,值为:C:\Program Files\Apache Software Foundation\apache-maven-2.2.x
  4. 添加 M2 环境变量(同第三步)值为:%M2_HOME%\bin.
  5. 用上面进行的方法,在用户变量中更新/创建 Path 环境变量 追加 %M2% 使 Maven 在命令行可用.
  6. 同上,确保JAVA_HOME 环境变量存在你的用户环境变量或者系统环境变量中,并指向你的 JDK 所在位置(如:C:\Program Files\Java\jdk1.6.x)
  7. 更新 Path 环境变量,使包含 %JAVA_HOME%\bin 同第三步.
  8. 打开一个新的cmd命令行 (Winkey + R 输入 cmd) ,运行 mvn --version 确认是否正确安装.

安装 Apache Ant

  1. 下载 Apache Ant
  2. 解压文件到安装目录
tar -xvf apache-ant-1.7.x-bin.tar.gz
export ANT_HOME=/path/to/apache-ant-1.7.x
export JAVA_HOME=/usr/local/jdk-1.6.x
export PATH=$PATH:$ANT_HOME/bin
ant -version

uPortal4.0.2安装

下载 uPortal源码, 解压文件(源文件的目录要位于tomcat容器之外)

tar -xvf uPortal-4.0.2.tar.gz

下面进行安装部署前的配置:

第一步 配置build.properties文件

uPortal的编译需要build.properties文件,用来描述部署环境,该文件可以在uPortal项目的根目录下找到

  1. 到uPortal源文件的目录创建build.properties,可以通过复制build.properties.sample 并将名称改为build.properties
  2. 辑build.properties,配置"server.home"属性,使其指向你的tomcat安装的根目录
cp build.properties.sample build.properties
server.home=D:/project/xjtu/tomcat-7.0.22

第二步 配置过滤器

  1. 新特性:在filters文件夹下,放置了默认的local.properties文件用来配置数据库连接、uPortal服务器属性和CAS服务器的配置,替换localhost:8080为你的服务器名称
## HSQL Configuration
environment.build.hsql.port=8887

## Database Connection Settings (Uncomment the Maven Filters section in rdbm.properties)
environment.build.hibernate.connection.driver_class=oracle.jdbc.OracleDriver
environment.build.hibernate.connection.url=jdbc:oracle:thin:@192.168.200.66:1521:kyy
environment.build.hibernate.connection.username=a2_portal
environment.build.hibernate.connection.password=a1b2c3
environment.build.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
 
# uPortal server configuration properties
environment.build.uportal.server=localhost:8080
environment.build.uportal.protocol=http
environment.build.uportal.context=/             #这里部署到ROOT下面只写/
environment.build.uportal.email.fromAddress=portal@university.edu

# CAS server configuration properties
environment.build.cas.server=localhost:8080
environment.build.cas.protocol=http
•	默认情况下uPortal4使用 local.properties过滤文件,但是你也可以创建你自己的过滤文件,然后在编译/部署的时候使用一个参数来指定你想使用的文件即可。

例如:我可以创建一个新的过滤文件名字为:test.properties并设置了所有的服务器信息指向我的测试服务器,然后在编译和部署uPortal时我可以使用参数:-Denv=test即可。
注意:使用参数时用的是文件名.properties前面的部分,此参数同时应用于ant和maven

在不同的filter文件之间进行切换时,你要确保使用clean命令。(参考下面的命令)
ant clean deploy-ear -Denv=test
mvn clean install -Denv=test

第三步 配置数据库

在部署uPortal之前,我们需要在rdbm.properties文件中设置和配置JDBC属性,下面是oracle的配置例子:

获得驱动

自Oracle JDBC的驱动在Maven库中不可用,它必须通过手动放置在你要安装uPortal的机器上的本地库中,你可以在每个机器上分别安装,也可以为所有的机器设置maven的项目库进行使用。

首先要确认你是否已经在你的机器上安装了oracle客户端和Oracle JDBC的驱动程序,如果已经安装了oracle,它将会放置在$ORACLE_HOME中,你可以用下面的命令显示驱动:

ls $ORACLE_HOME/lib/

如果你不能找到它,就下载正确版本的Oracle JDBC驱动包,当你获得了驱动jar文件后,你需要将它安装在你的本地maven库中,使用下面的命令安装:

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -DgeneratePom=true -Dfile=D:/ojdbc14-10.2.0.3.0.jar

命令中的-DgroupId, -DartifactId 和 –Dversion选项取决你的环境,它们必须匹配正确的jar供应商、名称和版本,以免在安装的路上发生冲突。-Dfile为你的Oracle JDBC驱动包位置,你必须包含文件的所在目录,并且文件不能存在于你的maven运行环境中

打开/uPortal/pom.xml,大约在82行有如下代码:

<!-- The final name of the uPortal web-application -->
<uportal.docbase>uPortal</uportal.docbase>
<project-site-path>/uportal/${project.version}</project-site-path>

<!-- The JDBC Driver used by uPortal -->
<jdbc.groupId>hsqldb</jdbc.groupId>
<jdbc.artifactId>hsqldb</jdbc.artifactId>
<jdbc.version>${hsqldb.version}</jdbc.version>

我们需要在这里添加oracle驱动的group, artifact 和 version,和上面mvn install:install-file命令行中的保持一致。

修改后的代码如下:(应用部署在ROOT下面,所以uportal.docbase要改为ROOT)

<!-- The final name of the uPortal web-application -->
<uportal.docbase>ROOT</uportal.docbase>
<project-site-path>/uportal/${project.version}</project-site-path>

<!-- The JDBC Driver used by uPortal -->    
<jdbc.groupId>com.oracle</jdbc.groupId>
<jdbc.artifactId>ojdbc14</jdbc.artifactId>
<jdbc.version>10.2.0.3.0</jdbc.version>

JDBC配置

编辑uPortal-4/uportal-war/src/main/resources/properties/rdbm.properties,打开oracle配置的注释并修改URL,用户名和密码,像下面这样:

##### Oracle 10g - example
hibernate.connection.driver_class=oracle.jdbc.OracleDriver
hibernate.connection.url=jdbc:oracle:thin:@192.168.200.66:1521:kyy
hibernate.connection.username=a2_portal
hibernate.connection.password=a1b2c3
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

测试配置

运行ant的dbtest任务,将会告诉你所配置的数据库是否正确

ant dbtest

如果配置正确,显示的结果类似下面的内容:

[java]     Connected To: jdbc:oracle:thin:@yourserver:1521:uportal
     [java]     Supports:
     [java]         Outer Joins:          true
     [java]         Transactions:         true
     [java]         {ts metasyntax:       true
     [java]         TO_DATE():            false
 
     [java] Database name:    'Oracle'
     [java] Database version: 'Oracle Database 11g Release 11.1.0.0.0 - Production'
     [java] Driver name:      'Oracle JDBC driver'
     [java] Driver version:   '10.2.0.3.0'
     [java] Driver class:     'Oracle JDBC driver'
     [java] Connection URL:   'jdbc:oracle:thin:@yourserver:1521:uportal'
     [java] User:             'USERNAME'
 
     [java] Type Mappings: [Type[genericType=TIMESTAMP,local=DATE]]
 
     [java] supportsANSI92EntryLevelSQL: true
     [java] supportsANSI92FullSQL:       false
     [java] supportsCoreSQLGrammar:     true
     [java] supportsExtendedSQLGrammar: true
 
     [java] supportsTransactions:         true
     [java] supportsMultipleTransactions: true
     [java] supportsOpenCursorsAcrossCommit:      false
     [java] supportsOpenCursorsAcrossRollback:    false
     [java] supportsOpenStatementsAcrossCommit:   false
     [java] supportsOpenStatementsAcrossRollback: false
 
     [java] supportsStoredProcedures:     true
     [java] supportsOuterJoins:           true
     [java] supportsFullOuterJoins:       true
     [java] supportsLimitedOuterJoins:    true
     [java] supportsBatchUpdates:         true
     [java] supportsColumnAliasing:       true
     [java] supportsExpressionsInOrderBy: true
     [java] supportsOrderByUnrelated:     true
     [java] supportsPositionedDelete:     false
     [java] supportsSelectForUpdate:      true
     [java] supportsUnion:                true
     [java] supportsUnionAll:             true
 
     [java] getMaxColumnNameLength: 30
     [java] getMaxColumnsInIndex:   32
     [java] getMaxColumnsInOrderBy: 0
     [java] getMaxColumnsInSelect:  0
     [java] getMaxColumnsInTable:   1000
     [java] getMaxConnections:      0
     [java] getMaxCursorNameLength: 0
     [java] getMaxIndexLength:      0
     [java] getMaxRowSize:          2000
     [java] getMaxStatements:       0
     [java] getMaxTableNameLength:  30
     [java] getMaxTablesInSelect:   0
     [java] getMaxUserNameLength:   30
     [java] getSearchStringEscape:  //
     [java] getStringFunctions:     ASCII,CHAR,CONCAT,LCASE,LENGTH,LTRIM,REPLACE,RTRIM,SOUNDEX,SUBSTRING,UCASE
     [java] getSystemFunctions:     USER
     [java] getTimeDateFunctions:   HOUR,MINUTE,SECOND,MONTH,YEAR
 
     [java] Table Types: SYNONYM,TABLE,VIEW
     [java] SQL Types:   INTERVALDS,INTERVALYM,TIMESTAMP WITH LOCAL TIME ZONE,TIMESTAMP WITH TIME ZONE,
NUMBER,NUMBER,NUMBER,LONG RAW,RAW,LONG,CHAR,NUMBER,NUMBER,NUMBER,FLOAT,REAL,VARCHAR2,DATE,DATE,
TIMESTAMP,STRUCT,ARRAY,BLOB,CLOB,REF
 
BUILD SUCCESSFUL

执行到此处遇到问题

运行ant dbtest,build失败

报下面的错误,无法通过(具体错误信息参考uportal-war\target\surefire-reports\ org.jasig.portal.events.JpaPortalEventStoreTest.txt)

org.springframework.dao.InvalidDataAccessApiUsageException: YEAR; nested exception is java.lang.IllegalArgumentException: YEAR

         at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:286)

         at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104)

         at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)

…………….

经查找,可以执行下面的命令,跳过测试,最后显示build成功。(其它影响未知)

ant dbtest -Dmaven.test.skip=true

第四步 配置tomcat

共享库

uPortal将库文件放在了CATALINA_BASE/shared/lib下面,tomcat6默认没有启用库文件从该目录加载,解决此问题你需要编辑CATALINA_BASE/conf/catalina.properties文件,修改以"shared.loader="开始的一行,改为下面的形式:

#Enabling shared libraries in CATALINA_BASE/conf/catalina.properties
shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar

共享session

Jasig portlets,还有其它的JSR-168规范的portlets要求可以在portal应用和portlet应用之间共享用户session数据,启用tomcat的这一属性,你必须添加emptySessionPath="true"这个参数在使用的connector中(在CATALINA_BASE/conf/server.xml中进行配置),如下:

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

第五步 部署uPortal

警告:运行下面的命令意味着初始化数据库并删除所有的表,如果你在一个已经存在的库上运行,你的数据将会丢失

运行下面的命令部署uPortal和加载数据库

ant initportal

执行到此处遇到问题

同上,执行测试时报错,修改成下面的命令跳过测试

ant initportal -Dmaven.test.skip=true

  1. 执行过程中,遇到了下面的错误
[java] ERROR Exception while importing file [D:\project\xjtu\uPortal-4.0.2\
uportal-war\src\main\data\required_entities\profile\defaultTemplateUser_default.
profile.xml]
….
….
[java] Caused by: javax.script.ScriptException: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: org.jasig.portal.io.xml.profile.ProfileImportHelper($Proxy103, $Proxy107, java.lang.Long, java.lang.Long, java
.math.BigDecimal, java.math.BigDecimal)
…….

经查找,初始化数据库完成后,执行db-import时发生的错误使用ProfileImportHelper类导入模板数据时总是无法通过

解决方法:

编辑uPortal-4.0.2\uportal-war\src\main\resources\org\jasig\portal\io下的

import-profile_v3-2.crn 大约在79行的位置:(红色部分为修改的重点)

<subtasks>
   <with-attribute key="profileImportHelper" value="${groovy(new org.jasig.portal.io.xml.profile.ProfileImportHelper(stylesheetDescriptorDao, stylesheetUserPreferencesDao, STRUCTURE_STYLESHEET_ID, THEME_STYLESHEET_ID, USER_ID, PROFILE_ID))}">
                                
 <!-- User (Profile) Parameters:  structure... -->
 <node-iterator xpath="structure/parameter">

改成下面的形式:

<subtasks>
   <with-attribute key="profileImportHelper" value="${groovy(new org.jasig.portal.io.xml.profile.ProfileImportHelper(stylesheetDescriptorDao, stylesheetUserPreferencesDao, STRUCTURE_STYLESHEET_ID, THEME_STYLESHEET_ID, USER_ID.intValue(), PROFILE_ID.intValue()))}">
                                
                                <!-- User (Profile) Parameters:  structure... -->
                                <node-iterator xpath="structure/parameter">

第六步 启动tomcat

Windows下面运行startup.bat,运行过程中可能出现内存溢出,修改catalina.bat,加入

set JAVA_OPTS=-Xms512m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m

tomcat server.xml配置加入下面代码:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
        maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/>
    
    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
    <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" acceptCount="100" enableLookups="false"
               redirectPort="8443"  emptySessionPath="true" URIEncoding="UTF-8"/>

 类似资料: