Pergi ke konten utama

Sistem Operasi Kylin

Panduan ini akan menjelaskan cara deploy MyEMS di server Kylin V11.

Prasyarat

Panduan ini menjelaskan cara instalasi MyEMS di Kylin V11. Kebutuhan perangkat keras tergantung pada basis data yang dipilih dan jumlah perangkat yang terhubung ke sistem. Untuk menjalankan MyEMS dan MySQL di satu mesin, Anda memerlukan setidaknya 8GB RAM.

Perbarui sistem dan instal alat:

sudo yum update
sudo yum install git
systemctl stop firewalld

Clone kode sumber:

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

Langkah 1 Basis Data

Lihat Basis Data

Langkah 2 myems-api

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

Buat file .env dari example.env dan sesuaikan jika perlu:

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

Tambahkan port ke firewall:

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

Instal file 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/

Selanjutnya, aktifkan layanan agar berjalan otomatis saat boot:

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

Jalankan layanan:

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

Langkah 3 myems-admin

  • Instal Server NGINX

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

Aktifkan layanan nginx:

yum install -y nginx
sudo systemctl start nginx.service
  • Konfigurasi NGINX
sudo vi /etc/nginx/nginx.conf

Di bagian 'http', tambahkan konfigurasi berikut:

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

}

Buat file baru di /etc/nginx/conf.d/:

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

Isi dengan konfigurasi berikut. Jika myems-api berjalan di server lain, ganti alamat default http://127.0.0.1:8000/ dengan alamat yang sebenarnya.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Untuk menghindari masalah CORS, gunakan Nginx untuk mem-proxy myems-api ke path /api
## Tambahkan location /api lain di dalam 'server'
## Ganti URL default myems-api http://127.0.0.1:8000/ dengan URL sebenarnya jika layanan di-host di server lain
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 bisa terhubung internet, kompres folder myems/myems-admin, unggah ke server, lalu 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

Periksa dan sesuaikan file konfigurasi jika perlu:

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

PERINGATAN

Folder 'upload' digunakan untuk file yang diunggah pengguna. Jangan hapus, pindahkan, atau timpa folder 'upload' saat memperbarui myems-admin.

 /var/www/myems-admin/upload

Tambahkan 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

Restart layanan nginx:

sudo systemctl restart nginx.service

CATATAN

Jika Anda mendapatkan error '403 Forbidden' di nginx, bisa diperbaiki dengan mengubah mode SELinux menggunakan perintah 'sudo setforce 0'.

Langkah 4 myems-modbus-tcp

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

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

Salin file example.env ke .env dan edit file .env:

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

Instal layanan systemd:

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

Aktifkan layanan:

sudo systemctl enable myems-modbus-tcp.service

Jalankan layanan:

sudo systemctl start myems-modbus-tcp.service

Pantau status layanan:

sudo systemctl status myems-modbus-tcp.service

Lihat log:

cat /myems-modbus-tcp.log

Langkah 5 myems-cleaning

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

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

Salin file example.env ke .env dan edit file .env:

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

Instal layanan systemd:

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

Aktifkan layanan:

sudo systemctl enable myems-cleaning.service

Jalankan layanan:

sudo systemctl start myems-cleaning.service

Pantau status layanan:

sudo systemctl status myems-cleaning.service

Lihat log:

cat /myems-cleaning.log

Langkah 6 myems-normalization

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

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

Salin file example.env ke .env dan edit file .env:

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

Instal layanan systemd

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

Aktifkan layanan:

sudo systemctl enable myems-normalization.service

Jalankan layanan:

sudo systemctl start myems-normalization.service

Pantau status layanan:

sudo systemctl status myems-normalization.service

Lihat log:

cat /myems-normalization.log

Langkah 7 myems-aggregation

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

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

Salin file example.env ke .env dan edit file .env:

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

Instal layanan systemd

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

Aktifkan layanan:

sudo systemctl enable myems-aggregation.service

Jalankan layanan:

sudo systemctl start myems-aggregation.service

Pantau status layanan:

sudo systemctl status myems-aggregation.service

Lihat log:

cat /myems-aggregation.log

Langkah 8 myems-web

Pada langkah ini, Anda akan menginstal antarmuka web myems-web.

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

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

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

Isi dengan konfigurasi berikut. Jika myems-api di-host di server lain, ganti alamat default http://127.0.0.1:8000/ dengan alamat sebenarnya.

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# tambahkan try_files untuk menghindari error 404 saat refresh halaman
try_files $uri /index.html;
}
## Untuk menghindari masalah CORS, gunakan Nginx untuk mem-proxy myems-api ke path /api
## Tambahkan location /api lain di dalam 'server'
## Ganti URL default myems-api http://127.0.0.1:8000/ dengan URL sebenarnya jika layanan di-host di server lain
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Instal antarmuka web MyEMS:

Edit file konfigurasi:

CATATAN

Dapatkan mapboxToken dari https://mapbox.com lalu atur showOnlineMap menjadi true. Jika ingin menonaktifkan peta online, atur showOnlineMap menjadi false.

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

Build proyek:

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

Instal: CATATAN Path di bawah harus sesuai dengan yang dikonfigurasi di nginx.conf.

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

Tambahkan 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

Restart NGINX

sudo systemctl restart nginx

CATATAN

Jika Anda mendapatkan error '500 Internal Server Error' di nginx, bisa diperbaiki dengan mengubah mode SELinux menggunakan perintah 'sudo setforce 0'.

Setelah Instalasi

Selamat! Sekarang Anda bisa login ke antarmuka admin dan antarmuka web MyEMS.

Port Default

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

Anggap alamat IP server adalah 192.168.1.8 (ganti dengan IP sebenarnya) Alamat Antarmuka Web MyEMS: http://192.168.1.8 (port 80 bisa dihilangkan) Alamat Antarmuka Admin MyEMS: http://192.168.1.8:8001

Kata Sandi Default

Antarmuka Admin MyEMS Nama Pengguna:

administrator

Kata Sandi:

!MyEMS1

Antarmuka Web MyEMS Nama Pengguna:

administrator

Kata Sandi:

!MyEMS1

Pemecahan Masalah

Instalasi MySQL 8.0

1. Persiapan

Periksa lingkungan sistem

# Periksa versi sistem
cat /etc/redhat-release

# Periksa apakah MySQL sudah terinstal
rpm -qa | grep mysql
rpm -qa | grep mariadb

# Hapus mariadb jika ada
rpm -e --nodeps mariadb-libs-*

2. Unduh Paket RPM Resmi MySQL

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

3. Instal MySQL 8.0

tar -xvf *.tar
yum localinstall *.rpm

# Jika ada masalah kunci GPG, gunakan ini sementara
yum install -y mysql-community-server --nogpgcheck

4. Jalankan Layanan MySQL

# Jalankan MySQL
systemctl start mysqld

# Aktifkan jalankan otomatis saat boot
systemctl enable mysqld

# Periksa status layanan
systemctl status mysqld

5. Dapatkan Kata Sandi Sementara

# Lihat kata sandi sementara yang dibuat MySQL
grep 'temporary password' /var/log/mysqld.log

6. Konfigurasi Keamanan

# Jalankan skrip instalasi aman
mysql_secure_installation

Ikuti petunjuk:

  1. Masukkan kata sandi sementara
  2. Atur kata sandi baru (harus mengandung huruf besar, kecil, angka, dan simbol khusus)
  3. Ubah kata sandi root? Y
  4. Hapus pengguna anonim? Y
  5. Blok login root jarak jauh? Pilih sesuai kebutuhan
  6. Hapus basis data uji? Y
  7. Muat ulang tabel izin? Y

7. Login dan Periksa MySQL

# Login ke MySQL
mysql -u root -p

# Periksa versi
SELECT VERSION();

# Tampilkan basis data
SHOW DATABASES;

8. Konfigurasi Set Karakter (Opsional)

Edit file konfigurasi:

vi /etc/my.cnf

Tambahkan isi berikut:

[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'

# Kurangi kebijakan kata sandi jika perlu
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

Restart layanan:

systemctl restart mysqld

9. Konfigurasi Firewall

# Buka port 3306
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# ATAU hentikan firewall (tidak disarankan)
# systemctl stop firewalld

10. Konfigurasi Akses Jarak Jauh (Opsional)

-- Login ke MySQL
mysql -u root -p

# Buat pengguna untuk akses jarak jauh
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Perbarui kata sandi
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
# Berikan semua izin
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- Terapkan perubahan
FLUSH PRIVILEGES;

Masalah Umum

1. Error Kekurangan Memori

Jika server memiliki memori sedikit, batasi penggunaan memori MySQL:

vi /etc/my.cnf
# Tambahkan konfigurasi ini
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. Pemecahan Masalah Gagal Start

# Lihat log error
tail -f /var/log/mysqld.log

# Periksa penggunaan port
netstat -tlnp | grep 3306

3. Ubah Kebijakan Kata Sandi

-- Lihat kebijakan kata sandi saat ini
SHOW VARIABLES LIKE 'validate_password%';

-- Kurangi kebijakan (jika butuh kata sandi sederhana)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

Periksa Instalasi

# Periksa proses MySQL
ps aux | grep mysql

# Periksa port
netstat -tlnp | grep 3306

# Periksa versi MySQL
mysql --version