Fedora CoreOS
Dalam panduan ini, anda akan menyebarkan MyEMS pada pelayan Fedora CoreOS.
Prasyarat
Panduan ini menerangkan cara memasang MyEMS pada Fedora CoreOS 37. 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
rpm-ostree install git
rpm-ostree install python3
rpm-ostree install python3-pip
rpm-ostree install nginx
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:
sudo cp -r ~/myems/myems-api /var/myems-api
cd /var/myems-api
sudo pip install -r requirements.txt
Buat fail .env berdasarkan example.env dan sunting fail .env jika perlu:
sudo cp /var/myems-api/example.env /var/myems-api/.env
sudo nano /var/myems-api/.env
Tambah port ke firewall:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
Setup fail konfigurasi systemd:
sudo cp /var/myems-api/myems-api.service /etc/systemd/system/
sudo cp /var/myems-api/myems-api.socket /etc/systemd/system/
sudo cp /var/myems-api/myems-api.conf /usr/lib/tmpfiles.d/
Seterusnya, dayakan perkhidmatan supaya ia mula 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
Langkah 3 myems-admin
- Pasang Pelayan NGINX
Rujuk http://nginx.org/en/linux_packages.html#RHEL (dokumen pemasangan rasmi NGINX untuk RHEL/Fedora)
Dayakan perkhidmatan nginx:
sudo systemctl start nginx.service
- Konfigurasikan 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;
}
## 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
sudo mkdir /var/www
sudo cp -r ~/myems/myems-admin /var/www/myems-admin
sudo chmod 0755 -R /var/www/myems-admin
Semak fail konfig dan ubah ia jika perlu:
sudo nano /var/www/myems-admin/app/api.js
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
Buka kunci port dan tambah port ke firewall:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8001/tcp --permanent
sudo firewall-cmd --reload
Mulakan semula perkhidmatan nginx:
sudo systemctl restart nginx.service
Jika anda menghadapi ralat nginx '403 Forbidden', anda boleh membetulkannya dengan menukar mod SELinux dengan arahan 'sudo setenforce 0'
Langkah 4 myems-modbus-tcp
Dalam langkah ini, anda akan memasang perkhidmatan myems-modbus-tcp.
sudo cp -r ~/myems/myems-modbus-tcp /var/myems-modbus-tcp
cd /var/myems-modbus-tcp
sudo pip install -r requirements.txt
Salin fail example.env ke .env dan ubah suai fail .env:
sudo cp /var/myems-modbus-tcp/example.env /var/myems-modbus-tcp/.env
sudo nano /var/myems-modbus-tcp/.env
Ubah suai fail main.py:
fh = RotatingFileHandler('/var/myems-modbus-tcp.log', maxBytes=1024*1024, backupCount=1)
Setup perkhidmatan systemd:
sudo cp myems-modbus-tcp.service /etc/systemd/system/
Dayakan 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
Langkah 5 myems-cleaning
Dalam langkah ini, anda akan memasang perkhidmatan myems-cleaning.
sudo cp -r ~/myems/myems-cleaning /var/myems-cleaning
cd /var/myems-cleaning
sudo pip install -r requirements.txt
Salin fail example.env ke .env dan ubah suai fail .env:
sudo cp /var/myems-cleaning/example.env /var/myems-cleaning/.env
sudo nano /var/myems-cleaning/.env
Ubah suai fail main.py:
fh = RotatingFileHandler('/var/myems-cleaning.log', maxBytes=1024*1024, backupCount=1)
Setup perkhidmatan systemd:
sudo cp /var/myems-cleaning/myems-cleaning.service /etc/systemd/system/
Dayakan 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
Langkah 6 myems-normalization
Dalam langkah ini, anda akan memasang perkhidmatan myems-normalization.
sudo cp -r ~/myems/myems-normalization /var/myems-normalization
cd /var/myems-normalization
sudo pip install -r requirements.txt
Salin fail example.env ke .env dan ubah suai fail .env:
sudo cp /var/myems-normalization/example.env /var/myems-normalization/.env
sudo nano /var/myems-normalization/.env
Ubah suai fail main.py:
fh = RotatingFileHandler('/var/myems-normalization.log', maxBytes=1024*1024, backupCount=1)
Setup perkhidmatan systemd:
sudo cp /var/myems-normalization/myems-normalization.service /etc/systemd/system/
Dayakan 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
Langkah 7 myems-aggregation
Dalam langkah ini, anda akan memasang perkhidmatan myems-aggregation.
sudo cp -r ~/myems/myems-aggregation /var/myems-aggregation
cd /var/myems-aggregation
sudo pip install -r requirements.txt
Salin fail example.env ke .env dan ubah suai fail .env:
sudo cp /var/myems-aggregation/example.env /var/myems-aggregation/.env
nano /var/myems-aggregation/.env
Ubah suai fail main.py:
fh = RotatingFileHandler('/var/myems-aggregation.log', maxBytes=1024*1024, backupCount=1)
Setup perkhidmatan systemd:
sudo cp /var/myems-aggregation/myems-aggregation.service /etc/systemd/system/
Dayakan 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
Langkah 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 (dokumen pemasangan rasmi NGINX untuk RHEL/Fedora)
- 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:
sudo dnf install nodejs
Ubah suai fail config.js:
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
sudo nano src/config.js
Bina dan Memampatkan
sudo npm i --unsafe-perm=true --allow-root --legacy-peer-deps
sudo npm run build
Pasang Muat naik fail ke pelayan web anda. Nota: Laluan di bawah harus sama dengan yang dikonfigurasikan dalam nginx.conf.
sudo mv build /var/www/myems-web
Buka kunci port dan tambah port ke firewall:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
Mulakan semula perkhidmatan nginx:
sudo systemctl restart nginx.service
Jika anda menghadapi ralat nginx '500 Internal Server Error', anda boleh membetulkannya dengan menukar mod SELinux dengan arahan 'sudo setenforce 0'
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