Kylin OS
W tym przewodniku wdrożysz MyEMS na serwerze Kylin V11.
Wymagania wstępne
Ten przewodnik opisuje sposób instalacji MyEMS na Kylin V11. Wymagania sprzętowe zależą od wybranej bazy danych i liczby urządzeń podłączonych do systemu. Aby uruchomić MyEMS i MySQL na jednej maszynie, potrzebujesz co najmniej 8 GB RAM.
Zaktualizuj system i zainstaluj narzędzia:
sudo yum update
sudo yum install git
systemctl stop firewalld
Sklonuj kod źródłowy:
cd ~
git clone https://gitee.com/myems/myems
Krok 1 Baza danych
Zobacz Baza danych
Krok 2 myems-api
- Zainstaluj usługę myems-api:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt
Utwórz plik .env na podstawie example.env i edytuj go w razie potrzeby:
sudo cp /myems-api/example.env /myems-api/.env
sudo nano /myems-api/.env
Dodaj port do zapory sieciowej:
sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
Zainstaluj pliki konfiguracyjne 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/
Następnie włącz usługi, aby uruchamiały się automatycznie podczas bootowania:
sudo systemctl enable myems-api.socket
sudo systemctl enable myems-api.service
Uruchom usługi:
sudo systemctl start myems-api.socket
sudo systemctl start myems-api.service
Krok 3 myems-admin
- Zainstaluj serwer NGINX
Zobacz http://nginx.org/en/linux_packages.html#RHEL
Włącz usługę nginx:
yum install -y nginx
sudo systemctl start nginx.service
- Skonfiguruj NGINX
sudo vi /etc/nginx/nginx.conf
W sekcji 'http' dodaj kilka dyrektyw:
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;
...
}
Utwórz nowy plik w /etc/nginx/conf.d/:
sudo vi /etc/nginx/conf.d/myems-admin.conf
Wpisz następujące dyrektywy. Jeśli usługa myems-api działa na innym serwerze, zastąp domyślny adres myems-api http://127.0.0.1:8000/ rzeczywistym adresem.
server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Aby uniknąć problemu CORS, użyj Nginx jako proxy dla myems-api pod ścieżką /api
## Dodaj kolejną lokalizację /api w 'server'
## Zastąp domyślny adres URL myems-api http://127.0.0.1:8000/ rzeczywistym adresem URL, jeśli usługa myems-api jest hostowana na innym serwerze
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- Zainstaluj myems-admin: Jeśli serwer nie ma połączenia z internetem, skompresuj folder myems/myems-admin, prześlij go na serwer, a następnie rozpakuj do ~/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
Sprawdź plik konfiguracyjny i w razie potrzeby wprowadź zmiany:
sudo nano /var/www/myems-admin/app/api.js
Ostrzeżenie Folder 'upload' jest przeznaczony dla plików przesyłanych przez użytkownika. Nie usuwaj/przesuwaj/nadpisuj folderu 'upload' podczas aktualizacji myems-admin.
/var/www/myems-admin/upload
Dodaj port do zapory sieciowej:
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
Uruchom ponownie usługę nginx:
sudo systemctl restart nginx.service
Wskazówka Jeśli napotkasz błąd nginx '403 Forbidden', możesz go naprawić, zmieniając tryb SELinux za pomocą polecenia 'sudo setforce 0'.
Krok 4 myems-modbus-tcp
W tym kroku zainstalujesz usługę myems-modbus-tcp.
sudo cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
sudo pip install -r requirements.txt
Skopiuj plik example.env do .env i zmodyfikuj plik .env:
sudo cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
sudo nano /myems-modbus-tcp/.env
Zainstaluj usługę systemd:
sudo cp myems-modbus-tcp.service /lib/systemd/system/
Włącz usługę:
sudo systemctl enable myems-modbus-tcp.service
Uruchom usługę:
sudo systemctl start myems-modbus-tcp.service
Monitoruj usługę:
sudo systemctl status myems-modbus-tcp.service
Wyświetl log:
cat /myems-modbus-tcp.log
Krok 5 myems-cleaning
W tym kroku zainstalujesz usługę myems-cleaning.
sudo cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt
Skopiuj plik example.env do .env i zmodyfikuj plik .env:
sudo cp /myems-cleaning/example.env /myems-cleaning/.env
sudo nano /myems-cleaning/.env
Zainstaluj usługę systemd:
sudo cp /myems-cleaning/myems-cleaning.service /lib/systemd/system/
Włącz usługę:
sudo systemctl enable myems-cleaning.service
Uruchom usługę:
sudo systemctl start myems-cleaning.service
Monitoruj usługę:
sudo systemctl status myems-cleaning.service
Wyświetl log:
cat /myems-cleaning.log
Krok 6 myems-normalization
W tym kroku zainstalujesz usługę myems-normalization.
sudo cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt
Skopiuj plik example.env do .env i zmodyfikuj plik .env:
sudo cp /myems-normalization/example.env /myems-normalization/.env
sudo nano /myems-normalization/.env
Zainstaluj usługę systemd:
sudo cp /myems-normalization/myems-normalization.service /lib/systemd/system/
Włącz usługę:
sudo systemctl enable myems-normalization.service
Uruchom usługę:
sudo systemctl start myems-normalization.service
Monitoruj usługę:
sudo systemctl status myems-normalization.service
Wyświetl log:
cat /myems-normalization.log
Krok 7 myems-aggregation
W tym kroku zainstalujesz usługę myems-aggregation.
sudo cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt
Skopiuj plik example.env do .env i zmodyfikuj plik .env:
sudo cp /myems-aggregation/example.env /myems-aggregation/.env
sudo nano /myems-aggregation/.env
Zainstaluj usługę systemd:
sudo cp /myems-aggregation/myems-aggregation.service /lib/systemd/system/
Włącz usługę:
sudo systemctl enable myems-aggregation.service
Uruchom usługę:
sudo systemctl start myems-aggregation.service
Monitoruj usługę:
sudo systemctl status myems-aggregation.service
Wyświetl log:
cat /myems-aggregation.log
Krok 8 myems-web
W tym kroku zainstalujesz usługę myems-web.
- Zainstaluj serwer NGINX. Zobacz http://nginx.org/en/linux_packages.html#Debian
- Skonfiguruj NGINX. Usuń domyślny plik:
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/conf.d/default.conf
Dodaj nowy plik w /etc/nginx/conf.d/:
sudo nano /etc/nginx/conf.d/myems-web.conf
Wpisz następujące dyrektywy. Jeśli usługa myems-api jest hostowana na innym serwerze, zastąp domyślny adres myems-api http://127.0.0.1:8000/ rzeczywistym adresem.
server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# dodaj dyrektywę try_files, aby uniknąć błędu 404 podczas odświeżania stron
try_files $uri /index.html;
}
## Aby uniknąć problemu CORS, użyj Nginx jako proxy dla myems-api pod ścieżką /api
## Dodaj kolejną lokalizację /api w 'server'
## Zastąp domyślny adres URL myems-api http://127.0.0.1:8000/ rzeczywistym adresem URL, jeśli usługa myems-api jest hostowana na innym serwerze
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- Zainstaluj interfejs webowy MyEMS:
Edytuj plik konfiguracyjny:
Uwaga Uzyskaj mapboxToken z https://mapbox.com, a następnie ustaw showOnlineMap na true. Jeśli chcesz wyłączyć funkcję mapy online, ustaw showOnlineMap na false.
cd ~/myems/myems-web
sudo nano src/config.js
Buduj:
sudo npm i --unsafe-perm=true --allow-root --legacy-peer-deps
sudo npm run build
Instalacja: Uwaga, poniższa ścieżka musi odpowiadać ścieżce skonfigurowanej w nginx.conf.
sudo rm -r /var/www/myems-web
sudo mv build /var/www/myems-web
Dodaj port do zapory sieciowej:
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
Uruchom ponownie NGINX:
sudo systemctl restart nginx
Wskazówka Jeśli napotkasz błąd nginx '500 Internal Server Error', możesz go naprawić, zmieniając tryb SELinux za pomocą polecenia 'sudo setforce 0'.
Po instalacji
Gratulacje! Możesz teraz zalogować się do interfejsu administracyjnego MyEMS i interfejsu webowego.
Domyślne porty
Interfejs webowy MyEMS: 80 API MyEMS: 8000 Interfejs administracyjny MyEMS: 8001
Zakładając, że adres serwera to 192.168.1.8 (zastąp go rzeczywistym adresem serwera) Adres interfejsu webowego MyEMS: http://192.168.1.8 (port 80 można pominąć) Adres interfejsu administracyjnego MyEMS: http://192.168.1.8:8001
Domyślne hasła
Interfejs administracyjny MyEMS Nazwa użytkownika:
administrator
Hasło:
!MyEMS1
Interfejs webowy MyEMS Nazwa użytkownika:
administrator
Hasło:
!MyEMS1
Rozwiązywanie problemów
Instalacja MySQL 8.0
1. Przygotowanie
Sprawdź środowisko systemowe
# Sprawdź wersję systemu
cat /etc/redhat-release
# Sprawdź, czy MySQL jest już zainstalowany
rpm -qa | grep mysql
rpm -qa | grep mariadb
# Odinstaluj mariadb, jeśli istnieje
rpm -e --nodeps mariadb-libs-*
2. Pobierz oficjalny pakiet rpm MySQL
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar
3. Zainstaluj MySQL 8.0
tar -xvf *.tar
yum localinstall *.rpm
# Jeśli wystąpią problemy z kluczem GPG, użyj tymczasowo tego polecenia
yum install -y mysql-community-server --nogpgcheck
4. Uruchom usługę MySQL
# Uruchom MySQL
systemctl start mysqld
# Włącz automatyczne uruchamianie przy starcie systemu
systemctl enable mysqld
# Sprawdź status usługi
systemctl status mysqld
5. Uzyskaj początkowe hasło
# Sprawdź tymczasowe hasło wygenerowane przez MySQL
grep 'temporary password' /var/log/mysqld.log
6. Bezpieczna konfiguracja
# Uruchom skrypt bezpiecznej instalacji
mysql_secure_installation
Postępuj zgodnie z instrukcjami:
- Wprowadź tymczasowe hasło
- Ustaw nowe hasło (musi zawierać wielkie litery, małe litery, cyfry i znaki specjalne)
- Zmienić hasło roota? Y
- Usunąć anonimowych użytkowników? Y
- Zezwolić na logowanie roota zdalnie? Wybierz w razie potrzeby
- Usunąć bazę testową? Y
- Przeładować tabele uprawnień? Y
7. Zaloguj się i zweryfikuj MySQL
# Zaloguj się do MySQL
mysql -u root -p
# Sprawdź wersję
SELECT VERSION();
# Wyświetl bazy danych
SHOW DATABASES;
8. Skonfiguruj zestaw znaków (opcjonalnie)
Edytuj plik konfiguracyjny:
vi /etc/my.cnf
Dodaj następujące wpisy:
[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'
# Zmniejsz wymagania polityki haseł w razie potrzeby
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
Uruchom ponownie usługę:
systemctl restart mysqld
9. Ustawienia zapory sieciowej
# Otwórz port 3306
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# Lub zatrzymaj zaporę (niezalecane)
# systemctl stop firewalld
10. Konfiguracja dostępu zdalnego (opcjonalnie)
-- Zaloguj się do MySQL
mysql -u root -p
-- Utwórz użytkownika dostępu zdalnego
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Zaktualizuj hasło
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Nadaj uprawnienia
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- Zastosuj zmiany
FLUSH PRIVILEGES;
Częste problemy
1. Błąd niewystarczającej pamięci
Jeśli serwer ma mało pamięci, ogranicz użycie pamięci MySQL:
vi /etc/my.cnf
# Dodaj te ustawienia
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100
2. Rozwiązywanie problemów z uruchomieniem
# Wyświetl log błędów
tail -f /var/log/mysqld.log
# Sprawdź użycie portu
netstat -tlnp | grep 3306
3. Modyfikacja polityki haseł
-- Wyświetl bieżącą politykę haseł
SHOW VARIABLES LIKE 'validate_password%';
-- Zmniejsz wymagania (jeśli potrzebne jest proste hasło)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;
Weryfikacja instalacji
# Sprawdź proces MySQL
ps aux | grep mysql
# Sprawdź port
netstat -tlnp | grep 3306
# Sprawdź wersję MySQL
mysql --version