Files
multiphp/implementation_plan.md
T

4.8 KiB
Raw Blame History

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.
  • 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.
  • 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. Bu, hem profesyonel bir görünüm hem de erişilebilirlik sağlayacaktır.

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

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ı
└── 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ü.