Files
multiphp/implementation_plan.md
T

8.4 KiB
Raw Blame History

Trunçgil Multi-PHP & MySQL Server (Electron) Uygulama Planı

Bu plan, Windows platformunda Laragon veya XAMPP benzeri, ancak Electron ile modern bir arayüze sahip, çoklu PHP sürümlerini destekleyen bir geliştirme sunucusu uygulamasının yapımını kapsar.

Temel Hedefler

  • Çoklu PHP Desteği: Kullanıcının istediği PHP sürümünü seçip anında aktif edebilmesi.
  • MySQL/MariaDB Yönetimi: Veritabanı servisinin uygulama içinden başlatılıp durdurulabilmesi.
  • Nginx Entegrasyonu: Web sunucusu olarak Nginx kullanarak performanslı bir yapı sunulması.
  • Material UI (MUI): Tüm arayüz sisteminde modern ve standart bir görünüm için MUI kullanımı.
  • Gelişmiş Ayarlar (Settings): Alias yapılandırması, VHost yönetimi ve özel dizin eşlemeleri.
  • Dinamik İndirme (Download Manager): Kurulumda boş gelen uygulamanın kullanıcı isteğiyle PHP, MySQL, Nginx gibi servisleri indirebilmesi.
  • Proje Bazlı Sürüm Yönetimi: Hangi projenin/dizinin hangi PHP ve MySQL sürümüyle çalışacağının tekil olarak belirlenmesi.
  • Kurumsal Kimlik: Belirlenen renk paleti (#153E5E, #4A7CA3) ve logo (truncgil-multiphp-server.svg) ile markalı bir arayüz.
  • Otomatik Sürüm Algılama (Auto-Detect): Proje dizinindeki composer.json dosyasını analiz ederek gerekli PHP ve Laravel sürümünü otomatik tespit etme.
  • Arkaplanda Çalışma (System Tray): Uygulamanın sistem tepsisinde (tray) çalışarak servisleri yönetmeye devam etmesi.
  • Windows Servis Entegrasyonu: Nginx, PHP ve MySQL servislerinin opsiyonel olarak Windows Servisi (sc.exe veya winsw) olarak kurulup yönetilebilmesi.
  • Uluslararasılaştırma (i18n): Uygulamanın Türkçe, İngilizce ve Almanca gibi çoklu dil desteği sunması (tr.json, en.json, de.json).
  • Otomatik Konfigürasyon: VHost, PHP.ini ve MySQL ayarlarının kullanıcı müdahalesi olmadan hazırlanması.

Teknik Detaylar ve Modern Yaklaşım (2026 Standartları)

1. Teknoloji Yığını ve Araçlar

Bakım kolaylığı ve tip güvenliği için proje modern araçlarla yapılandırılacaktır:

  • Dil: TypeScript (Tüm süreçlerde tip güvenliği için).
  • Build Aracı: electron-vite (Vite tabanlı, hızlı derleme ve süreç yönetimi).
  • Framework: React (veya Vue), durum yönetimi için verinin Main sürece sadık kaldığı (Single Source of Truth) bir yapı.
  • Paketleme: Electron Forge ve electron-updater (Otomatik güncelleme desteği için).

2. Güvenlik Odaklı Mimari (Security-First)

Renderer (UI) sürecinin doğrudan sistem kaynaklarına erişimi kesinlikle engellenecektir:

  • Context Isolation & Sandboxing: contextIsolation: true ve sandbox: true zorunlu olarak aktif edilecek.
  • Preload Scripts: Renderer ve Main arasındaki tek köprü. contextBridge ile sadece gerekli fonksiyonlar güvenli bir şekilde aktarılacak.
  • IPC Service Layer: Tüm sistem işlemleri (dosya yazma, servis başlatma) ipcMain.handle ve ipcRenderer.invoke üzerinden asenkron servisler olarak kurgulanacak.

3. Servis ve İşlem Yönetimi (Node.js)

  • Modüler Main Process: Mantık main.ts içinde boğulmak yerine src/main/services/, src/main/ipc/ gibi klasörlere ayrılacak.
  • Worker Threads: Ağır CPU gerektiren işlemler (ZIP açma, log analizi vb.) ana süreci (Main) bloklamaması için Worker thread'lerde çalıştırılacak.
  • Child Process & Windows Services:
    • Servisler varsayılan olarak child_process.spawn ile uygulama açıkken yönetilir.
    • Kullanıcı isteğine bağlı olarak winsw (Windows Service Wrapper) veya benzeri bir yöntemle kalıcı Windows Servisi olarak sisteme kurulabilir.
  • System Tray Yönetimi:
    • Uygulama ana ekranı kapatıldığında sistem tepsisinde çalışmaya devam eder (Minimize to tray).
    • Sağ tık menüsü ile tüm servisleri "Durdur/Başlat" ve "Çıkış" seçenekleri sunulur.

4. Kullanıcı Arayüzü & i18n

  • Material UI (MUI): Kurumsal kimlik renkleri (#153E5E, #4A7CA3) ile premium tasarım.
  • i18n (Localization): tr.json, en.json, de.json dosyaları locales/ klasöründe tutulacak. i1ext benzeri bir kütüphane ile hem Renderer hem de Main süreçte dil desteği sunulacak.
  • Code Splitting: Uygulama RAM kullanımını optimize etmek için lazy loading kullanılacak.

5. Performans ve Bakım

  • ASAR Integrity: Paketleme sırasında bütünlük kontrolü aktif edilecek.
  • Lazy Load & Startup: V8 snapshot ve asenkron modül yükleme ile başlangıç hızı optimize edilecek.
  • Auto-Update: Kullanıcının müdahalesine gerek kalmadan arka planda güncelleme kontrolü.

Klasör Yapısı (Best Practice)

multiphp/
├── src/
│   ├── main/           # Ana süreç (TypeScript)
│   │   ├── services/   # ProcessManager, DownloadService, ConfigService
│   │   ├── ipc/        # IPC Handlers
│   │   └── index.ts    # Giriş noktası
│   ├── preload/        # Bridge scriptleri
│   ├── renderer/       # UI (React/Vite)
│   │   ├── components/
│   │   ├── hooks/
│   │   └── locales/    # tr.json, en.json...
│   └── shared/         # Main ve Renderer ortak tipler/sabitler
├── bin/                # Portable binary'ler (İndirildikten sonra)
├── config/             # Şablonlar (Nginx, PHP, MySQL)
├── out/                # Build çıktıları
└── package.json

Doğrulama ve Test Adımları

  1. İzolasyon: Farklı PHP sürümlerinin çakışmadan çalışması.
  2. Güvenlik Testi: Renderer içinden Node yeteneklerine erişilemediğinin teyidi.
  3. Performans: Başlangıç süresi ve RAM kullanım ölçümleri.
  4. Temiz Kapanış: Uygulama kapandığında tüm alt süreçlerin (Nginx, PHP, MySQL) sonlanması.

Platformlar Arası (Cross-Platform) Yönetim Stratejisi

Uygulamanın Windows, macOS ve Linux üzerinde sorunsuz ve sürdürülebilir bir şekilde çalışması için "Platform Strategy Pattern" benimsenecektir.

1. Mimari Yaklaşım: Strategy Pattern

İşletim sistemine duyarlı işlemler (servis başlatma, hosts dosyası düzenleme vb.) için bir interface tanımlanacak ve her platform için ayrı sınıflar oluşturulacaktır.

interface OSOperations {
  restartService(name: string, config: any): Promise<void>;
  editHostsFile(domain: string, ip: string): Promise<void>;
  getElevatedPrivileges(): Promise<boolean>;
}
// WindowsOps, MacOSOps ve LinuxOps sınıfları bu arayüzü implemente eder.

2. Kritik Platform Farklılıkları ve Çözümler

Yetki Yönetimi (Elevated Privileges)

  • Windows: sudo-prompt veya runas ile admin yetkisi istenir.
  • macOS/Linux: sudo veya polkit kullanılır.
  • Strateji: Uygulamanın tamamını admin yapmak yerine, sadece yetki gerektiren "servis başlatma" veya "hosts yazma" gibi atomik işlemler yetki yükseltilerek (elevated) tetiklenmelidir.

Dosya Sistemi ve Yapılandırma

  • Yollar: Mutlaka path.join() kullanılacak. (Windows \ vs Unix /).
  • Harf Duyarlılığı: Linux/macOS'te php.ini ile PHP.ini farkı gözetilecek.
  • Satır Sonları: Konfigürasyon dosyaları yazılırken Windows için CRLF, Unix için LF (os.EOL) kullanılacak.

Servis Yönetimi (Process Managers)

  • Windows: .exe spawn veya Windows Service (sc.exe/winsw).
  • macOS: launchd (.plist dosyaları).
  • Linux: systemd (systemctl).
  • Hosts Dosyası: Windows (C:\Windows\System32\drivers\etc\hosts) vs Unix (/etc/hosts).

Paketleme ve Güvenlik (Code Signing)

  • Windows: Blue Screen (SmartScreen) uyarısını engellemek için EV Code Signing Certificate.
  • macOS: "Uygulama hasarlı" hatasını engellemek için Apple Notarization (Xcode & Apple Developer ID).
  • Linux: .deb, .rpm ve AppImage formatlarında dağıtım.

Terminal ve Log Akışı

  • node-pty kütüphanesi kullanılarak her platformda yerel terminal emülasyonu sağlanacak (Windows için conpty desteği).

3. Geliştirme Sıralaması

Öneri: Geliştirmeye Windows platformu üzerinde başlanması (en yaygın kullanım senaryosu olduğu için), ancak OSOperations yapısının ilk günden kurulmasıyla macOS ve Linux desteğinin eklenti/modül olarak kolayca dahil edilmesi hedeflenmektedir.