Files
multiphp/implementation_plan.md
T

6.0 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.
  • 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

1. Servis ve İndirme Yönetimi (Node.js)

Uygulama, servisleri Windows servisleri olarak kurmak yerine, taşınabilir (portable) binary'leri doğrudan child_process.spawn ile yönetecektir.

  • Download Manager: axios veya got gibi kütüphanelerle resmi sunuculardan (windows.php.net, dev.mysql.com vb.) ZIP dosyalarını indirir ve bin/ altına çıkartır.
  • Sürüm Algılama: composer.json dosyasını parse ederek require.php ve laravel/framework sürümlerini belirler.
  • Versiyon İzolasyonu: Her proje için config/projects.json içinde sürüm eşleşmeleri tutulur.
  • Nginx: bin/nginx/nginx.exe üzerinden başlatılacak. config/nginx/nginx.conf dosyası uygulama tarafından dinamik olarak güncellenecek.
  • PHP: Farklı sürümler bin/php/php7.4/php-cgi.exe, bin/php/php8.2/php-cgi.exe gibi yollarda bulunacak. Nginx, FastCGI (9000-9100 portları arası) üzerinden ilgili PHP sürümüne istek gönderecek.
  • MySQL: bin/mysql/bin/mysqld.exe ile başlatılacak. --defaults-file=config/mysql/my.ini parametresi kullanılacak.

2. Electron Mimarisi

  • Main Process: Servislerin yaşam döngüsünü yönetir. Uygulama kapandığında tüm alt süreçlerin (Nginx, PHP, MySQL) güvenli bir şekilde sonlandırılmasını sağlar.
  • IPC (Inter-Process Communication): Arayüzden gelen "Başlat/Durdur" komutlarını Main sürece iletir. Main süreçten gelen log akışını (stdout/stderr) arayüze basar.
  • Preload Script: Arayüz ile ana süreç arasında güvenli bir köprü kurarak hassas Node.js fonksiyonlarını kısıtlı bir şekilde dışa açar.

3. Kullanıcı Arayüzü (Material UI & Premium Tasarım)

Uygulamanın tamamı Material UI (MUI) kütüphanesi kullanılarak geliştirilecektir.

  • Kurumsal Kimlik ve Renkler:
    • Ana Renk (Primary): #153E5E (Koyu Lacivert/Mavi tonu)
    • Yardımcı Renk (Secondary): #4A7CA3 (Daha açık mavi tonu)
    • Logo: logo\truncgil-multiphp-server.svg yolu kullanılacak.
  • Dashboard: Servislerin çalışma durumu, CPU/RAM kullanımı ve aktif portlar.
  • Log Görüntüleyici: Her servis için ayrı sekmelerde gerçek zamanlı konsol çıktıları.
  • Ayarlar (Settings) Ekranı:
    • Servis İndirme Merkezi: Mevcut PHP, MySQL ve Nginx sürümlerini listeleyen ve tek tıkla indirme/silme imkanı sunan arayüz.
    • Dizin ve Alias Eşleme: Belirli bir dizine özel PHP ve MySQL sürümü atama imkanı.
    • Akıllı Algılama: Proje klasörü seçildiğinde "Bu proje PHP 8.1 ve Laravel 10 gerektiriyor, uygun sürümü atamak ister misiniz?" şeklinde öneri sunulması.
    • Config Path Yönetimi: Proje bazlı vhost dosyalarının otomatik oluşturulması ve düzenlenmesi.
    • Ağ Ayarları (Listen IP/Port): Servislerin sadece localhost (127.0.0.1) üzerinden mi yoksa dışa açık (0.0.0.0) şekilde mi çalışacağının belirlenmesi.
    • Global Ayarlar: Port seçimleri (80, 443, 3306), PHP sürüm atamaları.
  • Sanal Sunucu (VHost) Yönetimi: Yeni domain ekleme ve hosts dosyası güncelleme.
  • Dil Desteği (i18n):
    • Uygulama başlangıcında sistem dilini algılama veya kullanıcı seçimine göre tr, en, de dillerini yükleme.
    • Dil dosyalarının locales/ klasörü altında JSON formatında tutulması.

Klasör Yapısı

multiphp/
├── bin/                # Taşınabilir uygulamalar
│   ├── nginx/
│   ├── php/ (v7.4, v8.1, v8.2...)
│   └── mysql/
├── config/             # Yapılandırma dosyası şablonları
│   ├── nginx/vhosts/
│   ├── php/
│   └── mysql/
├── data/               # MySQL verileri (user database)
├── main/               # Electron ana süreç kodları
├── ui/                 # React/Vanilla JS arayüz dosyaları
├── locales/            # Dil dosyaları (tr.json, en.json, de.json)
└── package.json        # Bağımlılıklar ve scriptler

Doğrulama ve Test Adımları

  1. İzolasyon: Farklı PHP sürümlerinin aynı anda veya hızlı geçişlerle sorunsuz çalıştığının doğrulanması.
  2. Hata Yönetimi: Port çakışması veya binary eksikliği durumunda kullanıcıya bilgilendirme yapılması.
  3. Temiz Kapanış: Uygulama kapandığında hiçbir zombi sürecin (zombie process) kalmadığının kontrolü.