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。