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.
- Instal Server NGINX. Lihat http://nginx.org/en/linux_packages.html#Debian
- Konfigurasi NGINX. Hapus file default
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:
- Masukkan kata sandi sementara
- Atur kata sandi baru (harus mengandung huruf besar, kecil, angka, dan simbol khusus)
- Ubah kata sandi root? Y
- Hapus pengguna anonim? Y
- Blok login root jarak jauh? Pilih sesuai kebutuhan
- Hapus basis data uji? Y
- 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