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

Debian/Ubuntu

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

前提条件

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

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

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

ステップ1 データベース

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

ステップ2 myems-api

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

(Ubuntu 24.04 LTS) 上記コマンドが動作しない場合は、以下のコマンドを使用してください: sudo pip install -r requirements.txt --break-system-packages

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

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

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

sudo ufw allow 8000

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

sudo cp /myems-api/myems-api.service /lib/systemd/system/
sudo cp /myems-api/myems-api.socket /lib/systemd/system/
sudo cp /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 ufw allow 8001

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

sudo systemctl restart nginx.service

ステップ4 myems-modbus-tcp

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

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

(Ubuntu 24.04 LTS) 上記コマンドが動作しない場合は、以下のコマンドを使用してください: sudo pip install -r requirements.txt --break-system-packages

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

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

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

sudo cp myems-modbus-tcp.service /lib/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 /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt
注釈

(Ubuntu 24.04 LTS) 上記コマンドが動作しない場合は、以下のコマンドを使用してください: sudo pip install -r requirements.txt --break-system-packages

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

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

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

sudo cp /myems-cleaning/myems-cleaning.service /lib/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 /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt
注釈

(Ubuntu 24.04 LTS) 上記コマンドが動作しない場合は、以下のコマンドを使用してください: sudo pip install -r requirements.txt --break-system-packages

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

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

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

sudo cp /myems-normalization/myems-normalization.service /lib/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 /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt
注釈

(Ubuntu 24.04 LTS) 上記コマンドが動作しない場合は、以下のコマンドを使用してください: sudo pip install -r requirements.txt --break-system-packages

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

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

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

sudo cp /myems-aggregation/myems-aggregation.service /lib/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を追加し、サンプルアドレス(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;
}
}

NGINXを再起動します:

sudo systemctl restart nginx
  • MyEMS Web UIをインストールします:

NodeJSを設定します:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y 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

インストールを実行します: なお、以下のパスはnginx.confで設定したパスと一致させてください。

sudo rm -r /var/www/myems-web
sudo mv build  /var/www/myems-web

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

sudo ufw allow 80

NGINXを再起動します:

sudo systemctl restart nginx

インストール後

おめでとうございます!これで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

トラブルシューティング

「sudo pip install -r requirements.txt」実行時に「error: externally-managed-environment」が発生した場合
  1. 仮想環境設定ディレクトリを作成します:
sudo python -m venv venv
  1. 仮想環境を使用開始します:
source venv/bin/activate
  1. 必要なパッケージをインストールします:
sudo venv/bin/pip install -r requirements.txt
  1. 仮想環境を終了します:
deactivate