跳转至内容

OpenClinica 用户手册/多实例

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

一个 Web 服务器可以配置为为多个 OpenClinica 实例提供服务。或者,多个 Tomcat 服务器 可以设置在给定的 Web 服务器上。

复制现有实例

[编辑 | 编辑源代码]

可能设置另一个实例的最简单方法是复制现有实例。

  • Gerben 在 设置测试环境 中详细介绍了在 Linux 中使用的一种方法。
  • 备份和还原 详细介绍了如何将现有实例备份和还原到新实例。

从头部署新实例

[编辑 | 编辑源代码]

您可以从头部署新实例,方法类似于部署简单的 OpenClinica 实例。请注意,本文档中的链接适用于 OpenClinica Linux 文档,类似部分可以在 OpenClinica Windows 文档 中找到。

  1. 您需要创建一个名称不同的数据库(只创建数据库,不创建新角色),例如“newtrial”(按照 OpenClinica 安装指南的第 9.1.7 节)。
  1. 复制 OpenClinica war 文件(如 第 9.1.8 节 所示)作为“newtrial.war”(手册的下一节提到了 Web 服务,但我没有使用过)。启动 Tomcat(如果它没有在运行)以部署“newtrial”文件夹和数据库结构。

分离日志文件

[编辑 | 编辑源代码]

您可以通过更新 datainfo.properties 文件来分离不同实例的日志文件,该文件位于

${catalina.home}/webapps/${WEBAPP.lower}/WEB-INF/classes/datainfo.properties

更新 log.dir 行以将日志放在单独的目录中

log.dir=${catalina.home}/logs/newtrial/newtrial

重新启动 Tomcat 中的实例(或 Tomcat 本身)以使这些更改生效。

管理多个实例

[编辑 | 编辑源代码]

要正确停止 OpenClinica 的实例,您需要完全停止 Tomcat。完全停止 Tomcat 后,您可以不受限制地移动文件和更新数据库。当前版本的 OpenClinica (3.1.2) 不会在 Tomcat Manager 中停止实例后清理自身(例如,https://127.0.0.1:8080/manager/html)。运行 多个 Tomcat 服务器 的一个好处是,每个服务器上的实例数量减少了,因此,如果需要通过停止 Tomcat 来停止实例,受影响的实例数量也会减少。

应该权衡设置多个 Tomcat 服务器(优点:每个实例都是独立的;缺点:资源消耗增加 - Tomcat 使用的内存)和每个服务器上服务的实例数量(优点:共享资源使用;缺点:依赖于单个 Tomcat 实例)的优缺点。

确保 Tomcat 不出现内存不足

[编辑 | 编辑源代码]

如果未调整 Tomcat 的配置(增加 MaxPermSize 设置),运行多个实例会导致 Tomcat 出现内存不足。 OpenClinica 的 Linux 文档 指出

"MaxPermSize 值取决于您要部署的 war 文件的数量。Web war 需要 180m 的 PermGen,而 ws war 需要 90m 的 PermGen 内存设置。"(Windows 文档 有类似说明)

PermGen(永久代)内存与常规(堆)内存(即 Linux 中的 Xmx 设置和 Windows 中的“最大池大小”设置)是分开分配的 [1]。因此,如果您的服务器内存不多,您可能需要减少分配给堆的内存,以便可以增加分配给永久代的内存。这可以通过减少 Xmx 设置(在 Linux 中)或“最大池大小”设置(在 Windows 中)并将 MaxPermSize 设置增加等量来实现。

将用户帐户密码复制到新实例

[编辑 | 编辑源代码]

您可以将现有用户密码复制到新实例(以便他们可以在新实例中重复使用其密码)。这可以通过将该用户在“user-account”表中的“passwd”字段的值(实际上是密码的 SHA1 哈希值)从旧实例复制到新实例来实现。如果用户以前从未登录过(例如,您刚刚创建了帐户),您可以将 passwd_timestamp 设置为当前日期(就好像用户刚刚设置了密码一样)。

这与单个实例的效果类似,因为单个用户名和密码可以访问多个研究(但通过不同的 URL)。有一个额外的负担,即如果密码更改,则可能需要在所有实例上重新设置密码。

重复使用密码通常是不好的,特别是如果它们在不同的安全机制下用于不同的目的,例如银行帐户密码重复用于不安全的 OpenClinica 实例,或者实时 OpenClinica 实例密码重复用于不安全的公共 OpenClinica 实例。

华夏公益教科书