跳转到内容

OpenClinica 用户手册/Ubuntu10Upgrade

来自维基教科书,开放世界的开放书籍

在 Ubuntu 上将 OpenClinica 3.0.4.x 升级到 3.1.x

[编辑 | 编辑源代码]

我不会介绍 SSL 设置或证书生成,因为这太长了,而且在其他地方有很好的解释。此外,如果您按照这里指示的进行升级,您可以使用您现有的功能设置。

首先:备份!

是的,这很重要。非常重要!

3.1 的数据库结构与 3.0 不同,在安装过程中,您可能会严重搞乱它,因此强烈建议您备份数据库,这必不可少。

# Turn off Tomcat 6
sudo invoke-rc.d tomcat6 stop
# Remove last session data
sudo rm -rf /var/lib/tomcat6/work/Catalina/localhost/OpenClinica/*

# BACKUP OPENCLINICA
cd
mkdir -p oc/BACKUP
sudo mv /var/lib/tomcat6/webapps/OpenClinica ./oc/BACKUP/ 
sudo cp -Rp /usr/share/tomcat6/openclinica.data/ ./oc/BACKUP/

# BACKUP THE DB
pg_dump openclinica  > ./BACKUP/OC30-db-`date +%b-%d-%Y`.sql 
# Adjust to your needs. If your database is remote, log into the 
# remote machine to do the dump.

关于我的配置,可能对某些人有用

我的 OC 安装在 2 台不同的虚拟机 (VM) 上:一台用于 OC/tomcat 服务器,一台用于 PostgreSQL 数据库(实际上还有第三台机器用于发送数据库转储以进行安全备份,但这目前并不重要)。

备份后,我拍摄了 VM 的快照,以便在一切都陷入困境时能够恢复。

准备软件包

[编辑 | 编辑源代码]

在 OpenClinica 的官方安装说明中,他们详细介绍了从头开始安装 Tomcat-JVSC 的过程……但这不是 Ubuntu 的方式,也不是 Debian 的方式。

包管理的优势在于它易于使用,而且……好吧,易于管理。所以,放弃编译,使用 apt-get/aptitude/synaptic

# First, add the partner repository, if you haven't already 
# (This is mainly for the Java stuff) 
sudo add-apt-repository "deb http://archive.canonical.com lucid partner"
sudo apt-get update

# Then we add the software
sudo apt-get -y install python-software-properties 
sudo apt-get -y install sun-java6-jdk jsvc 
# Approve the Java EULA: so not Open Source =( 
sudo update-java-alternatives -s java-6-sun 
sudo apt-get -y install tomcat6 
# You also need apache APR, which you can find in 
sudo apt-get -y install libtcnative-1
# This one you need to unzip the OpenClinica packs sudo apt-get install unzip

安装新版本的 .war

[编辑 | 编辑源代码]
# Now, the fun part...
cd
mv $OPENCLINICA_ZIP ~/oc
cd oc
unzip OpenClinica-3.1*.zip
cd OpenClinica-3.1.1-Community/distribution/
unzip OpenClinica.war -d OpenClinica
sudo cp -Rp OpenClinica /var/lib/tomcat6/webapps/ 
sudo chown tomcat6. /var/lib/tomcat6/webapps/OpenClinica
sudo mkdir /usr/share/tomcat6/openclinica.data
sudo chown -R tomcat6.  /usr/share/tomcat6/openclinica.data
sudo ln -s /var/lib/tomcat6/openclinica.data /usr/share/tomcat6/openclinica.data
sudo mkdir /usr/share/tomcat6/logs
sudo chown tomcat6.  /usr/share/tomcat6/logs 
sudo ln -s /var/lib/tomcat6/logs /usr/share/tomcat6/logs 
cd 
# If you have a previous installation, you should copy the content of 
# your openclinica.data folder in /usr/share/tomcat6/openclinica.data
sudo cp -Rp ./oc/BACKUP/openclinica.data/* /usr/share/tomcat6/openclinica.data
sudo chown tomcat6.  /usr/share/tomcat6/openclinica.data

PostgreSQL 操作

[编辑 | 编辑源代码]
# PostgreSQL
# (do this in another machine if you want your DB to be separate) 
# Skip these steps if you already have a functioning DB, specially 
# if you're upgrading!

sudo apt-get -y install postgresql postgresql-client

# This one is not required, but it helps out choosing passwords 
sudo apt-get install pwgen

# Generate the unbreakable password
pwgen 24 -s -1 > passwd_postgresql
# Make it user-only
chmod 600 passwd_postgresql
# Create the database
psql --user clinica --host localhost openclinica --password `cat passwd_postgresql`

编辑 datainfo.properties

[编辑 | 编辑源代码]
# BACK IN THE OpenClinica Machine
# Configuration file:
# ../OpenClinica/WEB-INF/classes/datainfo.properties

插入您的配置的详细信息。特别注意

1/ 数据库密码:在本例中,为 passwd_postgresql

2/ 数据库位置:默认为 <localhost>,如果远程数据库,则插入主机的 IP 或完整域名。

注意:在我的情况下,我使用的是通过 SSL 层远程连接的 PostGreSQL。由于证书是自动签名的,因此需要进行一些调整。在 OC 3.0 中,我的 URL 为

url=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/openclinica?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory&

新配置文件将变量更改为

db=${WEBAPP.lower}?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory&

3/ 为了方便使用,我还更改了以下变量:log.dir=${catalina.home}/logs/${WEBAPP.lower}

编辑 Tomcat 的 Java 设置

[编辑 | 编辑源代码]

事后看来,我的 Tomcat 内存不足,所以现在最好增加 Java 的可用内存

cd /usr/share/tomcat6/bin/
sudo  cp setenv.sh setenv-`date +%b-%d-%Y`.sh

# Edit setenv.sh with your favourite vim ;) 
sudo vim setenv.sh

我将我的更改为

export JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m"


cd


这里“事后看来”是指,升级后,OC311 正常启动,但在进行了一些小测试后,由于 PermMemory 超出错误,程序冻结了。这导致 OC、Tomcat 和 Apache 都冻结了。太糟糕了!

现在...

[编辑 | 编辑源代码]

期待已久的时刻!

(最好在加载时留意 Tomcat,所以……)

sudo invoke-rc.d tomcat6 start && \
tail -n100 -f /var/lib/tomcat6/logs/catalina.out

如果一切按计划进行,那么您应该

1/ 看到缓慢的启动,因为新应用程序需要部署……

过了一会儿

...

2/ 您应该开始看到大量有关数据库迁移的提示。

不要惊慌!

不要碰任何东西!

在此时中止操作将毁坏您的数据库。

在某个时刻,您将达到涅槃

INFO: Server startup in 49318 ms

(您的里程数可能会有所不同……)

走到您老板那里,炫耀您新安装的、功能完备的 OC311。

现在……回到工作岗位! ;)

享受!

可能的提示

[编辑 | 编辑源代码]

您可能会看到的一些提示,以及如何处理它们。

1/ 如果您收到失败提示:DBMS Precondition failed: expected oracle, got postgresql

不用担心……它们只是信息。

2/ AbandonedObjectPool is used

也是信息。

3/ SLF4J: The requested version 1.5.11 by your slf4j binding is not compatible with [1.5.5, 1.5.6] SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.

更棘手。它是一个非常无害但完全没有信息性的信息。我在这方面浪费了很多时间(甚至发布了一个错误通知),最终却发现它毫无意义。SLF4J 不是问题。它警告了此日志程序的版本问题,但对 OC 或 Tomcat 的加载或功能没有任何影响。所以,别担心,尝试在别处寻找错误源。

4/ GRAVE: Error listenerStart

- 或 -

GRAVE: A web application created a ThreadLocal

好吧,这些是真正的失败提示。回到起点。检查流程,检查我的教程(我可能遗漏了一些东西)。

如果情况更糟,请将您的 VM 恢复到快照,或从备份中恢复您的 OC304。

华夏公益教科书