跳转到内容

GNU Health/安装

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



最新的稳定GNU Health Federation生态系统使用以下主要资源

  • 操作系统:GNU/Linux 或 FreeBSD 用于服务器。
  • RDBMS 数据库:PostgreSQL >= 10.x
  • 面向文档的数据库,用于健康信息系统/人员主索引:PostgreSQL  :>= 10.x
  • Python:>= 3.6
  • uwsgi : >=2.0
  • Flask : 1.0
  • Tryton 6.0
  • Bash shell
  • PIP for Python 3,通过以下命令验证
    pip --version
    
    您应该看到python3,如:
    pip x.x.x from /usr/local/lib/python3.6/site-packages (python 3.6)
    如果看到 python2.x,则停止并获取适用于 Python 3 的 pip。

在继续之前,请阅读勘误章节,了解安装或升级过程中涉及的最新问题。

在 GNU/Linux 和 FreeBSD 上安装 GNU Health

[编辑 | 编辑源代码]

操作系统需求

[编辑 | 编辑源代码]

下表包含设置操作系统以进行标准 GNU Health 安装的说明。列表中显示的操作系统及其版本已使用每个操作系统的说明进行测试。

不同操作系统和发行版的安装说明是在全新安装上完成的。为了简单起见,服务器环境是在没有 GUI 的情况下安装的。没有配置防火墙(我们将在安全部分介绍),并且安装了 OpenSSH 服务器。

此处编写的说明已应用于以下操作系统,并经过验证。

操作系统 版本 链接 备注
openSUSE Leap 15.4 openSUSE 设置
FreeBSD FreeBSD 12.1 FreeBSD 设置
CentOS 7.8 CentOS 设置
Ubuntu 20.04 Ubuntu 设置
Armbian 20.05 Armbian 设置
Debian 10.1 Debian 设置

设置网络时间协议 (NTP)

[编辑 | 编辑源代码]

为了正确运行 GNU Health,您需要确保服务器(数据库和中央实例)和客户端上的时间都已正确设置并同步。最好的方法是将您的时钟与NTP 服务器同步。

这是至关重要的一步,不仅是为了 GNU Health 的顺利运行,而且还因为许多文档都与时间戳相关联,这些时间戳可能具有法律效力。

创建操作系统用户

[编辑 | 编辑源代码]

以下步骤将创建 GNU Health 操作系统用户。请注意,许多操作系统允许您在安装时创建普通用户。如果您已经创建了“gnuhealth”操作系统用户,您可以跳过本节,否则,现在创建它。

root身份运行以下命令

adduser gnuhealth

注意:如果您的操作系统包含 adduser 命令,您可以使用 useradd 命令

useradd -m gnuhealth

验证 PostgreSQL 身份验证方法

[编辑 | 编辑源代码]

注意:如果您在FreeBSD上进行了标准安装,则可以跳过本节。

PostgreSQL 使用不同的身份验证方法(MD5、ident、trust 等)。根据操作系统的不同,postgreSQL 服务器的身份验证方法也会有所不同。

标准的 GNU Health 安装使用trust 身份验证方法,因此您需要检查 postgreSQL 身份验证文件配置。

找到pg_hba.conf 文件并验证是否已设置trust 方法。此配置文件的位置因操作系统而异;在 UNIX/Linux 上,可以使用以下命令获取文件的完整路径名,该命令应以root 身份执行

su - postgres -c "psql -t -P format=unaligned -c 'show hba_file'"

您可能需要至少启动一次 postgres 服务器,因为此文件可能在首次启动期间创建。通常,此文件位于 /etc/postgresql/10/main/var/lib/pgsql/data 中。

以下行给出了一个指定使用trust 方法的配置文件条目示例

local all all trust

以下示例特别可能解决在 Tryton 客户端首次使用时(参见下文;症状:“创建”按钮未显示)创建 GNU Health 数据库时报告的建立工作数据库连接的问题

host all all 127.0.0.1/32 trust
host all all ::1/128      trust

确保您以用户 'postgres' 而不是 root 身份编辑文件。否则,postgres 可能难以读取更改后的文件。对文件进行任何更改后,需要重新启动 postgreSQL 服务器。

许多身份验证错误(例如,数据库连接错误)是由于未正确配置此文件造成的。当然,您可以使用其他身份验证方法,并且可以将 tryton/GNU Health 配置文件适应每种方法。为简单起见,我们基于本书中的一个特定方法(trust)来编写文档和示例文件。

确保您重新启动 postgresql 服务器

sudo service postgresql restart

创建数据库用户

[编辑 | 编辑源代码]

以下命令切换到 postgres 管理员用户,并为新创建的 gnuhealth 管理员授予权限

root 身份执行

su - postgres -c "createuser --createdb --no-createrole --no-superuser gnuhealth"

下载并安装 GNU Health

[编辑 | 编辑源代码]

运行 GNU Health 安装程序

[编辑 | 编辑源代码]
成为 gnuhealth 用户
[编辑 | 编辑源代码]
su - gnuhealth
cd $HOME
从 GNU.org 下载 GNU Health
[编辑 | 编辑源代码]
wget https://ftp.gnu.org/gnu/health/gnuhealth-latest.tar.gz
验证软件包签名
[编辑 | 编辑源代码]

如果您尚未这样做,请先获取签名密钥

gpg --recv-key  --keyserver  keyserver.ubuntu.com 0xC015E1AE00989199

该密钥由 Luis Falcon (meanmicio at GNU) <[email protected]> 发行,其指纹为 ACBF C80F C891 631C 68AA 8DC8 C015 E1AE 0098 9199。可以通过以下方式查看此信息

gpg --with-fingerprint --list-keys 0xC015E1AE00989199

然后,使用匹配的最新版本号验证签名。例如,如果最新的 GNU Health 版本是 4.0.4,那么

下载分离签名

wget https://ftp.gnu.org/gnu/health/gnuhealth-4.0.4.tar.gz.sig

使用分离签名验证软件包

gpg --verify gnuhealth-4.0.4.tar.gz.sig gnuhealth-latest.tar.gz

如果文件已正确验证,则输出应类似于

 gpg: Signature made Sat 01 Jul 2017 11:06:25 PM WEST
 gpg:                using RSA key ACBFC80FC891631C68AA8DC8C015E1AE00989199
 gpg: Good signature from "Luis Falcon (GNU) <[email protected]>" [ultimate]
 gpg:                 aka "Luis Falcon (GNU Health) <[email protected]>" [ultimate]

重要的是 Good signature from "Luis Falcon ...."。WARNING 意味着,即使文件和签名已通过正确验证,您也不信任该密钥;这没关系。您可以在 GNU Privacy Handbook, Chapter 3. Key Management 中了解更多关于此的信息。

解压缩 GNU Health HMIS 软件包
[编辑 | 编辑源代码]
tar xzf gnuhealth-latest.tar.gz
更改到与您的版本匹配的 GNU Health 安装目录
[编辑 | 编辑源代码]
cd gnuhealth-4.0.4
下载最新的 GNU Health 安装程序
[编辑 | 编辑源代码]
wget -qO- https://ftp.gnu.org/gnu/health/gnuhealth-setup-latest.tar.gz | tar -xzvf -
运行 GNU Health 安装程序
[编辑 | 编辑源代码]
bash ./gnuhealth-setup install

Debian 系列:如何解决每次使用 pip3 时出现的 "error: externally-managed-environment" 错误?

  • 或者删除文件 /usr/lib/python3.x/EXTERNALLY-MANAGED
  • 或者使用 pip 的参数 --break-system-packages
  • 或者在 ~/.config/pip/pip.conf 中添加以下行:[global] break-system-packages = true
为 GNU Health 管理员启用 BASH 环境
[编辑 | 编辑源代码]

最后,为 gnuhealth 用户启用 BASH 环境。

source ${HOME}/.gnuhealthrc

为 JSON-RPC 协议激活网络设备

[编辑 | 编辑源代码]

Tryton GNU Health 服务器监听 localhost 的 8000 端口,不允许其他工作站直接连接。如有必要,输入以下内容

editconf

您可以编辑 [web] 部分中的参数 listen,以激活网络设备,以便网络中的工作站可以连接。例如,以下块

[web]
listen = *:8000

将允许您连接到系统不同设备中的服务器。

为附件设置本地目录

[编辑 | 编辑源代码]

默认情况下,Tryton 使用系统范围内的目录来存储附件。建议在 GNUHealth 中将附件保存在 gnuhealth 用户空间中。

如有必要,编辑服务器配置文件 trytond.conf,并在 [database] 部分中输入附件目录,例如

editconf
[database]
path = /home/gnuhealth/attach

由于 debian 系统通过 UNIX 套接字连接到数据库,因此在 [database] 部分中添加一个额外的 /,例如

[database]
uri = postgresql:///127.0.0.1:5432

配置日志文件(可选)

[编辑 | 编辑源代码]

服务器记录和跟踪事件的方式基于一个日志配置文件,该文件位于配置文件目录 "${GNUHEALTH_DIR}"/tryton/server/config/ 中。

默认情况下,会提供一个名为 gnuhealth_log.conf 的版本。如有必要,将以下内容输入 gnuhealth_log.conf

[formatters]
keys: simple

[handlers]
keys: rotate, console

[loggers]
keys: root

[formatter_simple]
format: [%(asctime)s] %(levelname)s:%(name)s:%(message)s
datefmt: %a %b %d %H:%M:%S %Y

[handler_rotate]
class: handlers.TimedRotatingFileHandler
args: ('/home/gnuhealth/gnuhealth/logs/gnuhealth.log', 'D', 1, 30)
formatter: simple

[handler_console]
class: StreamHandler
formatter: simple
args: (sys.stdout,)

[logger_root]
level: WARNING
handlers: rotate, console

在本例中(以及在标准文件中),日志文件被写入默认的日志目录。您可以更改它以适合您的特定安装。

为了使用日志记录,您需要在下一节调用 Tryton 服务器时,提供--logconf 选项以及日志配置文件gnuhealth_log.conf 的路径作为参数(例如,trytond --logconf "${GNUHEALTH_DIR}"/tryton/server/config/gnuhealth_log.conf)。

有关更多信息,请查看以下资源

初始化数据库实例

[编辑 | 编辑源代码]

创建数据库

createdb health
数据库名称
我们使用 "health" 作为示例,选择您数据库的名称,但请保持简短,并且只包含字母数字字符。

更改到您新安装的系统(使用别名cdexe

cdexe

并初始化实例

python3 ./trytond-admin --all --database=health

您将被要求为 "admin" 用户提供密码。

如果一切顺利,您就可以启动 GNU Health HMIS 节点服务器。

启动 GNU Health HMIS 节点

cd
./start_gnuhealth.sh
Logconf 路径
如前一节所述,使用--logconf [path] 选项指定日志记录配置的路径。

您可以将 GNU Health 服务器在后台运行(使用 nohup ./start_gnuhealth.sh &),并在nohup.out 文件中查看输出。

为 GNU Health 服务器创建 Systemd 服务

[编辑 | 编辑源代码]

如果您使用标准安装方法,可以使用以下脚本使用 systemd 服务自动执行 GNU Health 实例的启动/停止。

GNU Health 服务单元文件

[编辑 | 编辑源代码]

/usr/lib/systemd/system/gnuhealth.service 下创建 GNU Health 单元文件。

对于 Ubuntu 18.04 LTS 用户:/etc/systemd/system/gnuhealth.service

[Unit]
Description=GNU Health Server
After=network.target

[Service]
Type=simple
User=gnuhealth
WorkingDirectory=/home/gnuhealth
ExecStart=/home/gnuhealth/start_gnuhealth.sh
Restart=on-abort

[Install]
WantedBy=multi-user.target

启动和停止 GNU Health 服务

[编辑 | 编辑源代码]

您可以发出以下命令

systemctl start gnuhealth

或者

systemctl stop gnuhealth

启用服务以在启动时启动

[编辑 | 编辑源代码]

如果您希望在每次启动操作系统时自动启动 GNU Health 服务器,可以使用以下命令启用该服务。

systemctl enable gnuhealth

使用 WSGI 服务器进行 GNU Health 医院管理组件

[编辑 | 编辑源代码]

GNU Health HMIS 默认使用 werkzeug 服务器。这仅对开发场景有效。对于生产服务器,GNU Health HMIS 将从 Web Server Gateway Interface (WSGI) 中受益,例如 uWSGI 和支持反向代理的 Web 服务器,如 NGINX。

您的 Trytond 配置文件

[编辑 | 编辑源代码]

编辑您的 trytond.conf 文件以满足要求。您可以使用 gnuhealth 用户的别名 "editconf" 直接编辑此文件。

此示例同时启用了对 GTK 和 webclient 的访问。

[database]
uri = postgresql://127.0.0.1:5432
path = /home/gnuhealth/attach

[web]
listen = localhost:8000
root = /home/gnuhealth/sao/package

uWSGI 配置文件

[编辑 | 编辑源代码]

这是一个用于 gnuhealth uwsgi .ini("gh.ini")文件的示例。确保 NINGX 用户对 uwsgi 套接字具有相应的权限。

[uwsgi]

master = true
processes = 5
plugins = python3

socket = /tmp/uwsgi.sock
chmod-socket=660

module=trytond.application:app

将 NGINX 配置为 GNU Health HMIS 的反向代理

[编辑 | 编辑源代码]

在此示例中,NINGX 将在 HTTPS 模式下监听 8100,以接收来自 Web 客户端的请求。它还监听端口 8000,以供本地 GTK 客户端使用。

# Virtual host for demo web client using TLS and listening in 8100
    server {
        listen       8100 ssl;
        server_name  your_hostname;

        ssl_certificate      /path/to/your/gnuhealth.crt;
        ssl_certificate_key  /path/to/your/gnuhealth.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/tmp/uwsgi.sock;
        }

    # Virtual host for GNU Health GTK Client on 8000 
    server {
        listen       8000;

        location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/tmp/uwsgi.sock;
        }
    }
}


将所有内容整合在一起并启动 GNU Health 服务器

[编辑 | 编辑源代码]

配置完三个要素(Trytond 服务器、uwsgi 和 NGINX)后,就可以将其投入生产了。

  • 确保您的 NGINX 服务器正在运行。
  • 使用相应的 gnuhealth .ini 文件启动 uWSGI。
uwsgi $HOME/gh.ini --enable-threads &

安装 GNU Health 客户端

[编辑 | 编辑源代码]

已在 openSUSE Leap 15.1 和 Tumbleweed 上测试。

  • 禁用非 OSS 存储库
  • 带有 KDE Plasma 的桌面
  • 创建用户 "gnuhealth"
  • 以 "gnuhealth" 用户身份登录
  • 获取所需的软件包/依赖项
   $ sudo zypper install cairo-devel pkg-config python3-devel gcc gobject-introspection-devel python3-cairo python3-gobject-cairo python3-gobject-Gdk typelib-1_0-Gtk-3_0

使用 pip3 安装 GNU Health 客户端

[编辑 | 编辑源代码]
  • 更新 PATH。要使更改永久生效,请在 $HOME/.bashrc 中添加此行。
   $ export PATH=$HOME/.local/bin:$PATH
  • 更新 pip3
   $ pip3 install --upgrade --user pip
  • 安装 GNU Health 客户端
   $ pip3 install --user --upgrade gnuhealth-client


以下命令将启动您的 GNU Health 客户端。

gnuhealth-client

替代方法

[编辑 | 编辑源代码]

系统软件包

[编辑 | 编辑源代码]

除了上面描述的从源代码安装外,您还可以从预构建的软件包中安装 GNU Health 客户端。openSUSE 提供可以使用系统软件包管理器安装的软件包。确保您获取最新的gnuhealth-client 版本 4.0.x

Microsoft Windows 和 macOS

[编辑 | 编辑源代码]

如果您使用 Microsoft Windows 或 macOS,可以尝试使用 Tryton 6.0 客户端,它可能与 GNU Health 4.0 兼容。请注意,Windows 客户端没有 GNU Health 命令,也没有 GNU Health GNUPG 加密或 GNU Health 相机和联合资源定位器等插件。

下载 Tryton 客户端可执行文件 (Windows) 并按照说明进行操作。

登录应用程序

[编辑 | 编辑源代码]
登录屏幕

现在您已返回登录屏幕,您会注意到所选配置文件是您刚刚创建的配置文件。填写登录表单

  • 用户名:您之前使用的用户名(通常为 admin
  • 密码:在上一部分中输入了两次的密码

演示数据库的登录凭据:GNU Health/演示数据库#连接到 GNU Health HMIS 和 LIMS

安装默认模块

[编辑 | 编辑源代码]
步骤 4:health_profile标记为安装按钮

从现在开始,您将使用客户端来完成几乎所有操作。从安装基本功能开始

  1. 创建数据库后,系统会要求您创建一些新用户。您可以暂时跳过此步骤。
  2. 然后,您将看到一个模块列表,这些模块将提供您所需的功能。如果您没有看到模块窗口,请在左侧导航到它:管理 → 模块 → 模块
  3. 选择 health_profile 模块,然后单击 标记为安装
  4. 单击 操作图标(两个齿轮,以前的版本使用一个蓝色旋转的正方形),然后选择 执行待定安装/升级

    步骤 5:单击 操作图标后,执行待定安装/升级
  5. Tryton 将自动选择安装所需的所有依赖模块

    步骤 5/6:要安装的包,开始升级按钮
  6. 单击 开始升级。此过程需要一段时间,具体取决于安装 GNU Health 的计算机。完成后,将显示以下消息。

    步骤 6,系统升级完成

创建公司

[编辑 | 编辑源代码]

您需要做的下一件事是创建初始公司,这将是您的医疗中心。您将看到一个向导来创建它。

创建初始公司

F3 创建新公司。

注意:在派对表格中,请确保您设置机构属性。稍后您将把这家公司与您的主要医疗机构关联起来。请参阅本节中提供的屏幕截图以了解详细信息。

初始配置。创建与派对(医疗机构)相关联的主公司

在生产环境中禁用演示用户

[编辑 | 编辑源代码]

GNU Health 附带一组预定义的用户,用于演示目的。它们都具有 demo_ 前缀(demo_doctordemo_front_deskdemo_nurse...)。

要停用用户

  1. 在侧边栏中导航到管理 > 用户 > 用户。
  2. 在过滤器中,选择 登录:demo_活动:True
  3. 取消设置每个用户的“活动”标志(取消选中“活动”框)。现在,演示用户已在您的环境中停用。
在生产环境中停用演示用户

查看标题为在生产环境中停用演示用户的屏幕截图以了解示例(活动复选框尚未取消选中)。

自定义 GNU Health 客户端

[编辑 | 编辑源代码]

对于 GNU/Linux 和其他免费操作系统,GNU Health GTK 客户端配置文件位于

$HOME/.config/gnuhealth/<VERSION>/gnuhealth-client.conf

例如

$HOME/.config/gnuhealth/4.0/gnuhealth-client.conf

使用自定义问候语/横幅

[编辑 | 编辑源代码]

您可以自定义登录问候语横幅以适合您的机构。

[client] 部分中,使用 png 文件的绝对路径包含横幅参数。

例如

[client]
banner = /home/yourlogin/myhospitalbanner.png

横幅的默认分辨率为 500 x 128 像素。调整您的横幅以使其大小接近此分辨率。

恭喜!您已完成 GNU Health 的初始安装。在下一章中,我们将讨论如何通过安装其他模块来添加功能。

华夏公益教科书