Pergi ke konten utama

FreeBSD

Dalam panduan ini, Anda akan melakukan deploy MyEMS pada server FreeBSD.

Prasyarat

Panduan ini menjelaskan cara menginstal MyEMS pada FreeBSD 13.2. Persyaratan perangkat keras tergantung pada database yang dipilih dan jumlah perangkat yang terhubung ke sistem. Untuk menjalankan MyEMS dan MySQL pada satu mesin, Anda memerlukan setidaknya 4GB RAM.

Perbarui sistem dan instal alat

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

Clone kode sumber:

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

Langkah 1 Database

Lihat Database

Langkah 2 myems-api

  • Instal layanan myems-api:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Tips

If you encounter 'Failed building wheel for pillow' error, you need to Installation Pillow

Buat file .env berdasarkan example.env dan edit file .env jika diperlukan:

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

Gunakan layanan pemantauan monit dan edit file konfigurasi monit:

nano /etc/monit.d/myems-api
check process mymes-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

Mulai layanan:

monit restart

Langkah 3 myems-admin

  • Instal Server NGINX

lihat http://nginx.org/en/docs/install.html

Aktifkan layanan nginx:

service nginx enable
  • Konfigurasi NGINX
nano /etc/nginx/nginx.conf

Pada bagian 'http', tambahkan beberapa direktif:

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

}

Tambahkan file baru di bawah /etc/nginx/conf.d/

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

Tulis dengan direktif seperti di bawah ini, dan ganti url default myems-api http://127.0.0.1:8000/ dengan url sebenarnya jika layanan myems-api dihosting di server yang berbeda

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;
}
}
  • Instal myems-admin: Jika server tidak dapat terhubung ke internet, silakan kompres folder myems/myems-admin dan unggah ke server lalu ekstrak ke ~/myems/myems-admin
mkdir /var/www
cp -r ~/myems/myems-admin  /var/www/myems-admin
chmod 0755 /var/www/myems-admin
Periksa file konfigurasi dan ubah jika perlu:
nano /var/www/myems-admin/app/api.js
Peringatan

Folder 'upload' digunakan untuk file yang diunggah pengguna. JANGAN hapus/pindahkan/timpa folder 'upload' saat Anda memperbarui myems-admin.

 /var/www/myems-admin/upload

Restart layanan nginx:

service nginx restart

Langkah 4 myems-modbus-tcp

Pada langkah ini, Anda akan menginstal layanan myems-modbus-tcp.

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

Buat file .env berdasarkan example.env dan edit file .env jika diperlukan:

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

Gunakan layanan pemantauan monit dan edit file 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

Mulai layanan:

monit restart

Langkah 5 myems-cleaning

Pada langkah ini, Anda akan menginstal layanan myems-cleaning.

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

Buat file .env berdasarkan example.env dan edit file .env jika diperlukan:

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

Gunakan layanan pemantauan monit dan edit file 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

Mulai layanan:

monit restart

Langkah 6 myems-normalization

Pada langkah ini, Anda akan menginstal layanan myems-normalization.

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

Buat file .env berdasarkan example.env dan edit file .env jika diperlukan:

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

Gunakan layanan pemantauan monit dan edit file 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

Mulai layanan:

monit restart

Langkah 7 myems-aggregation

Pada langkah ini, Anda akan menginstal layanan myems-aggregation.

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

Buat file .env berdasarkan example.env dan edit file .env jika diperlukan:

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

Gunakan layanan pemantauan monit dan edit file 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

Mulai layanan:

monit restart

Langkah 8 myems-web

Pada langkah ini, Anda akan menginstal layanan UI myems-web.

  • Instal Server NGINX

lihat http://nginx.org/en/docs/install.html

  • Konfigurasi NGINX

Hapus file default

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

Tambahkan file baru di bawah /etc/nginx/conf.d/

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

Tambahkan bagian 'server' baru dengan direktif seperti di bawah ini:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# add try_files directive to avoid 404 error while refreshing pages
try_files $uri /index.html;
}
## 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;
}
}
  • Instal MyEMS Web UI:

Siapkan NodeJS:

pkg install node-18.16.0

Modifikasi file config.js:

Catatan

Dapatkan mapboxToken di https://mapbox.com lalu atur showOnlineMap ke true. Jika Anda ingin mematikan fitur peta online, atur showOnlineMap ke false

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

Build

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

Instal Perhatikan bahwa path berikut harus sama seperti yang dikonfigurasi di nginx.conf.

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

Restart layanan nginx:

service nginx restart

Setelah Instalasi

Selamat! Anda sekarang dapat masuk ke MyEMS Admin UI dan Web UI.

Port Default

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Misalkan alamat server adalah 192.168.1.8 (ganti dengan alamat server yang sebenarnya) Akses MyEMS Web UI di http://192.168.1.8 (port 80 dapat diabaikan) Akses MyEMS Admin UI di http://192.168.1.8:8001

Password Default

MyEMS Admin UI

Nama Pengguna:

administrator

Kata Sandi:

!MyEMS1

MyEMS Web UI

Nama Pengguna:

administrator@myems.io

Kata Sandi:

!MyEMS1

Pemecahan Masalah