Rocky Linux 9にOpenEMRをインストールする方法
Rocky Linux 9にOpenEMRをインストールする方法
このページで
- 前提条件
- ステップ1 - ファイアウォールを設定する
- ステップ2 - Nginxをインストールする
- ステップ3 - MySQLをインストールする
- ステップ4 - MySQLを設定する
- ステップ5 - PHPとその拡張機能をインストールする
- ステップ6 - SSLをインストールする
- ステップ7 - OpenEMRをダウンロードする
- ステップ8 - SELinuxの設定
- ステップ8 - PHP-FPMを設定する
- ステップ9 - Nginxを設定する
- ステップ10 - OpenEMRをインストールする
- 結論
OpenEMRは、オープンソースの電子健康記録および医療業務管理ツールです。これは、米国保健情報技術コーディネーター室(ONC)に認定されており、統合健康記録、業務管理、スケジューリング、電子請求、国際化、無料サポートなどの機能を備えています。患者の人口統計を追跡し、患者をスケジュールし、検査結果、処方薬、手順を含む極めて詳細な健康記録を維持し、処方を追跡し、医療請求を支援し、詳細なレポートを作成し、複数言語に対応しています。
このチュートリアルでは、Rocky Linux 9を実行しているサーバーにOpenEMRソフトウェアをインストールする方法を学びます。
前提条件
Rocky Linux 9を実行しているサーバー。
非ルートのsudoユーザー。
完全修飾ドメイン名(FQDN)、例えばopenemr.example.comのような。
すべてが最新であることを確認してください。
sudo dnf update
あなたのシステムに必要ないくつかのパッケージ。
sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
これらのパッケージの一部は、すでにあなたのシステムにインストールされている可能性があります。
ステップ1 - ファイアウォールを設定する
最初のステップはファイアウォールを設定することです。Rocky LinuxはFirewalldファイアウォールを使用しています。ファイアウォールのステータスを確認してください。
sudo firewall-cmd --state
running
ファイアウォールは異なるゾーンで動作し、パブリックゾーンは私たちが使用するデフォルトのゾーンです。ファイアウォールでアクティブなすべてのサービスとポートをリストアップしてください。
sudo firewall-cmd --permanent --list-services
次の出力を表示する必要があります。
cockpit dhcpv6-client ssh
OpenEMRが機能するには、HTTPおよびHTTPSポートが必要です。それらを開いてください。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
変更を適用するためにファイアウォールを再起動してください。
sudo firewall-cmd --reload
もう一度すべてのサービスをリストしてください。
sudo firewall-cmd --permanent --list-services
次の出力を得るべきです。
cockpit dhcpv6-client http https ssh
ステップ2 - Nginxをインストールする
Rocky Linux 9は古いバージョンのNginxを搭載しています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。
公式のNginxリポジトリを作成するために、/etc/yum.repos.d/nginx.repoファイルを作成し、開きます。
sudo nano /etc/yum.repos.d/nginx.repo
そのコードをそこに貼り付けてください。
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Ctrl + Xを押してファイルを保存し、促されたらYと入力します。
Nginxサーバーをインストールします。
sudo dnf install -y nginx
インストールを確認してください。
nginx -v
nginx version: nginx/1.24.0
Nginxサーバーを有効にして起動します。
sudo systemctl enable nginx --now
サーバーのステータスを確認してください。
sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Active: active (running) since Thu 2023-06-15 10:20:00 UTC; 1s ago
Docs: http://nginx.org/en/docs/
Process: 1411 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 1412 (nginx)
Tasks: 2 (limit: 5922)
Memory: 1.9M
CPU: 7ms
CGroup: /system.slice/nginx.service
??1412 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??1413 "nginx: worker process"
ステップ3 - MySQLをインストールする
Rocky Linux 9は最新バージョンのMySQLを搭載しています。単一のコマンドでインストールできます。
sudo dnf install mysql-server
MySQLのバージョンを確認してください。
mysql --version
mysql Ver 8.0.32 for Linux on x86_64 (Source distribution)
MySQLサービスを有効にして起動します。
sudo systemctl enable mysqld --now
MySQLのセキュアインストールスクリプトを実行します。
sudo mysql_secure_installation
Validate Password コンポーネントをインストールするように求められます。それは MySQL で使用されるパスワードの強度をチェックします。インストールするには Y を押してください。次に、パスワード検証ポリシーのレベルを設定するように求められます。最も強力なものとして 2 を選択してください。
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
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
次に、新しいルートパスワードを設定するように求められます。上記の要件に従ってパスワードを入力してください。選択したルートパスワードを続行するように求められたときに、Yを入力してください。
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
次に、匿名ユーザーを削除し、リモートのルートログインを無効にし、テストデータベースを削除し、権限テーブルを再読み込みするには、Yを入力してください。
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シェルにログインします。プロンプトが表示されたら、ルートパスワードを入力してください。
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とその拡張機能をインストールする
OpenEMRを動作させるためにPHP 8.2をインストールする必要があります。最初のステップはEpelリポジトリを取得することです。
sudo dnf install epel-release -y
次に、Remiリポジトリをインストールします。
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
利用可能なPHPストリームを確認してください。
dnf module list php -y
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
デフォルトバージョンは8.1です。RemiのPHP 8.2リポジトリを有効にしてください。
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.2
OpenEMRに必要なPHPと必要な拡張機能をインストールします。
sudo dnf install 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 php-ldap
TIFF Toolsライブラリをインストールします。このライブラリは基本リポジトリにはありませんが、CRB(以前はPowertools)リポにあります。
sudo dnf install libtiff-tools --enablerepo=crb
インストールを確認してください。
php --version
PHP 8.2.7 (cli) (built: Jun 6 2023 21:28:56) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
PHP-FPMサービスを有効にして開始します。
sudo systemctl enable php-fpm --now
ステップ6 - SSLをインストールする
SSL証明書を生成するためにCertbotをインストールする必要があります。それにはSnapdパッケージインストーラーを使用します。Rocky Linuxにはこれが含まれていないので、Snapdインストーラーをインストールしてください。動作にはEPELリポジトリが必要ですが、これは以前にPHPのためにインストールしたので、この手順をスキップできます。
Snapdをインストールします。
sudo dnf install -y snapd
スナップサービスを有効にして開始します。
sudo systemctl enable snapd --now
Snapコアパッケージをインストールし、Snapdのバージョンが最新であることを確認してください。
sudo snap install core && sudo snap refresh core
Snapdが動作するために必要なリンクを作成してください。
sudo ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
次のコマンドを入力してCertbotをインストールしてください。
sudo snap install --classic certbot
次のコマンドを使用して、Certbot コマンドが /usr/bin ディレクトリへのシンボリックリンクを作成することで実行できることを確認してください。
sudo ln -s /snap/bin/certbot /usr/bin/certbot
インストールを確認してください。
certbot --version
certbot 2.6.0
次のコマンドを実行してSSL証明書を生成します。
sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -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が実行予定のサービスの1つとして見つけるでしょう。
NEXT LEFT LAST PASSED UNIT ACTIVATES
-----------------------------------------------------------------------------------------------------------------------------------------
Thu 2023-06-15 12:29:25 UTC 54min left Thu 2023-06-15 11:18:44 UTC 16min ago dnf-makecache.timer dnf-makecache.service
Thu 2023-06-15 12:51:00 UTC 1h 15min left - - snap.certbot.renew.timer snap.certbot.renew.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
抽出したファイルをウェブルートディレクトリに移動してください。
sudo mv openemr-7.0.1 /var/www/html/openemr
ウェブルートディレクトリにNginxユーザーへの権限を付与します。
sudo chown -R nginx:nginx /var/www/html/openemr
ステップ8 - SELinuxの設定
OpenEMRのファイルセキュリティコンテキストを変更する。
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/openemr(/.*)?"
方針を適用してください。
sudo restorecon -Rv /var/www/html/openemr/
NginxがMySQLへのアクセスを許可するようにポリシーを適用してください。
sudo setsebool -P httpd_can_network_connect_db 1
外部ホストへの接続を許可する政策を適用します。これはメールを送信するために必要です。
sudo setsebool -P httpd_can_network_connect 1
ステップ8 - PHP-FPMを設定する
/etc/php-fpm.d/www.confファイルを開いてください.
sudo nano /etc/php-fpm.d/www.conf
PHPプロセスのUnixユーザー/グループを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=nobody、;listen.group=nobody、および;listen.mode=0660の行を見つけて、以下のように変更してください。
; 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
listen.mode = 0660
次に、セミコロンを前に置いて次の行をコメントアウトします。
;listen.acl_users = apache,nginx
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
PHP-FPMとPHP-CLIの実行時間を60秒に増やします。
sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php.ini
変数max_input_timeの値を1に設定してください。
sudo sed -i 's/max_input_time = 60/max_input_time = -1/' /etc/php.ini
PHP-FPMのメモリ制限を128MBから512MBに増やします。
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php.ini
ファイルアップロードのサイズを30MBに増やしてください。
sudo sed -i 's/post_max_size = 8M/post_max_size = 30M/' /etc/php.ini
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 30M/' /etc/php.ini
最大入力変数の数を3000に増やします。
sudo sed -i 's/;max_input_vars = 1000/max_input_vars = 3000/g' /etc/php.ini
PHPの観点から、LOAD DATA文を使用してローカルファイルへのアクセスを許可します。
sudo sed -i 's/;mysqli.allow_local_infile = On/mysqli.allow_local_infile = On/g' /etc/php.ini
PHP-FPMサービスを再起動してください。
sudo systemctl restart php-fpm
PHPセッションディレクトリのグループをNginxに変更します。
sudo chgrp -R nginx /var/lib/php/session
ステップ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-fpm/www.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/openemrです。
作業が完了したら、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 を開くと、以下のセットアップ画面が表示されます。
ここではファイルの権限を確認し、ステップ1に進めるかどうかを確認します。もし緑色でreadyという単語が表示されていれば、進めるということです。青いボタンをクリックしてステップ1に進んでください。
次のページでは、インストーラーにデータベースを作成するか、既に作成されたものを使用するかを尋ねられます。データベースはすでに作成済みですのオプションを選択し、次のステップ2に進むボタンをクリックしてください。
次のページでは、前のステップ4で設定したデータベースの資格情報を入力してください。また、管理者アカウントの資格情報も入力してください。ユーザー名は12文字以上であることを確認してください。さもなければ、エラーが発生します。ここで二要素認証(2FA)を有効にすることができますが、インストール後に設定することをお勧めします。データベースとユーザーアカウントを作成するためのボタンをクリックしてください。
次のページではインストールの状態が表示され、ユーザー名とパスワードが表示されます。ステップ4に進むにはボタンをクリックしてください。
次のページでは、あなたの php.ini ファイルから推奨および現在の値がリストされます。現在の値が要件を満たしていることを確認してください。インストーラーは、正しく設定していても、なぜか max_execution_time 変数の誤った値を表示しますが、それは無視してかまいません。以下のコマンドを使用して現在の値を確認できます。
満足したら、次のステップ5に進むためにボタンをクリックしてください。
次のステップでは、私たちはNginxサーバーを使用しているため無視するApacheサーバーの設定がリストされています。次のページに進むにはボタンをクリックしてください。
ここでは、管理パネル用のテーマを選択するよう求められます。現在のテーマを保持オプションを選択し、次に進むためのボタンをクリックしてください。後で管理パネルからテーマを変更することはできますが、どのように見えるかを確認することはできません。インストーラーページから選択する場合は、選択する前にどのように見えるかを確認することもできます。デフォルトのテーマに留まります。
最後のページには、ソフトウェアとアカウントの資格情報についての最終ノートが記載されています。スタートボタンをクリックして、ログインページを開いてください。
OpenEMRの登録ポップアップが表示され、彼らのサイトからのお知らせを受け取ることができます。無視して、認証情報を入力し、ログインボタンをクリックしてダッシュボードにアクセスしてください。
インストール中に二段階認証を設定していない場合は、右上のアバターアイコンをクリックしてMFA管理オプションを選択することで設定してください。
次のページで、ドロップダウンメニューから認証方法を選択し、設定を開始してください。
ここからOpenEMRを使って健康ビジネスを管理し始めることができます。
結論
これでRocky Linux 9サーバーにOpenEMRをインストールするためのチュートリアルを終了します。質問がある場合は、下のコメントに投稿してください。












