Как установить OpenEMR на Ubuntu 22.04

OpenEMR — это электронная медицинская карта с открытым исходным кодом и инструмент управления медицинской практикой. Он сертифицирован Управлением национального координатора по информационным технологиям в здравоохранении (ONC) и имеет интегрированные медицинские записи, управление практикой, составление расписания, электронный биллинг, интернационализацию, бесплатную поддержку и многое другое. Он позволяет отслеживать демографические данные пациентов, составлять расписание, вести чрезвычайно подробные медицинские записи с отчетами о лабораторных исследованиях, лекарствах и процедурах, отслеживать рецепты, помогать в выставлении счетов за медицинские услуги, генерировать подробные отчеты и поддерживать несколько языков.

В этом руководстве вы узнаете, как установить программу OpenEMR на сервер под управлением Ubuntu 22.04.

Предварительные условия

  • Сервер под управлением Ubuntu 20.04.
  • Пользователь sudo, не являющийся пользователем root.
  • Полное доменное имя (FQDN), например openemr.example.com.
  • Убедитесь, что все обновлено.
    $ sudo apt update
    $ sudo apt upgrade
    
  • Несколько пакетов, необходимых вашей системе.
    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    

    Некоторые из этих пакетов могут быть уже установлены в вашей системе.

Шаг 1 — Настройка брандмауэра

Первым шагом будет настройка брандмауэра. По умолчанию Ubuntu поставляется с ufw (Uncomplicated Firewall).

Проверьте, запущен ли брандмауэр.

$ sudo ufw status

Вы получите следующий результат.

Status: inactive

Разрешите порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.

$ sudo ufw allow OpenSSH

Разрешите также порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Включите брандмауэр

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Еще раз проверьте состояние брандмауэра.

$ sudo ufw status

Вы должны увидеть аналогичный результат.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Шаг 2 — Установите Nginx

Ubuntu поставляется со старой версией Nginx. Чтобы установить последнюю версию, вам нужно загрузить официальный репозиторий Nginx.

Импортируйте ключ подписи Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
	| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий для стабильной версии Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Обновите системные репозитории.

$ sudo apt update

Установите Nginx.

$ sudo apt install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.24.0

Запустите сервер Nginx.

$ sudo systemctl start nginx

Шаг 3 — Установите MySQL

Ubuntu 22.04 поставляется с последней версией MySQL. Вы можете установить ее с помощью одной команды.

$ sudo apt install mysql-server

Проверьте версию MySQL.

$ mysql --version
mysql  Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Этот шаг необходим для MySQL версии 8.0.28 и выше. Войдите в оболочку MySQL.

$ sudo mysql

Выполните следующую команду, чтобы установить пароль для пользователя root. Убедитесь, что в пароле присутствуют цифры, заглавные и строчные буквы, а также специальные символы.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Выйдите из оболочки.

mysql> exit

Запустите сценарий безопасной установки MySQL.

$ sudo mysql_secure_installation

Сначала вас попросят ввести пароль root. Введите его. Далее вам будет предложено установить компонент Validate Password Component. Он проверяет надежность паролей, используемых в MySQL. Нажмите . Y , чтобы установить его. Далее вам будет предложено установить уровень политики проверки паролей. Выберите 2 так как он является самым сильным.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

Далее введите N чтобы отказаться от смены пароля root. Также введите Y чтобы удалить анонимных пользователей, запретить удаленный вход в систему root, удалить тестовую базу данных и перезагрузить таблицы привилегий.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Шаг 4 — Настройка MySQL

Войдите в оболочку MySQL. Введите пароль root при появлении запроса.

$ sudo mysql -u root -p

Создайте пример базы данных.

mysql> CREATE DATABASE openemr;

Создайте учетную запись пользователя SQL.

mysql> CREATE USER 'openemruser'@'localhost' IDENTIFIED BY 'Your_password2';

Предоставьте пользователю все привилегии в базе данных.

mysql> GRANT ALL PRIVILEGES ON openemr.* TO 'openemruser'@'localhost';

Сбросить привилегии пользователя.

mysql> FLUSH PRIVILEGES;

Выход из оболочки.

mysql> exit

Шаг 5 — Установка PHP и его расширений

Ubuntu 22.04 поставляется с версией PHP 8.1.2, которая немного устарела. Мы установим последнюю версию PHP 8.2, используя репозиторий PHP от Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Далее установите PHP и его расширения, необходимые для OpenEMR.

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap imagemagick libtiff-tools php8.2-ldap

Проверьте установку.

$ php --version
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Шаг 6 — Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot из репозитория Ubuntu или взять последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd актуальна.

$ sudo snap install core && sudo snap refresh core

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть запущена, создав символическую ссылку на файл /usr/bin каталог.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Выполните следующую команду, чтобы сгенерировать SSL-сертификат.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d openemr.example.com

Приведенная выше команда загрузит сертификат на /etc/letsencrypt/live/openemr.example.com каталог на вашем сервере.

Создайте группа Диффи-Хеллмана сертификат.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

$ sudo systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из запланированных к запуску служб.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Выполните пробный запуск процесса, чтобы убедиться, что обновление SSL работает нормально.

$ sudo certbot renew --dry-run

Если ошибок нет, все готово. Ваш сертификат обновится автоматически.

Шаг 7 — Загрузите OpenEMR

Посетите сайт Страница загрузки OpenEMR и возьмите ссылку на последнюю версию OpenEMR. Загрузите OpenEMR на сервер.

$ wget https://sourceforge.net/projects/openemr/files/OpenEMR%20Current/7.0.1/openemr-7.0.1.tar.gz

Распакуйте файлы.

$ tar -pxzf openemr-7.0.1.tar.gz

Создайте /var/www/html каталог.

$ sudo mkdir /var/wwww/html -p

Переместите извлеченные файлы в каталог web.

$ sudo mv openemr-7.0.1 /var/www/html/openemr

Дайте права пользователю Nginx на корневой каталог web.

$ sudo chown -R nginx:nginx /var/www/html/openemr

Шаг 8 — Настройка PHP-FPM

Откройте файл /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Нам нужно установить Unix-пользователя/группу процессов PHP на nginx. Найдите user=www-data и group=www-data строки в файле и измените их на nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Найдите listen.owner = www-data и listen.group = www-data строки в файле и измените их на nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Сохраните файл, нажав кнопку Ctrl + X и ввести Y при появлении запроса.

Увеличьте время выполнения PHP-FPM и PHP-CLI до 60 секунд.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.2/fpm/php.ini

Установите значение переменной max_input_time на 1.

$ sudo sed -i 's/max_input_time = 60/max_input_time = -1/' /etc/php/8.2/fpm/php.ini

Увеличьте лимит памяти для PHP-FPM со 128 МБ до 512 МБ.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini

Увеличьте размер загружаемого файла до 30 МБ.

$ sudo sed -i 's/post_max_size = 8M/post_max_size = 30M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 30M/' /etc/php/8.2/fpm/php.ini

Увеличьте максимальное количество входных переменных до 3000.

$ sudo sed -i 's/;max_input_vars = 1000/max_input_vars = 3000/g' /etc/php/8.2/fpm/php.ini

Разрешить доступ, с точки зрения PHP, к локальным файлам с помощью операторов LOAD DATA.

$ sudo sed -i 's/;mysqli.allow_local_infile = On/mysqli.allow_local_infile = On/g' /etc/php/8.2/fpm/php.ini

Перезапустите службу PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Измените группу каталога сессий PHP на Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Шаг 9 — Настройка Nginx

Создайте и откройте файл /etc/nginx/conf.d/openemr.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/openemr.conf

Вставьте в него следующий код.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  openemr.example.com;

    access_log  /var/log/nginx/openemr.access.log;
    error_log   /var/log/nginx/openemr.error.log;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/openemr.example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/openemr.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/openemr.example.com/chain.pem;
    ssl_session_timeout  1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;

    root /var/www/html/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;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  openemr.example.com;
    return 301   https://$host$request_uri;
}

Обратите внимание, что корневой каталог, который будет использоваться в конфигурации Nginx, имеет следующий вид /var/www/html/wallabag/public/.

Сохраните файл, нажав кнопку Ctrl + X и ввести Y при появлении соответствующего запроса.

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Сохраните файл, нажав кнопку Ctrl + X и ввести Y при появлении запроса.

Проверьте синтаксис файла конфигурации Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите службу Nginx.

$ sudo systemctl restart nginx

Шаг 10 — Установите OpenEMR

Откройте URL-адрес https://openemr.example.com в браузере, и вы увидите следующий экран настроек.

Проверка установки OpenEMR

Здесь проверяются права доступа к файлам и подтверждается, можно ли переходить к шагу 1 или нет. Если вы видите слово ready зеленого цвета, это означает, что вы можете продолжить. Нажмите синюю кнопку, чтобы перейти к шагу 1.

Мастер настройки базы данных OpenEMR

На следующей странице вас спросят, хотите ли вы, чтобы программа установки создала базу данных или использовала уже готовую. Выберите опцию Я уже создал базу данных и нажмите кнопку, чтобы перейти к шагу 2.

База данных OpenEMR и сведения об учетной записи

На следующей странице введите учетные данные базы данных, которые вы настроили в шаге 4. Также введите учетные данные учетной записи администратора. Убедитесь, что ваше имя пользователя состоит из 12 или более символов, иначе вы получите ошибку. Вы можете включить двухфакторную аутентификацию (2FA) здесь, но рекомендуется настроить ее позже, после установки. Нажмите кнопку, чтобы создать базу данных и учетную запись пользователя.

OpenEMR Создание базы данных и пользователя

На следующей странице будет показан статус установки, а также имя пользователя и пароль. Нажмите кнопку, чтобы перейти к шагу 4.

OpenEMR Настройка PHP

На следующей странице будут перечислены рекомендуемые и текущие значения из вашего php.ini файла. Убедитесь, что текущие значения удовлетворяют требованиям. Программа установки показывает неверные значения переменных max_input_time и max_execution_time переменные по какой-то причине, даже если вы правильно их задали. Их можно игнорировать. Проверить текущие значения можно с помощью следующих команд.

Проверка значений OpenEMR PHP

Если вы удовлетворены, нажмите кнопку, чтобы перейти к шагу 5.

Настройки OpenEMR Apache

На следующем шаге перечислены настройки сервера Apache, которые мы проигнорируем, поскольку используем сервер Nginx. Нажмите на кнопку, чтобы перейти на следующую страницу.

Выбор темы OpenEMR

Здесь вам будет предложено выбрать тему для панели администрирования. Выберите тему Сохранить актуальность и нажмите кнопку, чтобы продолжить. Впоследствии вы сможете изменить тему из административной панели, но не сможете увидеть, как она выглядит. Если вы выбираете тему на странице установки, вы также можете проверить, как она выглядит, прежде чем выбрать. Мы будем придерживаться темы по умолчанию.

Заключительный шаг установки OpenEMR

На последней странице перечислены последние заметки о программном обеспечении и учетных данных. Нажмите кнопку Начать , чтобы открыть страницу входа в систему.

Страница входа в OpenEMR

Вы получите всплывающее окно регистрации в OpenEMR, чтобы получать объявления с их сайта. Вы можете проигнорировать его, ввести свои учетные данные и нажать кнопку Войти , чтобы получить доступ к приборной панели.

Приборная панель OpenEMR

Если вы не настроили двухфакторную аутентификацию во время установки, сделайте это, нажав на значок аватара в правом верхнем углу и выбрав пункт Управление MFA вариант.

Меню OpenEMR 2FA

На следующей странице выберите метод аутентификации из выпадающего меню и приступайте к настройке.

Страница типа OpenEMR 2FA

С этого момента вы можете начать использовать OpenEMR для управления своим медицинским бизнесом.

Заключение

На этом мы завершаем наш учебник по установке OpenEMR на сервер Ubuntu 22.04. Если у вас остались вопросы, задавайте их в комментариях ниже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *