Yapılandırma
inSCADA tek bir JAR dosyası olarak dağıtılır. Tüm yapılandırma parametreleri JAR içindeki application.yml dosyasında varsayılan değerleriyle gömülüdür.
Kurulum Dizin Yapısı
Section titled “Kurulum Dizin Yapısı”Windows kurulumu sonrası dizin yapısı:
C:\Program Files\inSCADA\├── inscada.jar ← platform (tek dosya)├── inscada-keystore.p12 ← SSL sertifika├── inscada.cer ← dışa aktarılmış public sertifika├── application.yml ← özelleştirilmiş yapılandırma (opsiyonel)├── inSCADA_Service_Install.bat ← NSSM servis kurulum scripti├── inSCADA_TimeserisDB_Service_Install.bat ← InfluxDB servis kurulum scripti├── firewallsettings.bat ← Windows Firewall kural scripti├── create-cert.bat ← SSL sertifika oluşturma (interaktif)├── auto-create-cert.bat ← SSL sertifika oluşturma (otomatik)├── files\ ← dosya depolama (SVG, rapor, ekler)├── logs\ ← uygulama logları│ └── log.log└── influxdb-1.8.3-1\ ← InfluxDB zaman serisi veritabanı ├── influxd.exe ├── influx.exe ├── influxdb.conf └── TimeseriesData\ ← tarihsel veri dosyaları
C:\Program Files\OpenJDK\└── jdk-11.0.18.10-hotspot\ ← Java 11 runtime └── bin\java.exe
C:\Program Files\PostgreSQL\12\ ← PostgreSQL veritabanı └── bin\Yapılandırmayı Özelleştirme
Section titled “Yapılandırmayı Özelleştirme”Varsayılan ayarları değiştirmenin iki yolu vardır:
1. Harici application.yml (opsiyonel)
Section titled “1. Harici application.yml (opsiyonel)”JAR’ın yanına (aynı dizine) bir application.yml dosyası koyarsanız, Spring Boot harici dosyayı otomatik algılar ve JAR içindeki varsayılanların üzerine yazar. Yalnızca değiştirmek istediğiniz parametreleri yazmanız yeterlidir:
# C:\Program Files\inSCADA\application.ymlspring: datasource: url: jdbc:postgresql://192.168.1.100:5432/promis password: guclu_sifreserver: http: redirect: true2. JVM -D parametreleri (NSSM ile)
Section titled “2. JVM -D parametreleri (NSSM ile)”Kurulum scripti bu yöntemi kullanır — parametreler doğrudan NSSM üzerinden -D flag’leri ile geçirilir:
-Dserver.ssl.key-store="C:\Program Files\inSCADA\inscada-keystore.p12"-Dserver.ssl.key-store-password=19051905-Dspring.influxdb.username=inscada-Dspring.influxdb.password=19051905-Dspring.profiles.active=dev-Duser.timezone=Europe/Istanbul-Dins.files.path="C:\Program Files\inSCADA\files"application.yml Parametreleri
Section titled “application.yml Parametreleri”Veritabanı (PostgreSQL)
Section titled “Veritabanı (PostgreSQL)”spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/promis username: postgres password: 1907 minimum-idle: 10 maximum-pool-size: 25| Parametre | Varsayılan | Açıklama |
|---|---|---|
| url | jdbc:postgresql://localhost:5432/promis | PostgreSQL bağlantı URL’si. Uzak sunucu için localhost yerine IP yazın |
| username | postgres | Veritabanı kullanıcı adı |
| password | 1907 | Veritabanı şifresi |
| minimum-idle | 10 | Havuzdaki minimum boş bağlantı sayısı |
| maximum-pool-size | 25 | Maksimum eşzamanlı bağlantı sayısı |
jpa: properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect show_sql: false default_schema: inscada jdbc: batch_size: 20 order_inserts: true order_updates: true hibernate: ddl-auto: none| Parametre | Varsayılan | Açıklama |
|---|---|---|
| default_schema | inscada | PostgreSQL şema adı |
| show_sql | false | SQL sorgularını loga yaz (debug için) |
| batch_size | 20 | Toplu INSERT/UPDATE batch boyutu |
| ddl-auto | none | Şema otomatik oluşturma kapalı (Flyway yönetir) |
Zaman Serisi Veritabanı (InfluxDB)
Section titled “Zaman Serisi Veritabanı (InfluxDB)”spring: influxdb: database: inscada url: http://localhost:8086 username: inscada password: 19051905| Parametre | Varsayılan | Açıklama |
|---|---|---|
| url | http://localhost:8086 | InfluxDB HTTP API adresi |
| database | inscada | InfluxDB veritabanı adı |
| username | inscada | InfluxDB kullanıcı adı |
| password | — | InfluxDB şifresi |
InfluxDB 1.8 kullanılır ve kurulum dizini altında (influxdb-1.8.3-1/) yer alır. Değişken logları (tarihsel veriler) burada tutulur.
InfluxDB Retention Policy’leri
Section titled “InfluxDB Retention Policy’leri”Kurulum sırasında otomatik oluşturulan saklama politikaları:
| Retention Policy | Süre | Veri Tipi |
|---|---|---|
| autogen | Sınırsız | Varsayılan |
| variable_value_rp | 365 gün | Değişken değerleri |
| event_log_rp | 14 gün | Olay logları |
| fired_alarm_rp | 365 gün | Alarm geçmişi |
| auth_attempt_rp | 365 gün | Giriş denemeleri |
Cache (Redis)
Section titled “Cache (Redis)”spring: redis: host: localhost port: 6379| Parametre | Varsayılan | Açıklama |
|---|---|---|
| host | localhost | Redis sunucu adresi |
| port | 6379 | Redis port numarası |
Redis, anlık değişken değerlerinin cache’lenmesi ve gerçek zamanlı veri dağıtımı için kullanılır.
Sunucu & Port Ayarları
Section titled “Sunucu & Port Ayarları”server: port: 8082 ssl: enabled: true key-alias: inscada key-store: "C:\\Program Files\\inSCADA\\inscada-keystore.p12" key-store-type: PKCS12 key-store-password: 19051905 http: redirect: false port: 8081| Parametre | Varsayılan | Açıklama |
|---|---|---|
| server.port | 8082 | HTTPS port numarası |
| server.http.port | 8081 | HTTP port numarası |
| server.http.redirect | false | HTTP → HTTPS yönlendirme |
| ssl.enabled | true | SSL/TLS etkin |
| ssl.key-alias | inscada | Sertifika alias’ı |
| ssl.key-store | — | SSL sertifika dosyası (PKCS12) yolu |
| ssl.key-store-password | — | Keystore şifresi |
Port Tablosu
Section titled “Port Tablosu”| Port | Protokol | Kullanım |
|---|---|---|
| 8081 | HTTP | Web arayüzü ve REST API |
| 8082 | HTTPS | Web arayüzü ve REST API (şifreli) |
| 8086 | HTTP | InfluxDB API (dahili) |
| 5432 | TCP | PostgreSQL (dahili) |
| 6379 | TCP | Redis (dahili) |
Platform Ayarları (ins.*)
Section titled “Platform Ayarları (ins.*)”ins: node: id: ins01 files: path: "C:\\Program Files\\inSCADA\\files" jwt: secret: accessToken: duration: 5 refreshToken: duration: 1 job: executor: max-threads: 1000 variable: value: list: size: 300| Parametre | Varsayılan | Açıklama |
|---|---|---|
| ins.node.id | ins01 | Node tanımlayıcı (cluster ortamında benzersiz olmalı) |
| ins.files.path | ./fs | Dosya depolama dizini (SVG, rapor, ek dosyalar) |
| ins.jwt.secret | (otomatik) | JWT token imzalama anahtarı. Boş bırakılırsa rastgele üretilir |
| ins.accessToken.duration | 5 | Access token süresi (dakika) |
| ins.refreshToken.duration | 1 | Refresh token süresi (gün) |
| ins.job.executor.max-threads | 1000 | Maksimum eşzamanlı iş parçacığı (script, bağlantı, rapor vb.) |
| ins.variable.value.list.size | 300 | Değişken son değer listesi boyutu |
Mesaj Kuyruğu (Apache Artemis)
Section titled “Mesaj Kuyruğu (Apache Artemis)”spring: artemis: enabled: false mode: NATIVE remote: broker: enabled: false list: - host: 192.168.1.5 port: 61616| Parametre | Varsayılan | Açıklama |
|---|---|---|
| artemis.enabled | false | Dahili Artemis broker. Tek makine kurulumunda false |
| artemis.mode | NATIVE | Broker modu |
| remote.broker.enabled | false | Uzak broker kullanımı (cluster/HA yapılandırması) |
| remote.broker.list | — | Uzak broker listesi (host + port) |
Cluster Yapılandırması
Section titled “Cluster Yapılandırması”ins: cluster: enabled: false redis: replication: enabled: falseCluster yapılandırması hakkında detaylı bilgi için Yedekli Mimari sayfasına bakın.
Dosya Yükleme Limiti
Section titled “Dosya Yükleme Limiti”spring: servlet: multipart: max-file-size: 256MB max-request-size: 256MB| Parametre | Varsayılan | Açıklama |
|---|---|---|
| max-file-size | 256MB | Tekil dosya maksimum boyutu |
| max-request-size | 256MB | İstek başına maksimum boyut |
Zaman Dilimi
Section titled “Zaman Dilimi”-Duser.timezone=Europe/IstanbulServis kurulum scriptinde JVM parametresi olarak belirtilir. Tarih/saat gösterimleri ve zamanlama işlemleri bu zaman dilimine göre çalışır.
Veritabanı Migrasyon (Flyway)
Section titled “Veritabanı Migrasyon (Flyway)”spring: flyway: schemas: inscada table: schema_versionFlyway, veritabanı şemasını otomatik yönetir. Güncelleme sırasında yeni migration’lar otomatik uygulanır. Manuel müdahale gerekmez.
Profiller
Section titled “Profiller”inSCADA üç yapılandırma profili destekler:
Varsayılan (default)
Section titled “Varsayılan (default)”Özel profil belirtilmediğinde kullanılır.
dev (Geliştirme)
Section titled “dev (Geliştirme)”spring: profiles: dev jpa: properties: hibernate: show_sql: false use_sql_comments: true format_sql: trueSQL logları etkinleşir. Geliştirme ve hata ayıklama için kullanılır. Kurulum scriptinde varsayılan olarak dev profili ayarlıdır.
test (Test)
Section titled “test (Test)”spring: profiles: test datasource: url: jdbc:postgresql://192.168.2.123:5432/promis influxdb: url: http://192.168.2.100:9096 relay: true cluster: influxdb_cluster gzip: true redis: sentinel: master: insredis nodes: 192.168.2.154:26379, 192.168.2.118:26379, 192.168.2.136:26379InfluxDB Relay, Redis Sentinel ve uzak veritabanı ile yüksek erişilebilirlik test ortamı.
production
Section titled “production”spring: profiles: production influxdb: gzip: trueInfluxDB GZIP sıkıştırma etkinleşir. Ağ trafiğini azaltır.
Profil Değiştirme
Section titled “Profil Değiştirme”:: NSSM ile profil değiştirmenssm set inSCADA AppParameters "... -Dspring.profiles.active=production ..."
:: Veya komut satırındanjava -jar inscada.jar --spring.profiles.active=productionNSSM ile Windows Servis Kurulumu
Section titled “NSSM ile Windows Servis Kurulumu”NSSM (Non-Sucking Service Manager), inSCADA’yı Windows servisi olarak çalıştırır. Platform, bilgisayar açıldığında otomatik başlar ve arka planda çalışır.
Hazır Kurulum Scripti
Section titled “Hazır Kurulum Scripti”Kurulum dizininde inSCADA_Service_Install.bat dosyası bulunur. Yönetici olarak çalıştırmanız yeterlidir:
:: Yönetici olarak çalıştırın"C:\Program Files\inSCADA\inSCADA_Service_Install.bat"Bu script şunları yapar:
- Mevcut inSCADA servisini durdurur ve kaldırır (varsa)
- Yeni servisi NSSM ile oluşturur
- Tüm JVM ve yapılandırma parametrelerini ayarlar
- Otomatik başlatma ve hata durumunda yeniden başlatma yapılandırır
- Servisi başlatır
Servis Scripti İçeriği
Section titled “Servis Scripti İçeriği”@echo offsetlocal
set SERVICE_NAME="inSCADA"set DISPLAY_NAME="inSCADA Service"set JAVA_EXE="C:\Program Files\OpenJDK\jdk-11.0.18.10-hotspot\bin\java.exe"set APP_DIR="C:\Program Files\inSCADA"
set APP_PARAMS="-Dserver.ssl.key-alias=inscada ^ -Dserver.ssl.key-store-password=19051905 ^ -Dserver.ssl.key-store=\"C:\Program Files\inSCADA\inscada-keystore.p12\" ^ -Dspring.influxdb.username=inscada ^ -Dspring.influxdb.password=19051905 ^ -Dspring.servlet.multipart.max-request-size=256MB ^ -Dspring.servlet.multipart.max-file-size=256MB ^ -Dins.variable.value.list.size=300 ^ -Djava.library.path=C:\Windows\system32 ^ -Dspring.profiles.active=dev ^ -Duser.timezone=Europe/Istanbul ^ -Dspring.datasource.url=jdbc:postgresql://localhost:5432/promis ^ -Dins.files.path=\"C:\Program Files\inSCADA\files\" ^ -jar \"C:\Program Files\inSCADA\inscada.jar\""
nssm stop %SERVICE_NAME% >nul 2>&1nssm remove %SERVICE_NAME% confirm >nul 2>&1
nssm install %SERVICE_NAME% %JAVA_EXE%nssm set %SERVICE_NAME% DisplayName "%DISPLAY_NAME%"nssm set %SERVICE_NAME% AppDirectory %APP_DIR%nssm set %SERVICE_NAME% AppParameters %APP_PARAMS%nssm set %SERVICE_NAME% ObjectName LocalSystemnssm set %SERVICE_NAME% Start SERVICE_AUTO_STARTnssm set %SERVICE_NAME% AppExit Default Restartnssm set %SERVICE_NAME% AppRestartDelay 5000
nssm start %SERVICE_NAME%InfluxDB Servis Kurulumu
Section titled “InfluxDB Servis Kurulumu”InfluxDB de ayrı bir Windows servisi olarak çalışır:
:: Yönetici olarak çalıştırın"C:\Program Files\inSCADA\inSCADA_TimeserisDB_Service_Install.bat"Bu script inSCADA TimeSeries DB adında bir servis oluşturur:
| Ayar | Değer |
|---|---|
| Executable | C:\Program Files\inSCADA\influxdb-1.8.3-1\influxd.exe |
| Config | influxdb-1.8.3-1\influxdb.conf |
| Start | Otomatik |
| Restart | Hata durumunda otomatik (5s gecikme) |
Manuel Servis Oluşturma
Section titled “Manuel Servis Oluşturma”Özel parametrelerle servis kurmak isterseniz:
:: NSSM'i indirin: https://nssm.cc/download:: nssm.exe'yi PATH'e ekleyin veya tam yol ile çalıştırın
:: Servisi oluşturnssm install inSCADA "C:\Program Files\OpenJDK\jdk-11.0.18.10-hotspot\bin\java.exe"
:: Çalışma dizininssm set inSCADA AppDirectory "C:\Program Files\inSCADA"
:: JVM parametreleri — ihtiyaca göre düzenleyinnssm set inSCADA AppParameters ^ "-Xms512m -Xmx4096m ^ -Dserver.ssl.key-alias=inscada ^ -Dserver.ssl.key-store=\"C:\Program Files\inSCADA\inscada-keystore.p12\" ^ -Dserver.ssl.key-store-password=19051905 ^ -Dspring.profiles.active=production ^ -Duser.timezone=Europe/Istanbul ^ -jar \"C:\Program Files\inSCADA\inscada.jar\""
:: Otomatik başlatma & hata yönetiminssm set inSCADA DisplayName "inSCADA Service"nssm set inSCADA Start SERVICE_AUTO_STARTnssm set inSCADA AppExit Default Restartnssm set inSCADA AppRestartDelay 5000
:: Başlatnssm start inSCADAJVM Bellek Parametreleri
Section titled “JVM Bellek Parametreleri”| Parametre | Açıklama | Önerilen |
|---|---|---|
| -Xms | Başlangıç heap belleği | 512m |
| -Xmx | Maksimum heap belleği | 2048m (2 GB) |
Büyük projeler (1000+ değişken, çok sayıda bağlantı) için:
-Xms1024m -Xmx4096mServis Yönetimi
Section titled “Servis Yönetimi”:: Servisi başlat / durdur / yeniden başlatnssm start inSCADAnssm stop inSCADAnssm restart inSCADA
:: Durum kontrolnssm status inSCADA
:: Yapılandırmayı düzenle (GUI)nssm edit inSCADA
:: Servisi kaldırnssm remove inSCADA confirmWindows standart komutları ile:
net start inSCADAnet stop inSCADAsc query inSCADA
:: veya services.msc ile grafiksel yönetimSSL Sertifika Yönetimi
Section titled “SSL Sertifika Yönetimi”Otomatik Sertifika Oluşturma
Section titled “Otomatik Sertifika Oluşturma”Kurulum dizinindeki auto-create-cert.bat scripti:
- Self-signed PKCS12 keystore oluşturur
- SAN (Subject Alternative Name) ile localhost, bilgisayar adı ve IP ekler
- Public sertifikayı
inscada.cerolarak dışa aktarır - Sertifikayı Windows Trusted Root’a otomatik ekler
:: Yönetici olarak çalıştırın"C:\Program Files\inSCADA\auto-create-cert.bat"İnteraktif Sertifika Oluşturma
Section titled “İnteraktif Sertifika Oluşturma”create-cert.bat scripti özel değerler girmenizi sağlar:
"C:\Program Files\inSCADA\create-cert.bat":: Keystore dosya adı, şifre, CN, IP ve hostname sorarÖzel Sertifika Kullanımı
Section titled “Özel Sertifika Kullanımı”Kendi CA sertifikanızı kullanmak için:
# PEM'den PKCS12 oluşturunkeytool -importkeystore -srckeystore my-cert.pfx \ -srcstoretype PKCS12 -destkeystore inscada-keystore.p12 \ -deststoretype PKCS12 -alias inscada
# Veya OpenSSL ileopenssl pkcs12 -export \ -in certificate.crt -inkey private.key \ -out inscada-keystore.p12 -name inscadaSonra NSSM parametrelerini güncelleyin:
nssm set inSCADA AppParameters "... -Dserver.ssl.key-store=\"C:\Program Files\inSCADA\inscada-keystore.p12\" -Dserver.ssl.key-store-password=yeni_sifre ..."nssm restart inSCADAWindows Firewall Kuralları
Section titled “Windows Firewall Kuralları”Kurulum dizinindeki firewallsettings.bat scripti gerekli port kurallarını ekler:
:: Yönetici olarak çalıştırın"C:\Program Files\inSCADA\firewallsettings.bat"Eklenen kurallar:
| Kural | Yön | Port | Protokol |
|---|---|---|---|
| inSCADA HTTP (8081) | Gelen + Giden | 8081 | TCP |
| inSCADA HTTPS (8082) | Gelen + Giden | 8082 | TCP |
Yapılandırma Kontrol Listesi
Section titled “Yapılandırma Kontrol Listesi”Yeni kurulum sonrası kontrol edilmesi gereken parametreler:
| Parametre | Kontrol |
|---|---|
spring.datasource.password | Varsayılan şifre değiştirildi mi? |
server.ssl.key-store-password | Sertifika şifresi güçlü mü? |
spring.influxdb.password | InfluxDB şifresi güvenli mi? |
ins.jwt.secret | Üretim ortamında güçlü bir secret tanımlandı mı? |
ins.accessToken.duration | Güvenlik gereksinimlerine uygun mu? (varsayılan: 5 dk) |
server.http.redirect | Üretimde true olarak ayarlandı mı? |
user.timezone | Doğru zaman dilimi ayarlı mı? |
JVM -Xmx | Proje boyutuna uygun bellek ayrıldı mı? |
| Firewall | firewallsettings.bat çalıştırıldı mı? |
| SSL Sertifika | Sertifika Trusted Root’a eklendi mi? |