跳轉到內容

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) <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 中瞭解更多關於此的資訊。

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

華夏公益教科書