Pergi ke kandungan utama

Sistem Operasi Kylin

Panduan ini akan mengajar anda cara memasang MyEMS pada server Kylin V11.

Prasyarat

Panduan ini menerangkan cara memasang MyEMS pada Kylin V11. Keperlatan perkakasan bergantung kepada pangkalan data yang dipilih dan bilangan peranti yang disambungkan ke sistem. Untuk menjalankan MyEMS dan MySQL pada satu mesin, anda memerlukan sekurang-kurangnya 8GB RAM.

Kemaskini sistem dan pasang alatan:

sudo yum update
sudo yum install git
systemctl stop firewalld

Klon kod sumber:

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

Langkah 1 Pangkalan Data

Lihat di Pangkalan Data

Langkah 2 myems-api

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

Buat fail .env daripada example.env dan ubah suai jika perlu:

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

Tambah port ke firewall:

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

Pasang fail 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/

Kemudian, aktifkan perkhidmatan supaya bermula secara automatik semasa boot:

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

Mula perkhidmatan:

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

Langkah 3 myems-admin

  • Pasang Pelayan NGINX

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

Aktifkan perkhidmatan nginx:

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

Dalam bahagian 'http', tambah arahan 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 fail baru dalam /etc/nginx/conf.d/:

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

Tulis arahan berikut. Jika perkhidmatan myems-api berjalan pada pelayan lain, ganti alamat lalai http://127.0.0.1:8000/ dengan alamat sebenar.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Untuk mengelakkan masalah CORS, gunakan Nginx proxy myems-api ke laluan /api
## Tambah lokasi /api lain dalam 'server'
## Ganti URL lalai myems-api http://127.0.0.1:8000/ dengan URL sebenar jika perkhidmatan dihoskan pada pelayan lain
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 menyambung ke internet, mampatkan folder myems/myems-admin, muat naik ke pelayan, kemudian nyahzip 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 konfigurasi dan ubah suai jika perlu:

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

AMARAN

Folder 'upload' digunakan untuk fail yang dimuat naik oleh pengguna. JANGAN membuang, memindahkan atau menimpa folder 'upload' apabila mengemas kini myems-admin.

 /var/www/myems-admin/upload

Tambah 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

Mulakan semula perkhidmatan nginx:

sudo systemctl restart nginx.service

PETUA

Jika anda menghadapi ralat '403 Forbidden' pada nginx, anda boleh membetulkannya dengan menukar mod SELinux menggunakan arahan 'sudo setforce 0'.

Langkah 4 myems-modbus-tcp

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

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

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

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

Pasang perkhidmatan systemd:

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

Aktifkan perkhidmatan:

sudo systemctl enable myems-modbus-tcp.service

Mula 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 /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt

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

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

Pasang perkhidmatan systemd:

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

Aktifkan perkhidmatan:

sudo systemctl enable myems-cleaning.service

Mula 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 /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt

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

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

Pasang perkhidmatan systemd

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

Aktifkan perkhidmatan:

sudo systemctl enable myems-normalization.service

Mula 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 /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt

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

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

Pasang perkhidmatan systemd

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

Aktifkan perkhidmatan:

sudo systemctl enable myems-aggregation.service

Mula 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 antara muka pengguna myems-web.

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

Tambah fail baru dalam /etc/nginx/conf.d/:

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

Tulis arahan berikut. Jika perkhidmatan myems-api dihoskan pada pelayan lain, ganti alamat lalai http://127.0.0.1:8000/ dengan alamat sebenar.

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 apabila menyegarkan halaman
try_files $uri /index.html;
}
## Untuk mengelakkan masalah CORS, gunakan Nginx proxy myems-api ke laluan /api
## Tambah lokasi /api lain dalam 'server'
## Ganti URL lalai myems-api http://127.0.0.1:8000/ dengan URL sebenar jika perkhidmatan dihoskan pada pelayan lain
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Pasang antara muka web MyEMS:

Edit fail konfigurasi:

CATATAN

Dapatkan mapboxToken dari https://mapbox.com dan tetapkan showOnlineMap kepada true. Jika anda ingin melumpuhkan peta dalam talian, tetapkan showOnlineMap kepada false.

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

Kompil projek:

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

Pasang: CATATAN Laluan di bawah mesti sepadan dengan yang dikonfigurasikan dalam nginx.conf.

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

Tambah 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

Mulakan semula NGINX

sudo systemctl restart nginx

PETUA

Jika anda menghadapi ralat '500 Ralat Pelayan Dalaman' pada nginx, anda boleh membetulkannya dengan menukar mod SELinux menggunakan arahan 'sudo setforce 0'.

Selepas Pemasangan

Tahniah! Kini anda boleh log masuk ke antara muka pentadbir MyEMS dan antara muka web.

Port Lalai

Antara Muka Web MyEMS: 80 MyEMS API: 8000 Antara Muka Pentadbir MyEMS: 8001

Anggap alamat IP pelayan ialah 192.168.1.8 (ganti dengan alamat IP sebenar pelayan anda) Alamat Antara Muka Web MyEMS: http://192.168.1.8 (port 80 boleh ditinggalkan) Alamat Antara Muka Pentadbir MyEMS: http://192.168.1.8:8001

Kata Laluan Lalai

Antara Muka Pentadbir MyEMS Nama Pengguna:

administrator

Kata Laluan:

!MyEMS1

Antara Muka Web MyEMS Nama Pengguna:

administrator

Kata Laluan:

!MyEMS1

Penyelesaian Masalah

Pemasangan MySQL 8.0

1. Penyediaan

Periksa persekitaran sistem

# Periksa versi sistem
cat /etc/redhat-release

# Periksa sama ada MySQL telah dipasang
rpm -qa | grep mysql
rpm -qa | grep mariadb

# Alih keluar mariadb jika ada
rpm -e --nodeps mariadb-libs-*

2. Muat Turun Pek RPM Rasmi MySQL

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

3. Pasang MySQL 8.0

tar -xvf *.tar
yum localinstall *.rpm

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

4. Mula Perkhidmatan MySQL

# Mula MySQL
systemctl start mysqld

# Aktifkan permulaan automatik semasa boot
systemctl enable mysqld

# Periksa status perkhidmatan
systemctl status mysqld

5. Dapatkan Kata Laluan Sementara

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

6. Konfigurasi Keselamatan

# Jalankan skrip pemasangan selamat
mysql_secure_installation

Ikuti arahan:

  1. Masukkan kata laluan sementara
  2. Tetapkan kata laluan baru (mesti mengandungi huruf besar, huruf kecil, nombor dan simbol khas)
  3. Tukar kata laluan root? Y
  4. Buang pengguna tanpa nama? Y
  5. Cegah log masuk root dari jauh? Pilih mengikut keperluan
  6. Buang pangkalan data ujian? Y
  7. Muat semula jadual kebenaran? Y

7. Log Masuk dan Periksa MySQL

# Log masuk ke MySQL
mysql -u root -p

# Periksa versi
SELECT VERSION();

# Senaraikan pangkalan data
SHOW DATABASES;

8. Konfigurasi Set Watak (Pilihan)

Edit fail konfigurasi:

vi /etc/my.cnf

Tambah kandungan 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'

# Kurangkan polisi kata laluan 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

Mulakan semula perkhidmatan:

systemctl restart mysqld

9. Konfigurasi Firewall

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

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

10. Konfigurasi Akses Jauh (Pilihan)

-- Log masuk ke MySQL
mysql -u root -p

-- Buat pengguna untuk akses jauh
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Kemas kini kata laluan
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Berikan semua kebenaran
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- Terapkan perubahan
FLUSH PRIVILEGES;

Masalah Biasa

1. Ralat Kekurangan Memori

Jika pelayan mempunyai memori yang sedikit, hadkan penggunaan memori MySQL:

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

2. Selesaikan Masalah Kegagalan Permulaan

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

# Periksa penggunaan port
netstat -tlnp | grep 3306

3. Tukar Polisi Kata Laluan

-- Lihat polisi kata laluan semasa
SHOW VARIABLES LIKE 'validate_password%';

# Kurangkan polisi (jika perlu kata laluan mudah)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

Periksa Pemasangan

# Periksa proses MySQL
ps aux | grep mysql

# Periksa port
netstat -tlnp | grep 3306

# Periksa versi MySQL
mysql --version