OpenEMR 是一款开源的健康档案和医疗实践管理解决方案。它集成了电子健康档案、实践管理、排程、电子账单以及国际化支持等功能。OpenEMR 通过了 ONC 认证,这意味着它符合美国国家卫生信息技术协调办公室(ONC)的标准。
本指南将介绍如何在 Ubuntu 24.04 服务器上,结合 LEMP 技术栈(Linux、Nginx、MariaDB 和 PHP-FPM)安装 OpenEMR。同时还会介绍如何使用 Let's Encrypt 的 HTTPS 来保护 OpenEMR,以及通过 UFW(简单防火墙)开放 HTTP 和 HTTPS 端口。
前提条件
在开始本指南之前,请确保你具备以下条件:
- 一台 Ubuntu 24.04 服务器
- 一个具有管理员权限的非 root 用户
- 一个指向服务器 IP 地址的域名
安装 LEMP 依赖项
OpenEMR 是一个基于 PHP 和 MySQL 开发的 Web 应用程序。要安装它,必须确保 PHP 和 MySQL 都已安装。本指南将使用 LEMP 技术栈(Linux、Nginx、MariaDB 和 PHP)来运行 OpenEMR。现在,你将通过 APT 仓库安装这些软件包。
首先,运行以下 apt 命令来更新 Ubuntu 软件包索引并安装 LEMP 技术栈(Linux、Nginx、MariaDB 和 PHP-FPM)。输入 Y 确认安装。
sudo apt update
sudo apt install nginx mariadb-server php-fpm php-mysql php-bcmath php-xml php-zip php-curl php-mbstring php-gd php-tidy php-intl php-cli php-soap imagemagick libtiff-tools php-ldap

安装完成后,使用以下 systemctl 命令检查 nginx 服务状态。确保 Nginx 正在运行且已启用。
sudo systemctl is-enabled nginx
sudo systemctl status nginx

接下来,使用以下命令检查 mariadb 服务。你会看到 MariaDB 服务器在 Ubuntu 服务器上正在运行且已启用。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

最后,使用以下命令检查 php8.3-fpm 服务。你会看到 PHP-FPM 服务正在运行。
sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpm

配置 PHP-FPM
LEMP 技术栈安装完成后,接下来通过编辑 php.ini 文件来配置 PHP-FPM,然后重启 PHP-FPM 服务使更改生效。
使用 nano 编辑器编辑 php.ini 文件。
sudo nano /etc/php/8.3/fpm/php.ini
将以下默认配置替换为以下内容。确保根据你的实际内存调整 memory_limit 的值。
max_execution_time = 60 max_input_time = -1 memory_limit = 512M post_max_size = 30M upload_max_filesize = 30M max_input_vars = 3000 mysqli.allow_local_infile = On
保存文件并退出编辑器。
接下来,运行以下 chgrp 命令,将 /var/lib/php/sessions 目录的所属组更改为 www-data 用户。
sudo chgrp -R www-data /var/lib/php/sessions
最后,使用以下命令重启 php8.3-fpm 服务。这将使你对 PHP-FPM 安装的更改生效。
sudo systemctl restart php8.3-fpm
配置 MariaDB 服务器
PHP 配置完成后,接下来配置 MariaDB 服务器并为 OpenEMR 创建新的数据库。在本节中,你将使用 mariadb-secure-installation 工具来安全配置 MariaDB 服务器,并通过 mariadb 客户端创建新的数据库和用户。
首先,运行以下 mariadb-secure-installation 命令来安全配置你的 MariaDB 服务器。
sudo mariadb-secure-installation
你将被要求进行以下配置:
- 按 Enter 键继续配置 MariaDB 服务器
- 输入 Y 设置 MariaDB root 密码,然后输入并重复你的密码
- 输入 Y 禁止 root 用户的远程登录
- 输入 Y 删除 test 数据库及其权限
- 输入 Y 完成配置
MariaDB 服务器安全配置完成后,你需要创建一个新的数据库和用户,供 OpenEMR 安装使用。
使用以下 mariadb 命令登录 MariaDB 服务器。在提示时输入你的 MariaDB root 密码。
sudo mariadb -u root -p
运行以下查询语句来为 OpenEMR 创建新的数据库和用户。在本例中,你将创建一个名为 openemr 的新数据库,用户名为 openemruser,密码为 password。你可以根据自己的信息调整数据库详情。
CREATE DATABASE openemr; CREATE USER 'openemruser'@'localhost' IDENTIFIED BY 'Your_password2'; GRANT ALL PRIVILEGES ON openemr.* TO 'openemruser'@'localhost'; FLUSH PRIVILEGES;

现在运行以下查询语句来检查 openemruser 的权限。确保该用户可以访问 openemr 数据库。
SHOW GRANTS FOR openemruser@localhost;
最后,输入 quit 退出 MariaDB 服务器。

下载 OpenEMR 源代码
现在你已经配置好了 PHP-FPM 和 MariaDB 服务器,下一步是下载 OpenEMR 源代码并设置正确的权限和所有权。
进入 /var/www 目录,并使用以下 wget 命令下载 OpenEMR 源代码。
cd /var/www/
wget https://sourceforge.net/projects/openemr/files/OpenEMR%20Current/7.0.2/openemr-7.0.2.tar.gz
下载完成后,运行以下 tar 命令解压 OpenEMR 源代码,并将新目录重命名为 openemr。这样,OpenEMR 源代码将存储在 /var/www/openemr 目录中。
tar -pxzf openemr-7.0.2.tar.gz
mv openemr-7.0.2 openemr
最后,运行以下 chown 命令,将 /var/www/openemr 目录的所有权更改为 www-data 用户。
sudo chown -R www-data:www-data /var/www/openemr
设置 Nginx 服务器块
下载 OpenEMR 源代码后,你将创建一个新的 Nginx 服务器块来运行 OpenEMR 安装。请确保你的域名已准备就绪并指向服务器 IP 地址。
使用以下 nano 编辑器命令创建新的 Nginx 服务器块配置文件 /etc/nginx/sites-available/openemr。
sudo nano /etc/nginx/sites-available/openemr
插入以下配置,确保将 server_name 选项更改为你的域名。
server {
listen 80;
server_name openemr.example.com;
access_log /var/log/nginx/openemr.access.log;
error_log /var/log/nginx/openemr.error.log;
root /var/www/openemr;
index index.php;
location / {
try_files $uri $uri/ /index.php;
}
# Pass PHP Scripts To FastCGI Server
location ~* \.php$ {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Depends On The PHP Version
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
include fastcgi_params;
}
# deny access to writable files/directories
location ~* ^/sites/.*/(documents|edi|era) {
deny all;
return 404;
}
# deny access to certain directories
location ~* ^/(contrib|tests) {
deny all;
return 404;
}
# Alternatively all access to these files can be denied
location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php {
deny all;
return 404;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
location ~ /\. {
deny all;
}
}
保存文件并退出编辑器。
现在运行以下命令来激活 openemr 服务器块并验证你的 Nginx 语法。如果语法正确无误,你将看到类似 test is successful - syntax is ok 的输出。
sudo ln -s /etc/nginx/sites-available/openemr /etc/nginx/sites-enabled/
sudo nginx -t

最后,运行以下 systemctl 命令重启 Nginx Web 服务器并应用你的更改。
sudo systemctl restart nginx
使用 HTTPS 保护 OpenEMR
在本节中,你将安装 Certbot 并使用 HTTPS 保护 OpenEMR。这需要你使用公共域名和服务器。在本地服务器或开发环境中,你可以使用自签名证书。
在设置 SSL 之前,运行以下 ufw 命令在服务器上开放 HTTP 和 HTTPS 服务。你将看到类似 success 的输出。
sudo ufw allow 'Nginx Full'
现在使用以下 apt 命令安装 certbot 和 python3-certbot-nginx 插件。输入 Y 确认安装。
sudo apt install certbot python3-certbot-nginx -y
安装完成后,运行以下 certbot 命令来生成 SSL 证书并保护你的 OpenEMR 安装。
sudo certbot --nginx -d openemr.howtoforge.local
过程完成后,你的 SSL 证书将保存在 /etc/letsencrypt/live/domain.com 目录中。同时,你的 OpenEMR 安装将通过 HTTPS 得到保护。
安装 OpenEMR
打开浏览器,通过浏览器访问 https://openemr.howtoforge.local/。
首先,安装程序将检查 OpenEMR 源代码的权限,请确保你拥有正确的权限。

选择 I have created the database 选项来设置你的数据库集成。

输入你的数据库详情以及 OpenEMR 的新管理员账号。

数据库初始化将开始运行,你的管理员用户也将被创建。

接下来,确保你的 PHP 配置满足 OpenEMR 的要求。

安装完成后,你将被重定向到 OpenEMR 登录页面。输入你的管理员用户名和密码,然后点击 Login。

如果登录成功,你将看到以下 OpenEMR 仪表盘。

总结
恭喜!你已成功在 Ubuntu 24.04 服务器上完成了 OpenEMR 的安装。OpenEMR 现已在 PHP-FPM、Nginx Web 服务器和 MariaDB 服务器的支持下运行。你还通过 Certbot 和 Let's Encrypt 为 OpenEMR 配置了 HTTPS 安全保护。