Pergi ke kandungan utama

Anolis OS

Dalam panduan ini, anda akan menggunakan MyEMS pada Anolis OS.

Prasyarat

Panduan ini menerangkan cara memasang MyEMS pada Anolis OS 8. Keperluan perkakasan bergantung kepada pangkalan data yang dipilih dan bilangan peranti yang disambungkan ke sistem. Untuk menjalankan MyEMS dan MySQL pada satu mesin, anda memerlukan sekurang-kurangnya 4GB RAM.

Kemas kini sistem dan pasang alat

sudo dnf update
sudo yum install python39
sudo ln -sb /bin/python3.9 /bin/python3
sudo ln -sb /bin/pip3.9 /bin/pip3
sudo ln -sb /bin/python3.9 /bin/python
sudo ln -sb /bin/pip3.9 /bin/pip
sudo dnf install git

Klon kod sumber:

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

Step 1 Database

Lihat Pangkalan Data

Step 2 myems-api

  • Pasang perkhidmatan myems-api:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt

Buat fail .env berdasarkan example.env dan edit fail .env jika perlu:

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

Semak atau tukar port pendengaran (lalai ialah 8000) dalam myems-api.service dan myems-api.socket:

sudo nano /myems-api/myems-api.service
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /run/myems-api/pid --timeout 600 --workers=4 app:api
sudo nano /myems-api/myems-api.socket
ListenStream=0.0.0.0:8000

Tambah port ke firewall:

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

Sediakan fail konfigurasi 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/

Seterusnya aktifkan perkhidmatan supaya ia bermula secara automatik semasa boot:

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

Mulakan perkhidmatan :

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

Step 3 myems-admin

  • Pasang Pelayan NGINX

rujuk http://nginx.org/en/linux_packages.html#RHEL

Aktifkan perkhidmatan nginx:

sudo systemctl start nginx.service
  • Konfigurasi NGINX
sudo nano /etc/nginx/nginx.conf

Dalam bahagian 'http', tambah beberapa arahan:

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;
...

}

Tambah fail baharu di bawah /etc/nginx/conf.d/

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

Tulis dengan arahan seperti di bawah, dan gantikan url myems-api lalai http://127.0.0.1:8000/ dengan url sebenar jika perkhidmatan myems-api dihoskan pada pelayan yang berbeza

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## Replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Pasang myems-admin : Jika pelayan tidak dapat menyambung ke internet, sila mampatkan folder myems/myems-admin dan muat naik ke pelayan serta ekstrak ke ~/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
Semak fail konfigurasi dan ubah jika perlu:
sudo nano /var/www/myems-admin/app/api.js
Amaran

Folder 'upload' adalah untuk fail yang dimuat naik oleh pengguna. JANGAN padam/pindah/timpa folder 'upload' apabila anda menaik taraf myems-admin.

 /var/www/myems-admin/upload

Buka port dan tambah port ke firewall:

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

Mulakan semula perkhidmatan nginx:

sudo systemctl restart nginx.service
Petua

Jika anda menghadapi ralat '403 Forbidden' nginx, anda boleh membetulkannya dengan menukar mod SELinux menggunakan arahan 'sudo setenforce 0'

Step 4 myems-modbus-tcp

Dalam langkah ini, anda akan memasang perkhidmatan myems-modbus-tcp.

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

Salin fail example.env ke .env dan ubah fail .env:

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

Sediakan perkhidmatan systemd:

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

Aktifkan perkhidmatan:

sudo systemctl enable myems-modbus-tcp.service

Mulakan perkhidmatan:

sudo systemctl start myems-modbus-tcp.service

Pantau perkhidmatan:

sudo systemctl status myems-modbus-tcp.service

Lihat log:

cat /myems-modbus-tcp.log

Step 5 myems-cleaning

Dalam langkah ini, anda akan memasang perkhidmatan myems-cleaning.

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

Salin fail example.env ke .env dan ubah fail .env:

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

Sediakan perkhidmatan systemd:

sudo cp /myems-cleaning/myems-cleaning.service /lib/systemd/system/

Aktifkan perkhidmatan:

sudo systemctl enable myems-cleaning.service

Mulakan perkhidmatan:

sudo systemctl start myems-cleaning.service

Pantau perkhidmatan:

sudo systemctl status myems-cleaning.service

Lihat log:

cat /myems-cleaning.log

Step 6 myems-normalization

Dalam langkah ini, anda akan memasang perkhidmatan myems-normalization.

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

Salin fail example.env ke .env dan ubah fail .env:

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

Sediakan perkhidmatan systemd:

sudo cp /myems-normalization/myems-normalization.service /lib/systemd/system/

Aktifkan perkhidmatan:

sudo systemctl enable myems-normalization.service

Mulakan perkhidmatan:

sudo systemctl start myems-normalization.service

Pantau perkhidmatan:

sudo systemctl status myems-normalization.service

Lihat log:

cat /myems-normalization.log

Step 7 myems-aggregation

Dalam langkah ini, anda akan memasang perkhidmatan myems-aggregation.

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

Salin fail example.env ke .env dan ubah fail .env:

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

Sediakan perkhidmatan systemd:

sudo cp /myems-aggregation/myems-aggregation.service /lib/systemd/system/

Aktifkan perkhidmatan:

sudo systemctl enable myems-aggregation.service

Mulakan perkhidmatan:

sudo systemctl start myems-aggregation.service

Pantau perkhidmatan:

sudo systemctl status myems-aggregation.service

Lihat log:

cat /myems-aggregation.log

Step 8 myems-web

Dalam langkah ini, anda akan memasang perkhidmatan UI myems-web.

  • Pasang Pelayan NGINX

rujuk http://nginx.org/en/linux_packages.html#RHEL

  • Konfigurasi NGINX

Buang fail lalai

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

Tambah fail baharu di bawah /etc/nginx/conf.d/

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

Tambah seksyen 'server' baharu dengan arahan seperti di bawah:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# tambah arahan try_files untuk elak ralat 404 semasa menyegar semula halaman
try_files $uri /index.html;
}
## Untuk elak isu CORS, gunakan Nginx untuk proksi myems-api ke laluan /api
## Tambah satu lagi lokasi /api dalam 'server'
## gantikan url myems-api lalai http://127.0.0.1:8000/ dengan url sebenar jika perkhidmatan myems-api dihoskan pada pelayan yang berbeza
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Pasang MyEMS Web UI:

Sediakan NodeJS:

sudo dnf module list nodejs
sudo dnf module reset nodejs:16/common
sudo dnf module install nodejs:16/common
  • Ubah fail config.js:
Nota

Dapatkan mapboxToken di https://mapbox.com dan kemudian tetapkan showOnlineMap kepada true. Jika anda ingin mematikan ciri peta dalam talian, tetapkan showOnlineMap kepada false

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

Jika 'node -v' memulangkan 'v16.xx.xx', parameter '--openssl-legacy-provider' untuk arahan start dan build mesti dibuang dari package.json

sudo nano package.json
  ...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...

Bina dan Mampatkan

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

Pasang Muat naik fail ke pelayan web anda. Perhatikan bahawa laluan berikut mesti sama seperti yang dikonfigurasi dalam nginx.conf.

sudo mv build  /var/www/myems-web

Buka port dan tambah port ke firewall:

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

Mulakan semula perkhidmatan nginx:

sudo systemctl restart nginx.service
Petua

Jika anda menghadapi ralat '500 Internal Server Error' nginx, anda boleh membetulkannya dengan menukar mod SELinux menggunakan arahan 'sudo setenforce 0'

Selepas pemasangan

Tahniah! Anda kini boleh log masuk ke MyEMS Admin UI dan Web UI.

Port Lalai

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Anggap alamat pelayan ialah 192.168.1.8 (gantikan dengan alamat sebenar) Akses MyEMS Web UI di http://192.168.1.8 (80 boleh diabaikan) Akses MyEMS Admin UI di http://192.168.1.8:8001

Kata Laluan Lalai

MyEMS Admin UI

Nama Pengguna:

administrator

Kata Laluan:

!MyEMS1

MyEMS Web UI

Nama Pengguna:

administrator@myems.io

Kata Laluan:

!MyEMS1

Penyelesaian Masalah