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,通过以下命令验证您应该看到python3,如:
pip --version
pip x.x.x from /usr/local/lib/python3.6/site-packages (python 3.6)
如果看到 python2.x,则停止并获取适用于 Python 3 的 pip。
在继续之前,请阅读勘误章节,了解安装或升级过程中涉及的最新问题。
下表包含设置操作系统以进行标准 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 设置 |
为了正确运行 GNU Health,您需要确保服务器(数据库和中央实例)和客户端上的时间都已正确设置并同步。最好的方法是将您的时钟与NTP 服务器同步。
这是至关重要的一步,不仅是为了 GNU Health 的顺利运行,而且还因为许多文档都与时间戳相关联,这些时间戳可能具有法律效力。
只有在您没有在安装操作系统时创建用户的情况下才执行此步骤。 |
以下步骤将创建 GNU Health 操作系统用户。请注意,许多操作系统允许您在安装时创建普通用户。如果您已经创建了“gnuhealth”操作系统用户,您可以跳过本节,否则,现在创建它。
以root身份运行以下命令
adduser gnuhealth
注意:如果您的操作系统不包含 adduser 命令,您可以使用 useradd 命令
useradd -m gnuhealth
注意:如果您在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"
使用新创建的 gnuhealth 用户执行以下步骤,不要使用 root。 |
su - gnuhealth
cd $HOME
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 中了解更多关于此的信息。
tar xzf gnuhealth-latest.tar.gz
cd gnuhealth-4.0.4
wget -qO- https://ftp.gnu.org/gnu/health/gnuhealth-setup-latest.tar.gz | tar -xzvf -
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
最后,为 gnuhealth 用户启用 BASH 环境。
source ${HOME}/.gnuhealthrc
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
)。
有关更多信息,请查看以下资源
- Python 日志记录工具日志记录教程:https://docs.pythonlang.cn/3/howto/logging.html#logging-basic-tutorial
- Tryton 服务器日志记录文档:http://trytond.readthedocs.org/en/latest/topics/logs.html
创建数据库
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
文件中查看输出。
如果您使用标准安装方法,可以使用以下脚本使用 systemd 服务自动执行 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
您可以发出以下命令
systemctl start gnuhealth
或者
systemctl stop gnuhealth
如果您希望在每次启动操作系统时自动启动 GNU Health 服务器,可以使用以下命令启用该服务。
systemctl enable gnuhealth
GNU Health HMIS 默认使用 werkzeug 服务器。这仅对开发场景有效。对于生产服务器,GNU Health HMIS 将从 Web Server Gateway Interface (WSGI) 中受益,例如 uWSGI 和支持反向代理的 Web 服务器,如 NGINX。
编辑您的 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
这是一个用于 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
在此示例中,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;
}
}
}
配置完三个要素(Trytond 服务器、uwsgi 和 NGINX)后,就可以将其投入生产了。
- 确保您的 NGINX 服务器正在运行。
- 使用相应的 gnuhealth .ini 文件启动 uWSGI。
uwsgi $HOME/gh.ini --enable-threads &
已在 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
- 更新 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。
由于 GNU Health 是一款免费/自由软件,主要为免费/自由操作系统开发,并且秉持着自由软件的理念,因此建议将 GNU Health 与免费/自由软件以及 GNU/Linux 或其他免费/自由操作系统一起使用作为客户端。所有 GNU Health 组件(服务器、客户端、插件、Thalamus、GNU Health Federation)的开发都在进行中,并且重点放在免费/自由操作系统上。 |
如果您使用 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
从现在开始,您将使用客户端来完成几乎所有操作。从安装基本功能开始
- 创建数据库后,系统会要求您创建一些新用户。您可以暂时跳过此步骤。
- 然后,您将看到一个模块列表,这些模块将提供您所需的功能。如果您没有看到模块窗口,请在左侧导航到它:管理 → 模块 → 模块。
- 选择 health_profile 模块,然后单击 标记为安装。
单击 操作图标(两个齿轮,以前的版本使用一个蓝色旋转的正方形),然后选择 执行待定安装/升级
Tryton 将自动选择安装所需的所有依赖模块
单击 开始升级。此过程需要一段时间,具体取决于安装 GNU Health 的计算机。完成后,将显示以下消息。
您需要做的下一件事是创建初始公司,这将是您的医疗中心。您将看到一个向导来创建它。
按 F3 创建新公司。
注意:在派对表格中,请确保您设置机构属性。稍后您将把这家公司与您的主要医疗机构关联起来。请参阅本节中提供的屏幕截图以了解详细信息。
出于安全原因,您必须在生产环境中停用演示用户。 |
GNU Health 附带一组预定义的用户,用于演示目的。它们都具有 demo_
前缀(demo_doctor
、demo_front_desk
、demo_nurse
...)。
要停用用户
- 在侧边栏中导航到管理 > 用户 > 用户。
- 在过滤器中,选择
登录:demo_
和活动:True
- 取消设置每个用户的“活动”标志(取消选中“活动”框)。现在,演示用户已在您的环境中停用。
查看标题为在生产环境中停用演示用户的屏幕截图以了解示例(活动复选框尚未取消选中)。
对于 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 的初始安装。在下一章中,我们将讨论如何通过安装其他模块来添加功能。