Ana İçeriğe Git

Fedora CoreOS

Bu kılavuzda, MyEMS'i Fedora CoreOS sunucusunda dağıtacaksınız.

Önkoşullar

Bu kılavuz, MyEMS'in Fedora CoreOS 37'ye nasıl yükleneceğini açıklar. Donanım gereksinimleri, seçilen veritabanına ve sisteme bağlı cihaz miktarına bağlıdır. MyEMS ve MySQL'i tek bir makinede çalıştırmak için en az 4GB RAM gerekir.

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

rpm-ostree install git
rpm-ostree install python3
rpm-ostree install python3-pip
rpm-ostree install nginx

Kaynak kodunu kopyalayın (clone):

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

Adım 1 Veritabanı

Veritabanı bölümüne bakın

Adım 2 myems-api

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

example.env dosyasına dayanarak .env dosyası oluşturun ve gerekirse .env dosyasını düzenleyin:

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

Firewall'a port ekleyin:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

systemd yapılandırma dosyalarını kurun:

sudo cp /var/myems-api/myems-api.service /etc/systemd/system/
sudo cp /var/myems-api/myems-api.socket /etc/systemd/system/
sudo cp /var/myems-api/myems-api.conf /usr/lib/tmpfiles.d/

Sonra hizmetleri etkinleştirin, böylece önyüklemede otomatik olarak başlasınlar:

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

Hizmetleri başlatın:

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

Adım 3 myems-admin

  • NGINX Sunucusunu yükleyin

http://nginx.org/en/linux_packages.html#RHEL adresine başvurunuz

nginx hizmetini etkinleştirin:

sudo systemctl start nginx.service
  • NGINX'i yapılandırın
sudo nano /etc/nginx/nginx.conf

'http' bölümünde, birkaç yönerge 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/ altında yeni bir dosya ekleyin

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

Aşağıdaki yönergelerle yazın, ve myems-api hizmeti farklı bir sunucuda barındırılıyorsa varsayılan myems-api url'si http://127.0.0.1:8000/ yerine gerçek url'yi yazın

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## CORS sorunu önlemek için, Nginx'i kullanarak myems-api'yi /api yoluna proxy edin
## 'server' içine başka bir /api konumu ekleyin
## myems-api hizmeti farklı bir sunucuda barındırılıyorsa varsayılan myems-api url'si http://127.0.0.1:8000/ yerine gerçek url'yi yazın
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: Eğer sunucu internete bağlanamıyorsa, lütfen myems/myems-admin klasörünü sıkıştırın ve sunucuya yükleyin ve ~/myems/myems-admin dizinine ayıklayı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 değiştirin:

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

'upload' klasörü, kullanıcı tarafından yüklenen dosyalar içindir. myems-admin'i yükselttiğinizde 'upload' klasörünü silme/hareket ettirme/üzerine yazma YAPMAYIN.

 /var/www/myems-admin/upload

Portu kilidini açın ve firewall'a port ekleyin:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

nginx hizmetini yeniden başlatın:

sudo systemctl restart nginx.service
İpucu

Eğer nginx '403 Forbidden' hatası ile karşılaşırsanız, SELinx modunu 'sudo setenforce 0' komutu ile değiştirerek sorunu çözebilirsiniz.

Adım 4 myems-modbus-tcp

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

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

example.env dosyasını .env'ye kopyalayın ve .env dosyasını değiştirin:

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

main.py dosyasını değiştirin:

fh = RotatingFileHandler('/var/myems-modbus-tcp.log', maxBytes=1024*1024, backupCount=1)

systemd hizmetini kurun:

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

Hizmeti etkinleştirin:

sudo systemctl enable myems-modbus-tcp.service

Hizmeti başlatın:

sudo systemctl start myems-modbus-tcp.service

Hizmeti izleyin:

sudo systemctl status myems-modbus-tcp.service

Günlüğü görüntüleyin:

cat /myems-modbus-tcp.log

Adım 5 myems-cleaning

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

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

example.env dosyasını .env'ye kopyalayın ve .env dosyasını değiştirin:

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

main.py dosyasını değiştirin:

fh = RotatingFileHandler('/var/myems-cleaning.log', maxBytes=1024*1024, backupCount=1)

systemd hizmetini kurun:

sudo cp /var/myems-cleaning/myems-cleaning.service /etc/systemd/system/

Hizmeti etkinleştirin:

sudo systemctl enable myems-cleaning.service

Hizmeti başlatın:

sudo systemctl start myems-cleaning.service

Hizmeti izleyin:

sudo systemctl status myems-cleaning.service

Günlüğü görüntüleyin:

cat /myems-cleaning.log

Adım 6 myems-normalization

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

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

example.env dosyasını .env'ye kopyalayın ve .env dosyasını değiştirin:

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

main.py dosyasını değiştirin:

fh = RotatingFileHandler('/var/myems-normalization.log', maxBytes=1024*1024, backupCount=1)

systemd hizmetini kurun:

sudo cp /var/myems-normalization/myems-normalization.service /etc/systemd/system/

Hizmeti etkinleştirin:

sudo systemctl enable myems-normalization.service

Hizmeti başlatın:

sudo systemctl start myems-normalization.service

Hizmeti izleyin:

sudo systemctl status myems-normalization.service

Günlüğü görüntüleyin:

cat /myems-normalization.log

Adım 7 myems-aggregation

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

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

example.env dosyasını .env'ye kopyalayın ve .env dosyasını değiştirin:

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

main.py dosyasını değiştirin:

fh = RotatingFileHandler('/var/myems-aggregation.log', maxBytes=1024*1024, backupCount=1)

systemd hizmetini kurun:

sudo cp /var/myems-aggregation/myems-aggregation.service /etc/systemd/system/

Hizmeti etkinleştirin:

sudo systemctl enable myems-aggregation.service

Hizmeti başlatın:

sudo systemctl start myems-aggregation.service

Hizmeti izleyin:

sudo systemctl status myems-aggregation.service

Günlüğü görüntüleyin:

cat /myems-aggregation.log

Adım 8 myems-web

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

  • NGINX Sunucusunu yükleyin

http://nginx.org/en/linux_packages.html#RHEL adresine başvurunuz

  • NGINX'i yapılandırın

Varsayılan dosyaları silin

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

/etc/nginx/conf.d/ altında yeni bir dosya ekleyin

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

Aşağıdaki yönergelerle yeni bir 'server' bölümü ekleyin:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# Sayfaları yenilediğinde 404 hatasını önlemek için try_files yönergesini ekleyin
try_files $uri /index.html;
}
## CORS sorunu önlemek için, Nginx'i kullanarak myems-api'yi /api yoluna proxy edin
## 'server' içine başka bir /api konumu ekleyin
## myems-api hizmeti farklı bir sunucuda barındırılıyorsa varsayılan myems-api url'si http://127.0.0.1:8000/ yerine gerçek url'yi yazın
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • MyEMS Web UI'yı yükleyin:

NodeJS'yi kurun:

sudo dnf install nodejs

config.js dosyasını düzenleyin:

Not

mapboxToken'ı https://mapbox.com adresinden alın ve ardından showOnlineMap'i true olarak ayarlayın. Çevrimiçi harita özelliğini kapatmak istiyorsanız, showOnlineMap'i false olarak ayarlayın

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

Derleme ve Sıkıştırma:

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

Yükleme: Dosyaları web sunucunuza yükleyin. Lütfen aşağıdaki yolun nginx.conf'da yapılandırılan yol ile aynı olduğundan emin olun.

sudo mv build  /var/www/myems-web

Portu kilidini açın ve firewall'a port ekleyin:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload

nginx hizmetini yeniden başlatın:

sudo systemctl restart nginx.service
İpucu

Eğer nginx '500 Internal Server Error' hatası ile karşılaşırsanız, SELinx modunu 'sudo setenforce 0' komutu ile değiştirerek sorunu çözebilirsiniz.

Yükleme Sonrası

Tebrikler! Artık MyEMS Admin UI ve Web UI'ye giriş yapabilirsiniz.

Varsayılan Portlar

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Sunucu adresinin 192.168.1.8 olduğunu varsayalım (gerçek sunucu adresiyle değiştirin) MyEMS Web UI'ye http://192.168.1.8 adresinden erişin (80 portu atlanabilir) MyEMS Admin UI'ye http://192.168.1.8:8001 adresinden erişin

Varsayılan Parolalar

MyEMS Admin UI

Kullanıcı adı:

administrator

Parola:

!MyEMS1

MyEMS Web UI

Kullanıcı adı:

administrator@myems.io

Parola:

!MyEMS1

Sorun Giderme