跳轉到內容

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。

華夏公益教科書