Мой блог
Как установить OpenEMR на Ubuntu 24.04 Server

OpenEMR представляет собой мощное программное обеспечение с открытым исходным кодом, предназначенное для ведения электронных медицинских карт и комплексного управления медицинскими практиками. Эта платформа объединяет функции ведения медицинских историй пациентов, планирования расписания визитов, электронного биллинга, а также полную поддержку интернационализации. Решение имеет официальную сертификацию ONC, что означает его полное соответствие жестким стандартам Управления национального координатора по информационным технологиям здравоохранения. В данном подробном руководстве рассмотрен процесс развертывания OpenEMR на сервер под управлением операционной системы Ubuntu 24.04 с использованием классического стека LEMP, в который входят Linux, Nginx, MariaDB и PHP-FPM. Дополнительно описаны процедуры обеспечения безопасности веб-приложения с помощью защищенного протокола HTTPS на базе сертификатов Let’s Encrypt, а также настройка сетевых портов HTTP и HTTPS через системный брандмауэр UFW.

Предварительные требования
Для успешного выполнения всех шагов и развертывания медицинского решения вам потребуется предварительно подготовить следующее окружение:
- Сервер под управлением операционной системы Ubuntu 24.04.
- Учетная запись обычного пользователя, не обладающего правами root, но имеющего административные привилегии для выполнения команд через sudo.
- Зарегистрированное доменное имя, которое уже корректно указывает на публичный IP-адрес вашего сервера.
Установка зависимостей стека LEMP
Поскольку платформа OpenEMR разработана как веб-приложение на языке программирования PHP с использованием базы данных MySQL, для ее успешного функционирования необходимо предварительно инсталлировать соответствующие системные компоненты. В рамках этого руководства вы будете запускать OpenEMR в связке со стеком LEMP. Для этого все необходимые пакеты устанавливаются напрямую через стандартный менеджер пакетов APT.
Чтобы начать установку, выполните в терминале команду обновления локального индекса пакетов Ubuntu, а затем установите сам стек LEMP, включая веб-сервер Nginx, сервер баз данных MariaDB, процессор PHP-FPM и расширенный набор необходимых PHP-модулей:

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Когда система выведет запрос на подтверждение операции, введите латинскую букву Y и нажмите Enter для продолжения инсталляции. Как только процесс установки всех компонентов завершится, обязательно проверьте текущий статус службы nginx с помощью утилиты управления системными службами systemctl. Убедитесь, что веб-сервер успешно запущен и добавлен в автоматическую загрузку при старте системы:
sudo systemctl is-enabled nginx
sudo systemctl status nginxПосле этого аналогичным образом проверьте состояние службы базы данных mariadb. Утилита должна подтвердить, что сервер MariaDB активен и запущен на вашем сервере Ubuntu:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadbНа завершающем этапе проверки базовых зависимостей убедитесь в работоспособности службы интерпретатора PHP-FPM версии 8.3:

sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpmНастройка PHP-FPM
После того как все компоненты стека LEMP успешно установлены в систему, необходимо выполнить тонкую настройку PHP-FPM. Для этого требуется отредактировать главный конфигурационный файл php.ini, перезапустить саму службу PHP-FPM и применить внесенные изменения.
Откройте конфигурационный файл php.ini с помощью популярного текстового редактора nano:

sudo nano /etc/php/8.3/fpm/php.iniВнесите изменения в стандартные параметры конфигурации, заменив их на рекомендуемые значения. Обязательно скорректируйте параметр memory_limit в соответствии с реальным объемом оперативной памяти (RAM), установленной на вашем сервере:
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, чтобы изменить владельца группы для системного каталога сессий PHP /var/lib/php/sessions на пользователя www-data:
sudo chgrp -R www-data /var/lib/php/sessionsВ завершение настройки PHP перезапустите службу php8.3-fpm с помощью следующей команды, чтобы применить все изменения к вашей среде PHP-FPM:

sudo systemctl restart php8.3-fpmНастройка сервера MariaDB
Теперь, когда среда PHP полностью настроена, перейдем к конфигурации сервера MariaDB и созданию отдельной базы данных для работы приложения OpenEMR. На этом этапе вы сначала защитите сервер баз данных с помощью специальной утилиты mariadb-secure-installation, а затем создадите новую базу и пользователя через консольный клиент MariaDB.
Сначала запустите утилиту первичной безопасности сервера баз данных:
sudo mariadb-secure-installationВ процессе работы скрипта у вас поочередно запросят следующие действия для повышения уровня безопасности:

- Нажмите клавишу ENTER для продолжения настройки сервера MariaDB.
- Введите
Yдля установки надежного пароля системного администратора root, после чего введите и подтвердите ваш пароль. - Введите
Yдля удаления анонимных пользователей. - Введите
Yдля отключения возможности удаленного входа для учетной записи root. - Введите
Yдля удаления стандартной тестовой базы данных и отзыва прав доступа к ней. - Введите
Yдля окончательного завершения конфигурации и перезагрузки таблиц привилегий.
После того как сервер MariaDB будет полностью защищен, необходимо создать новую базу данных и отдельного пользователя, которые будут задействованы при инсталляции OpenEMR. Выполните вход на сервер баз данных под учетной записью root, используя следующую команду, и введите ваш пароль администратора при появлении запроса:
sudo mariadb -u root -pВ командной строке клиента MariaDB выполните следующие SQL-запросы для создания новой базы данных openemr, создания пользователя openemruser с безопасным паролем Your_password2, а также для выдачи всех необходимых прав. Вы можете свободно изменить эти данные на собственные при необходимости:
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 и загрузите архив с исходным кодом OpenEMR актуальной версии 7.0.2 с помощью утилиты wget:
cd /var/www/
wget https://sourceforge.net/projects/openemr/files/OpenEMR%20Current/7.0.2/openemr-7.0.2.tar.gzКак только загрузка архива будет завершена, выполните команду tar для распаковки файлов исходного кода, а затем переименуйте появившуюся директорию в стандартное имя 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
Сразу после загрузки исходного кода приложения вам потребуется создать новый конфигурационный файл виртуального хоста (серверного блока) Nginx, который будет использоваться для обработки входящих запросов к вашему экземпляру OpenEMR. Перед началом убедитесь, что ваше доменное имя полностью настроено и указывает на публичный IP-адрес вашего сервера.
Создайте новый файл конфигурации серверного блока Nginx по пути /etc/nginx/sites-available/openemr с помощью текстового редактора nano:
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В завершение перезапустите веб-сервер Nginx с помощью утилиты systemctl, чтобы применить все новые параметры:
sudo systemctl restart nginxЗащита OpenEMR с помощью HTTPS
На этом этапе вы установите утилиту Certbot и защитите ваше веб-приложение OpenEMR с помощью надежного шифрования HTTPS. Данный метод корректно работает только в том случае, если вы используете публичное доменное имя и сервер, имеющий выход в интернет. Для локальных серверов или изолированных сред разработки допускается использование самоподписанных сертификатов.

Перед началом настройки TLS-сертификатов выполните команду для брандмауэра ufw, чтобы разрешить входящие подключения для профиля Nginx Full. Успешное выполнение команды подтвердит соответствующее сообщение:
sudo ufw allow 'Nginx Full'Затем установите саму утилиту certbot и специальный плагин python3-certbot-nginx с помощью пакетного менеджера APT. Подтвердите установку, введя Y:

sudo apt install certbot python3-certbot-nginx -yКак только процесс установки завершится, запустите команду Certbot для автоматической генерации SSL-сертификатов и настройки безопасного подключения для вашего домена:
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 на сервере под управлением операционной системы Ubuntu 24.04. Платформа полностью развернута и функционирует на базе высокопроизводительного стека, включающего веб-сервер Nginx, процессор PHP-FPM и сервер баз данных MariaDB. Кроме того, вы обеспечили высокий уровень безопасности вашего медицинского приложения, настроив шифрование трафика по протоколу HTTPS с помощью Certbot и службы Let’s Encrypt.

Источник: howtoforge.com

