Pergi ke kandungan utama

FreeBSD

Dalam panduan ini, anda akan menyebarkan MyEMS pada pelayan FreeBSD.

Prasyarat

Panduan ini menerangkan cara memasang MyEMS pada FreeBSD 13.2. Keperluan perkakasan bergantung pada pangkalan data yang dipilih dan jumlah 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

pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit

Klona kod sumber:

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

Langkah 1 Pangkalan Data

Rujuk Pangkalan Data

Langkah 2 myems-api

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

Jika anda menghadapi ralat 'Failed building wheel for pillow', anda perlu Memasang Pillow (dalam dokumen rasmi Pillow)

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

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

Gunakan perkhidmatan pemantauan monit dan sunting fail konfigurasi monit:

nano /etc/monit.d/myems-api
check process myems-api with pidfile /var/run/myems-api/pid
start program = "/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /var/run/myems-api/pid --timeout 600 --workers=4 app:api &"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

Mulakan perkhidmatan:

monit restart

Langkah 3 myems-admin

  • Pasang Pelayan NGINX

Rujuk http://nginx.org/en/docs/install.html (dokumen pemasangan rasmi NGINX)

Dayakan perkhidmatan nginx:

service nginx enable
  • Konfigurasikan NGINX
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/

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;
}
## Untuk mengelakkan isu CORS, gunakan Nginx untuk memproksi myems-api ke laluan /api
## Tambah lokasi lain /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-admin: Jika pelayan tidak boleh disambungkan ke internet, sila memampatkan folder myems/myems-admin dan memuat naiknya ke pelayan dan mengekstraknya ke ~/myems/myems-admin
mkdir /var/www
cp -r ~/myems/myems-admin  /var/www/myems-admin
chmod 0755 /var/www/myems-admin

Semak fail konfig dan ubah ia jika perlu:

nano /var/www/myems-admin/app/api.js
Amaran

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

/var/www/myems-admin/upload

Mulakan semula perkhidmatan nginx:

service nginx restart

Langkah 4 myems-modbus-tcp

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

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

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

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

Gunakan perkhidmatan pemantauan monit dan sunting fail konfigurasi monit:

nano /etc/monit.d/myems-modbus-tcp
check file myems-modbus-tcp path /myems-modbus-tcp/main.py
start program = "/usr/local/bin/python3 /myems-modbus-tcp/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

Mulakan perkhidmatan:

monit restart

Langkah 5 myems-cleaning

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

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

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

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

Gunakan perkhidmatan pemantauan monit dan sunting fail konfigurasi monit:

nano /etc/monit.d/myems-cleaning
check file myems-cleaning path /myems-cleaning/main.py
start program = "/usr/local/bin/python3 /myems-cleaning/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

Mulakan perkhidmatan:

monit restart

Langkah 6 myems-normalization

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

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

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

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

Gunakan perkhidmatan pemantauan monit dan sunting fail konfigurasi monit:

nano /etc/monit.d/myems-normalization
check file myems-normalization path /myems-normalization/main.py
start program = "/usr/local/bin/python3 /myems-normalization/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

Mulakan perkhidmatan:

monit restart

Langkah 7 myems-aggregation

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

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

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

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

Gunakan perkhidmatan pemantauan monit dan sunting fail konfigurasi monit:

nano /etc/monit.d/myems-aggregation
check file myems-aggregation path /myems-aggregation/main.py
start program = "/usr/local/bin/python3 /myems-aggregation/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

Mulakan perkhidmatan:

monit restart

Langkah 8 myems-web

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

  • Pasang Pelayan NGINX

Rujuk http://nginx.org/en/docs/install.html (dokumen pemasangan rasmi NGINX)

  • Konfigurasikan 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 bahagian '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 mengelakkan ralat 404 semasa menyegarkan halaman
try_files $uri /index.html;
}
## Untuk mengelakkan isu CORS, gunakan Nginx untuk memproksi myems-api ke laluan /api
## Tambah lokasi lain /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 UI Web MyEMS:

Setup NodeJS:

pkg install node-18.16.0

Sunting fail config.js:

Nota

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

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

Bina projek:

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

Pasang: Nota: Laluan di bawah harus sama dengan yang dikonfigurasikan dalam nginx.conf.

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

Mulakan semula perkhidmatan nginx:

service nginx restart

Selepas Pemasangan

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

Port Lalai

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Dengan menganggap alamat pelayan adalah 192.168.1.8 (gantikan dengan alamat pelayan sebenar) Akses MyEMS Web UI di http://192.168.1.8 (80 boleh dihilangkan) 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