Ga naar de hoofdinhoud

Kylin OS

In deze handleiding implementeert u MyEMS op een Kylin V11-server.

Vereisten

Deze handleiding beschrijft hoe u MyEMS installeert op Kylin V11. Hardwarevereisten zijn afhankelijk van de gekozen database en het aantal apparaten dat op het systeem is aangesloten. Om MyEMS en MySQL op één machine te laten draaien, heeft u minimaal 8 GB RAM nodig.

Werk het systeem bij en installeer de tools:

sudo yum update
sudo yum install git
systemctl stop firewalld

Kloon de broncode:

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

Stap 1 Database

Zie Database

Stap 2 myems-api

  • Installeer de myems-api-service:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt

Maak het .env-bestand op basis van example.env en bewerk het indien nodig:

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

Voeg de poort toe aan de firewall:

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

Installeer de systemd-configuratiebestanden:

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/

Activeer vervolgens de services zodat ze automatisch starten bij het opstarten:

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

Start de services:

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

Stap 3 myems-admin

  • Installeer de NGINX-server

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

Activeer de nginx-service:

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

Voeg in het 'http'-gedeelte enkele richtlijnen toe:

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

}

Maak een nieuw bestand aan in /etc/nginx/conf.d/:

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

Schrijf de volgende richtlijnen. Als de myems-api-service op een andere server draait, vervang dan het standaard myems-api-adres http://127.0.0.1:8000/ door het werkelijke adres.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Om CORS-problemen te voorkomen, gebruikt u Nginx om myems-api te proxyen naar pad /api
## Voeg nog een locatie /api toe in 'server'
## Vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke URL als de myems-api-service op een andere server wordt gehost
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Installeer myems-admin: Als de server geen verbinding met internet kan maken, comprimeer dan de map myems/myems-admin, upload deze naar de server en pak deze uit naar ~/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

Controleer het configuratiebestand en breng indien nodig wijzigingen aan:

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

Waarschuwing De map 'upload' is voor door gebruikers geüploade bestanden. Verwijder/verplaats/overschrijf de map 'upload' niet bij het upgraden van myems-admin.

 /var/www/myems-admin/upload

Voeg de poort toe aan de 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

Herstart de nginx-service:

sudo systemctl restart nginx.service

Tip Als u een '403 Forbidden' nginx-fout tegenkomt, kunt u dit oplossen door de SELinux-modus te wijzigen met het commando 'sudo setforce 0'.

Stap 4 myems-modbus-tcp

In deze stap installeert u de myems-modbus-tcp-service.

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

Kopieer het example.env-bestand naar .env en wijzig het .env-bestand:

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

Installeer de systemd-service:

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

Activeer de service:

sudo systemctl enable myems-modbus-tcp.service

Start de service:

sudo systemctl start myems-modbus-tcp.service

Bewaak de service:

sudo systemctl status myems-modbus-tcp.service

Bekijk het logbestand:

cat /myems-modbus-tcp.log

Stap 5 myems-cleaning

In deze stap installeert u de myems-cleaning-service.

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

Kopieer het example.env-bestand naar .env en wijzig het .env-bestand:

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

Installeer de systemd-service:

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

Activeer de service:

sudo systemctl enable myems-cleaning.service

Start de service:

sudo systemctl start myems-cleaning.service

Bewaak de service:

sudo systemctl status myems-cleaning.service

Bekijk het logbestand:

cat /myems-cleaning.log

Stap 6 myems-normalization

In deze stap installeert u de myems-normalization-service.

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

Kopieer het example.env-bestand naar .env en wijzig het .env-bestand:

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

Installeer de systemd-service:

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

Activeer de service:

sudo systemctl enable myems-normalization.service

Start de service:

sudo systemctl start myems-normalization.service

Bewaak de service:

sudo systemctl status myems-normalization.service

Bekijk het logbestand:

cat /myems-normalization.log

Stap 7 myems-aggregation

In deze stap installeert u de myems-aggregation-service.

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

Kopieer het example.env-bestand naar .env en wijzig het .env-bestand:

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

Installeer de systemd-service:

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

Activeer de service:

sudo systemctl enable myems-aggregation.service

Start de service:

sudo systemctl start myems-aggregation.service

Bewaak de service:

sudo systemctl status myems-aggregation.service

Bekijk het logbestand:

cat /myems-aggregation.log

Stap 8 myems-web

In deze stap installeert u de myems-web-service.

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

Voeg een nieuw bestand toe in /etc/nginx/conf.d/:

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

Schrijf de volgende richtlijnen. Als de myems-api-service op een andere server wordt gehost, vervang dan het standaard myems-api-adres http://127.0.0.1:8000/ door het werkelijke adres.

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# voeg try_files-richtlijn toe om 404-fouten te voorkomen bij het vernieuwen van pagina's
try_files $uri /index.html;
}
## Om CORS-problemen te voorkomen, gebruikt u Nginx om myems-api te proxyen naar pad /api
## Voeg nog een locatie /api toe in 'server'
## Vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke URL als de myems-api-service op een andere server wordt gehost
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Installeer MyEMS Web UI:

Bewerk het configuratiebestand:

Opmerking Ontvang een mapboxToken van https://mapbox.com en stel showOnlineMap in op true. Als u de online kaartfunctie wilt uitschakelen, stelt u showOnlineMap in op false.

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

Bouw:

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

Installatie: Merk op dat het onderstaande pad moet overeenkomen met het pad dat is geconfigureerd in nginx.conf.

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

Voeg de poort toe aan de 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

Herstart NGINX:

sudo systemctl restart nginx

Tip Als u een '500 Internal Server Error' nginx-fout tegenkomt, kunt u dit oplossen door de SELinux-modus te wijzigen met het commando 'sudo setforce 0'.

Na Installatie

Gefeliciteerd! U kunt nu inloggen op de MyEMS Admin UI en Web UI.

Standaardpoorten

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

Neem aan dat het serveradres 192.168.1.8 is (vervang dit door uw werkelijke serveradres) MyEMS Web UI-adres: http://192.168.1.8 (poort 80 kan worden weggelaten) MyEMS Admin UI-adres: http://192.168.1.8:8001

Standaardwachtwoorden

MyEMS Admin UI Gebruikersnaam:

administrator

Wachtwoord:

!MyEMS1

MyEMS Web UI Gebruikersnaam:

administrator

Wachtwoord:

!MyEMS1

Problemen oplossen

MySQL 8.0 Installatie

1. Voorbereiding

Controleer de systeemomgeving

# Controleer de systeemversie
cat /etc/redhat-release

# Controleer of MySQL al is geïnstalleerd
rpm -qa | grep mysql
rpm -qa | grep mariadb

# Verwijder mariadb als het bestaat
rpm -e --nodeps mariadb-libs-*

2. Download de officiële MySQL rpm-bundel

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

3. Installeer MySQL 8.0

tar -xvf *.tar
yum localinstall *.rpm

# Als u GPG-sleutelproblemen tegenkomt, gebruikt u dit tijdelijk
yum install -y mysql-community-server --nogpgcheck

4. Start de MySQL-service

# Start MySQL
systemctl start mysqld

# Schakel automatisch starten bij opstarten in
systemctl enable mysqld

# Controleer de servicestatus
systemctl status mysqld

5. Verkrijg het initiële wachtwoord

# Controleer het tijdelijke wachtwoord dat door MySQL is gegenereerd
grep 'temporary password' /var/log/mysqld.log

6. Beveiligingsconfiguratie

# Voer het beveiligingsinstallatiescript uit
mysql_secure_installation

Volg de aanwijzingen:

  1. Voer het tijdelijke wachtwoord in
  2. Stel een nieuw wachtwoord in (moet hoofdletters, kleine letters, cijfers en speciale tekens bevatten)
  3. Wachtwoord van root wijzigen? Y
  4. Anonieme gebruikers verwijderen? Y
  5. Root-aanmelding op afstand toestaan? Kies indien nodig
  6. Testdatabase verwijderen? Y
  7. Privilegetabellen herladen? Y

7. Log in en verifieer MySQL

# Log in op MySQL
mysql -u root -p

# Controleer de versie
SELECT VERSION();

# Toon databases
SHOW DATABASES;

8. Configureer tekenset (optioneel)

Bewerk het configuratiebestand:

vi /etc/my.cnf

Voeg het volgende toe:

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

# Verlaag het wachtwoordbeleid indien nodig
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

Herstart de service:

systemctl restart mysqld

9. Firewall-instellingen

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

# Of stop de firewall (niet aanbevolen)
# systemctl stop firewalld

10. Configuratie voor externe toegang (optioneel)

-- Log in op MySQL
mysql -u root -p

-- Maak een gebruiker aan voor externe toegang
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Werk het wachtwoord bij
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Verleen privileges
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- Pas de wijzigingen toe
FLUSH PRIVILEGES;

Veelvoorkomende problemen

1. Onvoldoende geheugenfout

Als de server weinig geheugen heeft, beperk dan het geheugengebruik van MySQL:

vi /etc/my.cnf
# Voeg deze instellingen toe
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. Problemen met opstarten oplossen

# Bekijk het foutenlogboek
tail -f /var/log/mysqld.log

# Controleer het poortgebruik
netstat -tlnp | grep 3306

3. Wachtwoordbeleid wijzigen

-- Bekijk het huidige wachtwoordbeleid
SHOW VARIABLES LIKE 'validate_password%';

-- Verlaag het beleid (als een eenvoudig wachtwoord nodig is)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

Verifieer de installatie

# Controleer het MySQL-proces
ps aux | grep mysql

# Controleer de poort
netstat -tlnp | grep 3306

# Controleer de MySQL-versie
mysql --version