OpenClinica 用户手册/Ubuntu10Upgrade
我不会介绍 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
# 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 # (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`
# 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 的可用内存
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。