freebsd
sidebar_position: 13
FreeBSD
Bu kılavuzda, MyEMS'i FreeBSD sunucusunda dağıtacaksınız.
Önkoşullar
Bu kılavuz, MyEMS'in FreeBSD 13.2'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
pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit
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:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Eğer 'Failed building wheel for pillow' hatası ile karşılaşırsanız, Pillow Yükleme Kılavuzuna başvurmanız gerekir.
example.env dosyasına dayanarak .env dosyası oluşturun ve gerekirse .env dosyasını düzenleyin:
cp /myems-api/example.env /myems-api/.env
nano /myems-api/.env
monit izleme hizmetini kullanın ve monit yapılandırma dosyasını düzenleyin:
nano /etc/monit.d/myems-api
check process mymes-api with pidfile /var/run/myems-api/pid
start program = "/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /var/run/myems-api/pid --timeout 600 --workers=4 app:api &"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Hizmetleri başlatın:
monit restart
Adım 3 myems-admin
- NGINX Sunucusunu yükleyin
http://nginx.org/en/docs/install.html adresine başvurunuz
nginx hizmetini etkinleştirin:
service nginx enable
- NGINX'i yapılandırın
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
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
mkdir /var/www
cp -r ~/myems/myems-admin /var/www/myems-admin
chmod 0755 /var/www/myems-admin
Yapılandırma dosyasını kontrol edin ve gerekirse değiştirin:
nano /var/www/myems-admin/app/api.js
'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
nginx hizmetini yeniden başlatın:
service nginx restart
Adım 4 myems-modbus-tcp
Bu adımda, myems-modbus-tcp hizmetini yükleyeceksiniz.
cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
pip install -r requirements.txt
example.env dosyasına dayanarak .env dosyası oluşturun ve gerekirse .env dosyasını düzenleyin:
cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
nano /myems-modbus-tcp/.env
monit izleme hizmetini kullanın ve monit yapılandırma dosyasını düzenleyin:
nano /etc/monit.d/myems-modbus-tcp
check file myems-modbus-tcp path /myems-modbus-tcp/main.py
start program = "/usr/local/bin/python3 /myems-modbus-tcp/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Hizmeti başlatın:
monit restart
Adım 5 myems-cleaning
Bu adımda, myems-cleaning hizmetini yükleyeceksiniz.
cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
pip install -r requirements.txt
example.env dosyasına dayanarak .env dosyası oluşturun ve gerekirse .env dosyasını düzenleyin:
cp /myems-cleaning/example.env /myems-cleaning/.env
nano /myems-cleaning/.env
monit izleme hizmetini kullanın ve monit yapılandırma dosyasını düzenleyin:
nano /etc/monit.d/myems-cleaning
check file myems-cleaning path /myems-cleaning/main.py
start program = "/usr/local/bin/python3 /myems-cleaning/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Hizmeti başlatın:
monit restart
Adım 6 myems-normalization
Bu adımda, myems-normalization hizmetini yükleyeceksiniz.
cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
pip install -r requirements.txt
example.env dosyasına dayanarak .env dosyası oluşturun ve gerekirse .env dosyasını düzenleyin:
cp /myems-normalization/example.env /myems-normalization/.env
nano /myems-normalization/.env
monit izleme hizmetini kullanın ve monit yapılandırma dosyasını düzenleyin:
nano /etc/monit.d/myems-normalization
check file myems-normalization path /myems-normalization/main.py
start program = "/usr/local/bin/python3 /myems-normalization/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Hizmeti başlatın:
monit restart
Adım 7 myems-aggregation
Bu adımda, myems-aggregation hizmetini yükleyeceksiniz.
cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
pip install -r requirements.txt
example.env dosyasına dayanarak .env dosyası oluşturun ve gerekirse .env dosyasını düzenleyin:
cp /myems-aggregation/example.env /myems-aggregation/.env
nano /myems-aggregation/.env
monit izleme hizmetini kullanın ve monit yapılandırma dosyasını düzenleyin:
nano /etc/monit.d/myems-aggregation
check file myems-aggregation path /myems-aggregation/main.py
start program = "/usr/local/bin/python3 /myems-aggregation/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Hizmeti başlatın:
monit restart
Adım 8 myems-web
Bu adımda, myems-web UI hizmetini yükleyeceksiniz.
- NGINX Sunucusunu yükleyin
http://nginx.org/en/docs/install.html 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:
pkg install node-18.16.0
config.js dosyasını düzenleyin:
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
nano src/config.js
Derleme (Build):
npm i --unsafe-perm=true --allow-root --legacy-peer-deps
npm run build
Yükleme: Lütfen aşağıdaki yolun nginx.conf'da yapılandırılan yol ile aynı olduğundan emin olun.
rm -r /var/www/myems-web
mv build /var/www/myems-web
nginx hizmetini yeniden başlatın:
service nginx restart
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