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

Kylin OS

このガイドでは、Kylin V11サーバーにMyEMSをデプロイします。

前提条件

このガイドでは、Kylin V11へのMyEMSのインストール方法について説明します。ハードウェア要件は、選択したデータベースとシステムに接続するデバイスの数によって異なります。1台のマシンでMyEMSとMySQLを実行するには、少なくとも8GBのRAMが必要です。

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

sudo yum update
sudo yum install git
systemctl stop firewalld

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

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

ステップ1 データベース

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

ステップ2 myems-api

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

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

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

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

sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

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サーバーをインストールします

http://nginx.org/en/linux_packages.html#RHEL を参照してください。

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

yum install -y nginx
sudo systemctl start nginx.service
  • NGINXを設定します
sudo vi /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 vi /etc/nginx/conf.d/myems-admin.conf

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

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## CORS問題を回避するために、Nginxを使用してmyems-apiをパス /api にプロキシします
## 'server'内に別のロケーション /api を追加します
## myems-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をアップグレードする際に、'upload'フォルダを削除/移動/上書きしないでください。

 /var/www/myems-admin/upload

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

sudo semanage port -a -t http_port_t  -p tcp 8001
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

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

sudo systemctl restart nginx.service

ヒント '403 Forbidden' nginxエラーが発生した場合は、コマンド'sudo setforce 0'を使用してSELinuxモードを変更することで修正できます。

ステップ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

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

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

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

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サービスをインストールします。

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

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

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'内に別のロケーション /api を追加します
## myems-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をインストールします:

設定ファイルを編集します:

注記 https://mapbox.com からmapboxTokenを取得し、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 semanage port -a -t http_port_t  -p tcp 80
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

NGINXを再起動します:

sudo systemctl restart nginx

ヒント '500 Internal Server Error' nginxエラーが発生した場合は、コマンド'sudo setforce 0'を使用してSELinuxモードを変更することで修正できます。

インストール後

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

デフォルトポート

MyEMS Web UI: 80 MyEMS API: 8000 MyEMS Admin UI: 8001

サーバーアドレスを192.168.1.8と仮定します(実際のサーバーアドレスに置き換えてください) MyEMS Web UIアドレス: http://192.168.1.8(ポート80は省略可能) MyEMS Admin UIアドレス: http://192.168.1.8:8001

デフォルトパスワード

MyEMS Admin UI ユーザー名:

administrator

パスワード:

!MyEMS1

MyEMS Web UI ユーザー名:

administrator

パスワード:

!MyEMS1

トラブルシューティング

MySQL 8.0 インストール

1. 準備

システム環境を確認します

# システムバージョンの確認
cat /etc/redhat-release

# MySQLが既にインストールされているか確認
rpm -qa | grep mysql
rpm -qa | grep mariadb

# mariadbが存在する場合はアンインストール
rpm -e --nodeps mariadb-libs-*

2. 公式MySQL rpmバンドルのダウンロード

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar

3. MySQL 8.0のインストール

tar -xvf *.tar
yum localinstall *.rpm

# GPGキーの問題が発生した場合は、一時的にこれを使用します
yum install -y mysql-community-server --nogpgcheck

4. MySQLサービスの起動

# MySQLの起動
systemctl start mysqld

# ブート時の自動起動を有効化
systemctl enable mysqld

# サービスステータスの確認
systemctl status mysqld

5. 初期パスワードの取得

# MySQLによって生成された一時パスワードを確認
grep 'temporary password' /var/log/mysqld.log

6. セキュリティ設定

# セキュアインストールスクリプトの実行
mysql_secure_installation

プロンプトに従います:

  1. 一時パスワードを入力
  2. 新しいパスワードを設定(大文字、小文字、数字、特殊文字を含める必要があります)
  3. rootパスワードを変更しますか? Y
  4. 匿名ユーザーを削除しますか? Y
  5. rootのリモートログインを禁止しますか? 必要に応じて選択
  6. テストデータベースを削除しますか? Y
  7. 権限テーブルを再読み込みしますか? Y

7. MySQLへのログインと確認

# MySQLへのログイン
mysql -u root -p

# バージョンの確認
SELECT VERSION();

# データベースの一覧表示
SHOW DATABASES;

8. 文字セットの設定(オプション)

設定ファイルを編集します:

vi /etc/my.cnf

以下を追加します:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'

# 必要に応じてパスワードポリシーを緩和します
validate_password.policy = LOW
validate_password.length = 6
validate_password.mixed_case_count = 0
validate_password.number_count = 0
validate_password.special_char_count = 0

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

systemctl restart mysqld

9. ファイアウォール設定

# ポート3306を開放
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# またはファイアウォールを停止(推奨されません)
# systemctl stop firewalld

10. リモートアクセス設定(オプション)

-- MySQLにログイン
mysql -u root -p

-- リモートアクセスユーザーの作成
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- パスワードの更新
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- 権限の付与
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 変更の適用
FLUSH PRIVILEGES;

一般的な問題

1. メモリ不足エラー

サーバーのメモリが少ない場合は、MySQLのメモリ使用量を制限します:

vi /etc/my.cnf
# これらの設定を追加します
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. 起動失敗のトラブルシューティング

# エラーログの表示
tail -f /var/log/mysqld.log

# ポート使用状況の確認
netstat -tlnp | grep 3306

3. パスワードポリシーの変更

-- 現在のパスワードポリシーの表示
SHOW VARIABLES LIKE 'validate_password%';

-- ポリシーの緩和(シンプルなパスワードが必要な場合)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

インストールの確認

# MySQLプロセスの確認
ps aux | grep mysql

# ポートの確認
netstat -tlnp | grep 3306

# MySQLバージョンの確認
mysql --version