Ana İçeriğe Git

Kylin İşletim Sistemi

Bu kılavuzda, MyEMS'i Kylin V11 sunucusuna dağıtacaksınız.

Ön Koşullar

Bu kılavuz, MyEMS'i Kylin V11'e nasıl kuracağınızı açıklar. Donanım gereksinimleri, seçtiğiniz veritabanına ve sisteme bağlı cihazların sayısına bağlıdır. MyEMS ve MySQL'i tek bir makinede çalıştırmak için en az 8GB RAM'e ihtiyacınız var.

Sistemi güncelleyin ve araçları yükleyin:

sudo yum update
sudo yum install git
systemctl stop firewalld

Kaynak kodunu klonlayın:

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

Adım 1 Veritabanı

Bkz. Veritabanı

Adım 2 myems-api

  • myems-api servisini yükleyin:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt

example.env dosyasını temel alarak .env dosyasını oluşturun ve gerekirse düzenleyin:

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

Güvenlik duvarına bağlantı noktasını ekleyin:

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

systemd yapılandırma dosyalarını yükleyin:

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/

Ardından, servisi önyüklemede otomatik olarak başlayacak şekilde etkinleştirin:

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

Servisi başlatın:

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

Adım 3 myems-admin

  • NGINX Sunucusunu yükleyin

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

nginx servisini etkinleştirin:

yum install -y nginx
sudo systemctl start nginx.service
  • NGINX'i yapılandırın
sudo vi /etc/nginx/nginx.conf

'http' bölümüne aşağıdaki yönergeleri ekleyin:

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

}

/etc/nginx/conf.d/ dizininde yeni bir dosya oluşturun:

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

Aşağıdaki yönergeleri yazın. myems-api servisi başka bir sunucuda çalışıyorsa, varsayılan adresi http://127.0.0.1:8000/ gerçek adresiyle değiştirin.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## CORS sorunlarını önlemek için myems-api'yi /api yoluna yönlendirmek üzere Nginx'i proxy olarak kullanın
## 'server' içinde başka bir /api location'u ekleyin
## myems-api servisi başka bir sunucuda barındırılıyorsa, varsayılan myems-api URL'si http://127.0.0.1:8000/ gerçek URL ile değiştirin
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • myems-admin'i yükleyin: Sunucu internete bağlanamıyorsa, myems/myems-admin dizinini sıkıştırın, sunucuya yükleyin ve ~/myems/myems-admin dizinine çıkarın
sudo mkdir /var/www
sudo cp -r ~/myems/myems-admin  /var/www/myems-admin
sudo chmod 0755 -R /var/www/myems-admin

Yapılandırma dosyasını kontrol edin ve gerekirse düzenleyin:

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

UYARI

'upload' dizini, kullanıcıların yüklediği dosyalar için kullanılır. myems-admin'i güncellerken 'upload' dizinini SİLMEYİN, TAŞIMAYIN VEYA ÜZERİNE YAZMAYIN.

 /var/www/myems-admin/upload

Güvenlik duvarına bağlantı noktasını ekleyin:

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

nginx servisini yeniden başlatın:

sudo systemctl restart nginx.service

İPUCU

nginx'de '403 Yasak' hatasıyla karşılaşırsanız, 'sudo setforce 0' komutuyla SELinux modunu değiştirerek düzeltebilirsiniz.

Adım 4 myems-modbus-tcp

Bu adımda, myems-modbus-tcp servisini yükleyeceksiniz.

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

example.env dosyasını .env olarak kopyalayın ve .env dosyasını düzenleyin:

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

systemd servisini yükleyin:

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

Servisi etkinleştirin:

sudo systemctl enable myems-modbus-tcp.service

Servisi başlatın:

sudo systemctl start myems-modbus-tcp.service

Servisi izleyin:

sudo systemctl status myems-modbus-tcp.service

Logları görüntüleyin:

cat /myems-modbus-tcp.log

Adım 5 myems-cleaning

Bu adımda, myems-cleaning servisini yükleyeceksiniz.

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

example.env dosyasını .env olarak kopyalayın ve .env dosyasını düzenleyin:

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

systemd servisini yükleyin:

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

Servisi etkinleştirin:

sudo systemctl enable myems-cleaning.service

Servisi başlatın:

sudo systemctl start myems-cleaning.service

Servisi izleyin:

sudo systemctl status myems-cleaning.service

Logları görüntüleyin:

cat /myems-cleaning.log

Adım 6 myems-normalization

Bu adımda, myems-normalization servisini yükleyeceksiniz.

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

example.env dosyasını .env olarak kopyalayın ve .env dosyasını düzenleyin:

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

systemd servisini yükleyin

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

Servisi etkinleştirin:

sudo systemctl enable myems-normalization.service

Servisi başlatın:

sudo systemctl start myems-normalization.service

Servisi izleyin:

sudo systemctl status myems-normalization.service

Logları görüntüleyin:

cat /myems-normalization.log

Adım 7 myems-aggregation

Bu adımda, myems-aggregation servisini yükleyeceksiniz.

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

example.env dosyasını .env olarak kopyalayın ve .env dosyasını düzenleyin:

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

systemd servisini yükleyin

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

Servisi etkinleştirin:

sudo systemctl enable myems-aggregation.service

Servisi başlatın:

sudo systemctl start myems-aggregation.service

Servisi izleyin:

sudo systemctl status myems-aggregation.service

Logları görüntüleyin:

cat /myems-aggregation.log

Adım 8 myems-web

Bu adımda, myems-web servisini yükleyeceksiniz.

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

/etc/nginx/conf.d/ dizininde yeni bir dosya ekleyin:

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

Aşağıdaki yönergeleri yazın. myems-api servisi başka bir sunucuda barındırılıyorsa, varsayılan adresi http://127.0.0.1:8000/ gerçek adresiyle değiştirin.

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# sayfayı yenilerken 404 hatasını önlemek için try_files yönergesini ekleyin
try_files $uri /index.html;
}
## CORS sorunlarını önlemek için myems-api'yi /api yoluna yönlendirmek üzere Nginx'i proxy olarak kullanın
## 'server' içinde başka bir /api location'u ekleyin
## myems-api servisi başka bir sunucuda barındırılıyorsa, varsayılan myems-api URL'si http://127.0.0.1:8000/ gerçek URL ile değiştirin
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • MyEMS web arayüzünü yükleyin:

Yapılandırma dosyasını düzenleyin:

NOT

mapboxToken'i https://mapbox.com adresinden alın ve showOnlineMap'i true olarak ayarlayın. Çevrimiçi harita özelliğini devre dışı bırakmak istiyorsanız showOnlineMap'i false olarak ayarlayın.

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

Derleyin:

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

Kurulum: NOT Aşağıdaki yol, nginx.conf dosyasında yapılandırılan yol ile eşleşmelidir.

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

Güvenlik duvarına bağlantı noktasını ekleyin:

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

NGINX'i yeniden başlatın

sudo systemctl restart nginx

İPUCU

nginx'de '500 Dahili Sunucu Hatası' ile karşılaşırsanız, 'sudo setforce 0' komutuyla SELinux modunu değiştirerek düzeltebilirsiniz.

Kurulum Sonrası

Tebrikler! Artık MyEMS yönetici arayüzüne ve web arayüzüne giriş yapabilirsiniz.

Varsayılan Bağlantı Noktaları

MyEMS Web Arayüzü: 80 MyEMS API: 8000 MyEMS Yönetici Arayüzü: 8001

Sunucunun IP adresinin 192.168.1.8 olduğunu varsayalım (kendi gerçek IP adresinizle değiştirin) MyEMS Web Arayüzü Adresi: http://192.168.1.8 (80 numaralı bağlantı noktasını atlayabilirsiniz) MyEMS Yönetici Arayüzü Adresi: http://192.168.1.8:8001

Varsayılan Şifreler

MyEMS Yönetici Arayüzü Kullanıcı Adı:

administrator

Şifre:

!MyEMS1

MyEMS Web Arayüzü Kullanıcı Adı:

administrator

Şifre:

!MyEMS1

Sorun Giderme

MySQL 8.0 Kurulumu

1. Hazırlık

Sistem ortamını kontrol edin

# Sistem sürümünü kontrol edin
cat /etc/redhat-release

# MySQL zaten kurulu mu kontrol edin
rpm -qa | grep mysql
rpm -qa | grep mariadb

# Varsa mariadb'yi kaldırın
rpm -e --nodeps mariadb-libs-*

2. Resmi MySQL RPM Paketini İndirin

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

3. MySQL 8.0'ı Yükleyin

tar -xvf *.tar
yum localinstall *.rpm

# GPG anahtarı sorunu yaşarsanız, geçici olarak kullanın
yum install -y mysql-community-server --nogpgcheck

4. MySQL Servisini Başlatın

# MySQL'i başlatın
systemctl start mysqld

# Önyüklemede otomatik başlama özelliğini etkinleştirin
systemctl enable mysqld

# Servis durumunu kontrol edin
systemctl status mysqld

5. Geçici Şifreyi Alın

# MySQL tarafından oluşturulan geçici şifreyi görüntüleyin
grep 'temporary password' /var/log/mysqld.log

6. Güvenlik Yapılandırması

# Güvenlik kurulum betiğini çalıştırın
mysql_secure_installation

Talimatları izleyin:

  1. Geçici şifreyi girin
  2. Yeni bir şifre belirleyin (büyük harf, küçük harf, sayı ve özel karakter içermelidir)
  3. Root şifresini değiştirmek istiyor musunuz? Y
  4. Anonim kullanıcıları silmek istiyor musunuz? Y
  5. Uzaktan root girişini engellemek istiyor musunuz? İhtiyacınıza göre seçin
  6. Test veritabanını silmek istiyor musunuz? Y
  7. Yetki tablolarını yeniden yüklemek istiyor musunuz? Y

7. Giriş Yapın ve MySQL'i Kontrol Edin

# MySQL'e giriş yapın
mysql -u root -p

# Sürümü kontrol edin
SELECT VERSION();

# Veritabanlarını listeleyin
SHOW DATABASES;

8. Karakter Seti Yapılandırması (İsteğe Bağlı)

Yapılandırma dosyasını düzenleyin:

vi /etc/my.cnf

Aşağıdaki içeriği ekleyin:

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

# Gerekirse şifre politikasını düşürün
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

Servisi yeniden başlatın:

systemctl restart mysqld

9. Güvenlik Duvarı Yapılandırması

# 3306 bağlantı noktasını açın
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# VEYA güvenlik duvarını durdurun (önerilmez)
# systemctl stop firewalld

10. Uzaktan Erişim Yapılandırması (İsteğe Bağlı)

-- MySQL'e giriş yapın
mysql -u root -p

-- Uzaktan erişim için bir kullanıcı oluşturun
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Şifreyi güncelleyin
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Tüm yetkileri ver
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- Değişiklikleri uygula
FLUSH PRIVILEGES;

Sık Karşılaşılan Sorunlar

1. Bellek Eksikliği Hatası

Sunucuda bellek azsa, MySQL'in bellek kullanımını sınırlayın:

vi /etc/my.cnf
# Aşağıdaki yapılandırmaları ekleyin
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. Başlatma Hatasını Giderme

# Hata loglarını görüntüleyin
tail -f /var/log/mysqld.log

# Bağlantı noktası kullanımını kontrol edin
netstat -tlnp | grep 3306

3. Şifre Politikasını Değiştirme

-- Mevcut şifre politikasını görüntüleyin
SHOW VARIABLES LIKE 'validate_password%';

-- Politikayı düşürün (basit şifre gerekiyorsa)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

Kurulumu Kontrol Edin

# MySQL sürecini kontrol edin
ps aux | grep mysql

# Bağlantı noktasını kontrol edin
netstat -tlnp | grep 3306

# MySQL sürümünü kontrol edin
mysql --version