メインコンテンツへスキップ

Fedora CoreOS

このガイドでは、Fedora CoreOSサーバーにMyEMSをデプロイする方法を説明します。

前提条件

このガイドは、Fedora CoreOS 40にMyEMSをインストールする手順を記載しています。ハードウェア要件は選択したデータベースやシステムに接続されるデバイスの数に依存します。MyEMSとMySQLを単一マシンで実行する場合、少なくとも8GBのRAMが必要です。

システムを更新し、必要なツールをインストールします:

rpm-ostree install git
rpm-ostree install python3
rpm-ostree install python3-pip
rpm-ostree install nginx

ソースコードをクローンします:

cd ~
git clone https://github.com/myems/myems

ステップ1 データベース

データベース を参照してください。

ステップ2 myems-api

  • myems-apiサービスをインストールします:
sudo cp -r ~/myems/myems-api /var/myems-api
cd /var/myems-api
sudo pip install -r requirements.txt

example.envファイルを基に.envファイルを作成し、必要に応じて編集します:

sudo cp /var/myems-api/example.env /var/myems-api/.env
sudo nano /var/myems-api/.env

ファイアウォールにポートを追加します:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

systemd設定ファイルを配置します:

sudo cp /var/myems-api/myems-api.service /etc/systemd/system/
sudo cp /var/myems-api/myems-api.socket /etc/systemd/system/
sudo cp /var/myems-api/myems-api.conf /usr/lib/tmpfiles.d/

次に、サービスを有効にして起動時に自動実行されるようにします:

sudo systemctl enable myems-api.socket
sudo systemctl enable myems-api.service

サービスを起動します:

sudo systemctl start myems-api.socket
sudo systemctl start myems-api.service

ステップ3 myems-admin

nginxサービスを有効にします:

sudo systemctl start nginx.service
  • NGINXを設定します
sudo nano /etc/nginx/nginx.conf

'http'セクション内に以下のディレクティブを追加します:

http {
client_header_timeout 600;
client_max_body_size 512M;
gzip on;
gzip_min_length 512;
gzip_proxied any;
gzip_types *;
gzip_vary on;
proxy_buffering off;
...

}

/etc/nginx/conf.d/配下に新しいファイルを作成します:

sudo nano /etc/nginx/conf.d/myems-admin.conf

以下のディレクティブを記述します。myems-apiサービスが別のサーバーにホストされている場合は、デフォルトのURL(http://127.0.0.1:8000/)を実際のURLに置き換えてください:

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## CORSエラーを回避するため、Nginxを使用してmyems-apiをパス/apiにプロキシします。
## 'server'内に別のlocation /apiを追加します。
## myems-apiサービスが別のサーバーにホストされている場合は、デフォルトのURL(http://127.0.0.1:8000/)を実際のURLに置き換えてください。
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • myems-adminをインストールします: サーバーがインターネットに接続できない場合は、myems/myems-adminフォルダを圧縮してサーバーにアップロードし、~/myems/myems-adminに解凍してください。
sudo mkdir /var/www
sudo cp -r ~/myems/myems-admin  /var/www/myems-admin
sudo chmod 0755 -R /var/www/myems-admin

設定ファイルを確認し、必要に応じて変更します:

sudo nano /var/www/myems-admin/app/api.js
注意

'upload'フォルダはユーザーがアップロードしたファイル用です。myems-adminをアップグレードする際に、このフォルダを削除/移動/上書きしないでください。

 /var/www/myems-admin/upload

ポートを開放し、ファイアウォールに追加します:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

nginxサービスを再起動します:

sudo systemctl restart nginx.service
ヒント

nginxで「403 Forbidden」エラーが発生した場合、SELinuxモードを変更することで修正できる場合があります。コマンド:sudo setenforce 0

ステップ4 myems-modbus-tcp

このステップでは、myems-modbus-tcpサービスをインストールします。

sudo cp -r ~/myems/myems-modbus-tcp /var/myems-modbus-tcp
cd /var/myems-modbus-tcp
sudo pip install -r requirements.txt

example.envファイルを.envにコピーし、.envファイルを編集します:

sudo cp /var/myems-modbus-tcp/example.env /var/myems-modbus-tcp/.env
sudo nano /var/myems-modbus-tcp/.env

main.pyファイルを修正します:

fh = RotatingFileHandler('/var/myems-modbus-tcp.log', maxBytes=1024*1024, backupCount=1)

systemdサービスを設定します:

sudo cp myems-modbus-tcp.service /etc/systemd/system/

サービスを有効にします:

sudo systemctl enable myems-modbus-tcp.service

サービスを起動します:

sudo systemctl start myems-modbus-tcp.service

サービスを監視します:

sudo systemctl status myems-modbus-tcp.service

ログを表示します:

cat /myems-modbus-tcp.log

ステップ5 myems-cleaning

このステップでは、myems-cleaningサービスをインストールします。

sudo cp -r ~/myems/myems-cleaning /var/myems-cleaning
cd /var/myems-cleaning
sudo pip install -r requirements.txt

example.envファイルを.envにコピーし、.envファイルを編集します:

sudo cp /var/myems-cleaning/example.env /var/myems-cleaning/.env
sudo nano /var/myems-cleaning/.env

main.pyファイルを修正します:

fh = RotatingFileHandler('/var/myems-cleaning.log', maxBytes=1024*1024, backupCount=1)

systemdサービスを設定します:

sudo cp /var/myems-cleaning/myems-cleaning.service /etc/systemd/system/

サービスを有効にします:

sudo systemctl enable myems-cleaning.service

サービスを起動します:

sudo systemctl start myems-cleaning.service

サービスを監視します:

sudo systemctl status myems-cleaning.service

ログを表示します:

cat /myems-cleaning.log

ステップ6 myems-normalization

このステップでは、myems-normalizationサービスをインストールします。

sudo cp -r ~/myems/myems-normalization /var/myems-normalization
cd /var/myems-normalization
sudo pip install -r requirements.txt

example.envファイルを.envにコピーし、.envファイルを編集します:

sudo cp /var/myems-normalization/example.env /var/myems-normalization/.env
sudo nano /var/myems-normalization/.env

main.pyファイルを修正します:

fh = RotatingFileHandler('/var/myems-normalization.log', maxBytes=1024*1024, backupCount=1)

systemdサービスを設定します:

sudo cp /var/myems-normalization/myems-normalization.service /etc/systemd/system/

サービスを有効にします:

sudo systemctl enable myems-normalization.service

サービスを起動します:

sudo systemctl start myems-normalization.service

サービスを監視します:

sudo systemctl status myems-normalization.service

ログを表示します:

cat /myems-normalization.log

ステップ7 myems-aggregation

このステップでは、myems-aggregationサービスをインストールします。

sudo cp -r ~/myems/myems-aggregation /var/myems-aggregation
cd /var/myems-aggregation
sudo pip install -r requirements.txt

example.envファイルを.envにコピーし、.envファイルを編集します:

sudo cp /var/myems-aggregation/example.env /var/myems-aggregation/.env
nano /var/myems-aggregation/.env

main.pyファイルを修正します:

fh = RotatingFileHandler('/var/myems-aggregation.log', maxBytes=1024*1024, backupCount=1)

systemdサービスを設定します:

sudo cp /var/myems-aggregation/myems-aggregation.service /etc/systemd/system/

サービスを有効にします:

sudo systemctl enable myems-aggregation.service

サービスを起動します:

sudo systemctl start myems-aggregation.service

サービスを監視します:

sudo systemctl status myems-aggregation.service

ログを表示します:

cat /myems-aggregation.log

ステップ8 myems-web

このステップでは、myems-web UIサービスをインストールします。

デフォルトファイルを削除します:

sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/conf.d/default.conf

/etc/nginx/conf.d/配下に新しいファイルを作成します:

sudo nano /etc/nginx/conf.d/myems-web.conf

以下のディレクティブで新しい'server'セクションを追加します:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# ページリフレッシュ時の404エラーを回避するためtry_filesディレクティブを追加
try_files $uri /index.html;
}
## CORSエラーを回避するため、Nginxを使用してmyems-apiをパス/apiにプロキシします。
## 'server'内に別のlocation /apiを追加します。
## myems-apiサービスが別のサーバーにホストされている場合は、デフォルトのURL(http://127.0.0.1:8000/)を実際のURLに置き換えてください。
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • MyEMS Web UIをインストールします:

NodeJSを設定します:

sudo dnf install nodejs

config.jsファイルを編集します:

注釈

mapboxTokenはhttps://mapbox.com で取得した後、showOnlineMapをtrueに設定してください。オンラインマップ機能を無効にしたい場合は、showOnlineMapをfalseに設定します。

cd ~/myems/myems-web
sudo nano src/config.js

ビルドと圧縮を実行します:

sudo npm i --unsafe-perm=true --allow-root --legacy-peer-deps
sudo npm run build

インストールを実行します: ファイルをWebサーバーにアップロードします。なお、以下のパスはnginx.confで設定したパスと一致させてください。

sudo mv build  /var/www/myems-web

ポートを開放し、ファイアウォールに追加します:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload

nginxサービスを再起動します:

sudo systemctl restart nginx.service
ヒント

nginxで「500 Internal Server Error」エラーが発生した場合、SELinuxモードを変更することで修正できる場合があります。コマンド:sudo setenforce 0

インストール後

おめでとうございます!これでMyEMS Admin UIとWeb UIにログインできるようになりました。

デフォルトポート

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

サーバーアドレスが192.168.1.8である場合(実際のサーバーアドレスに置き換えてください):

デフォルトパスワード

MyEMS Admin UI

  • ユーザー名:
administrator
  • パスワード:
!MyEMS1

MyEMS Web UI

  • ユーザー名:
administrator@myems.io
  • パスワード:
!MyEMS1

トラブルシューティング