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 --versionpip 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) <falcon@gnu.org> 發行,其指紋為 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) <falcon@gnu.org>" [ultimate] gpg: aka "Luis Falcon (GNU Health) <lfalcon@gnusolidario.org>" [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:///: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.python.club.tw/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://: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 模組,然後單擊 標記為安裝。
單擊 操作圖示(兩個齒輪,以前的版本使用一個藍色旋轉的正方形),然後選擇 執行待定安裝/升級

步驟 5:單擊 操作圖示後,執行待定安裝/升級 Tryton 將自動選擇安裝所需的所有依賴模組

步驟 5/6:要安裝的包,開始升級按鈕 單擊 開始升級。此過程需要一段時間,具體取決於安裝 GNU Health 的計算機。完成後,將顯示以下訊息。

步驟 6,系統升級完成
您需要做的下一件事是建立初始公司,這將是您的醫療中心。您將看到一個嚮導來建立它。

按 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 的初始安裝。在下一章中,我們將討論如何透過安裝其他模組來新增功能。


