安装¶
本节包含与 DHIS2 系统的安装、管理和维护相关的信息。它提供了如何在各种情况下安装 DHIS2 的信息,包括在线中央服务器、离线本地网络或独立应用程序。
介绍¶
DHIS2 可在 Java JRE 适用的所有平台上运行,其中包括 Linux、Windows 和 Mac 等大多数流行的操作系统。DHIS2 以标准 Java Web 档案(WAR-文件)的形式打包,因此可在 Tomcat 和 Jetty 等任何 Servlet 容器上运行。它将数据写入 PostgreSQL 数据库。建议在支持 Ubuntu LTS 的系统上运行、
本章提供了设置上述技术堆栈的指南。 但是,应将其作为起步和运行的指南,而不是 作为上述环境的详尽文档。我们提到 到官方的Ubuntu,PostgreSQL和Tomcat文档进行深入了解 阅读。
服务器规格¶
DHIS2 是一个数据库密集型应用程序,与内存和 CPU 资源成线性关系。这些建议应被视为起点--更多的资源将提高性能。
按实例大小分列的硬件要求{ #hardware-requirements-by-instance-size }¶
| 零件 | 小实例 | 中型实例 | 大型实例 |
|---|---|---|---|
| RAM | 至少 8 GB | 16 GB | 64GB 或以上 |
| CPU内核 | 4 个内核 | 8 个内核 | 16 个以上内核 |
| 磁盘类型 | 需要固态硬盘 | 需要固态硬盘 | 需要固态硬盘 |
| 存储 | 100 GB+ | 200 GB+ | 500 GB+ |
存储性能要求{ #storage-performance-requirements }¶
**以下是推荐的读取速度:
- 最低:150 兆比特/秒
- 良好:200 兆比特/秒
- 理想:350 兆比特/秒或更高
重要**
存储要求在很大程度上取决于数据量。分析表需要大量空间。规划可扩展的存储空间,以适应增长。
在 Linux 上测试磁盘性能{ #testing-disk-performance-on-linux }¶
您可以使用这些命令对磁盘性能进行基准测试:
# 测试磁盘延迟
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
# 测试磁盘吞吐量
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
# 清理测试文件
rm -v -i /tmp/test1.img /tmp/test2.img
软件需求¶
核心部件{ #core-components }¶
DHIS2 需要以下软件栈:
| 零件 | 版本 | storedBy |
|---|---|---|
| 操作系统 | Ubuntu LTS(推荐) | 任何支持 Java JRE 的操作系统 |
| JavaJDK | OpenJDK 8、11 或 17 | 版本取决于 DHIS2 版本(见下表) |
| PostgreSQL | 13 岁以上(建议 16 岁) | 主要数据库 |
| 地理信息系统后 | 2.2+ (建议使用 3) | PostgreSQL 空间扩展 |
| 汤姆猫 | 8.5.50+ 或 9+ | Servlet 容器 |
| Redis | 4+ | 可选:仅适用于群集设置 |
DHIS2 版本兼容性矩阵{ #dhis2-version-compatibility-matrix }¶
表格DHIS2 版本要求
| DHIS2 版本 | JRE(推荐) | JRE(最低) | 汤姆猫 | Ubuntu LTS |
|---|---|---|---|---|
| 2.42 | 17 | 17 | 10 | 24.04 |
| 2.41 | 17 | 17 | 9 | 22.04 |
| 2.40 | 17 | 11 | 9 | 22.04 |
| 2.38 | 11 | 11 | 9 | 22.04 |
| 2.35 | 11 | 8 | 9 | 22.04 |
| 2.35 前 | 8 | 8 | 9 | 22.04 |
最低与生产设置{ #minimal-vs-production-setup }¶
最小设置(开发/测试): - 带有 DHIS2 WAR 文件的 Tomcat 服务器 - PostgreSQL 数据库
**生产设置**需要额外的考虑: - 监控和警报系统 - 备份和灾难恢复 - 安全加固 - 性能优化 - 可扩展性规划
注
关于生产部署,请参阅下面的 部署选项 部分,了解自动和手动安装指南。
部署选项{ #install_install_approaches }¶
选择最适合您的环境和要求的部署方法。从生产就绪的自动安装到开发和测试环境,每个选项都针对特定的使用情况而设计。
使用 Ansible 自动安装{ #automated-installation-with-ansible }¶
建议用于生产部署
基于 Ansible 的自动化框架,用于在 Ubuntu Linux 服务器上安全、一致地部署 DHIS2。
您将获得:
- 自动设置 PostgreSQL、DHIS2 和网络代理(Nginx/Apache2)
- 内置安全加固和 SSL/TLS 证书管理
- 应用程序性能监控(Glowroot)和服务器监控(Munin)
- 支持单服务器或分布式多服务器架构
- 多实例管理功能
适合:
- 生产环境
- 部署多个 DHIS2 实例的组织
- 需要一致、可重复部署的团队
手动安装{ #manual-installation }¶
用于学习和定制
逐步手动安装,在 Ubuntu 22.04 上完全控制部署过程。
您将获得:
- 深入了解 DHIS2 组件的相互作用
- 全面控制每个配置环节
- 宝贵的故障排除知识
- 灵活满足特殊要求
适合:
- 开发和测试环境
- 学习 DHIS2 基础设施
- 自定义部署方案
注
对于生产环境,我们强烈推荐使用自动安装方法,以确保一致性、安全性和易于管理。
Docker 部署{ #docker-deployment }¶
基于容器的基础设施
一个正在进行的项目正在积极为 DHIS2 开发一个生产就绪的 Docker 部署解决方案。该项目目前正在进行测试,并有望成为在生产环境中部署 DHIS2 的推荐方法。
该解决方案为带有 PostgreSQL、特拉菲克代理和监控工具的 DHIS2 提供全面的 Docker Compose 协调。
您将获得:
- 通过 Let's Encrypt 实现自动 SSL/TLS 的完整基础架构协调
- 可选的监控堆栈:Grafana、Prometheus、Loki
- 内置备份和还原功能
- 常见任务的基于制造的自动化
状态: 准备公开测试。尚未建议用于生产或关键数据。
适合:
- 本地开发和测试
- 概念验证部署
- 熟悉 Docker 基础设施的组织
Kubernetes 部署{ #kubernetes-deployment }¶
高可用性容器协调
Kubernetes 是一个容器编排平台,专为高可用性部署而设计。它能在机器集群中自动部署、扩展和管理容器化应用程序。Kubernetes 集群可在内部部署,也可作为云提供商(如 Amazon EKS、Google GKE、Azure AKS)提供的托管服务使用。
可以在 Kubernetes 集群环境中运行容器化的 DHIS2,包括多个 DHIS2 实例连接到单个数据库的横向扩展设置。不过,这种集群式 DHIS2 部署仍处于试验阶段,在生产环境中并不常用。
Kubernetes的**优势:**
- 根据需求自动缩放
- 自愈能力(容器自动重启)
- 多个实例之间的负载平衡
- 滚动更新,零停机时间
重要考虑因素:
- 在 Kubernetes 上运行 DHIS2 的实际生产经验有限,这意味着可借鉴的社区知识较少
- 建立和管理 Kubernetes 环境需要专业知识
- 如果要部署 Kubernetes,还必须考虑到关键的运行方面,例如
- 备份和灾难恢复战略
- 监控和警报基础设施
- DHIS2 水平扩展配置(如果使用多个实例)
注
用于 DHIS2 的 Kubernetes 部署被视为试验性的。如果你对自己的 Kubernetes 专业知识和操作能力有信心,这可能是一个可行的选择,但要准备好开拓设置的某些方面。