commit ae0f61e364e8c24e0f5b6497f196f84d814929be Author: Ümit Tunç Date: Sat Mar 28 07:02:08 2026 +0300 first commit diff --git a/implementation_plan.md b/implementation_plan.md new file mode 100644 index 0000000..1a3f197 --- /dev/null +++ b/implementation_plan.md @@ -0,0 +1,60 @@ +# 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. +- [ ] **Otomatik Konfigürasyon**: VHost, PHP.ini ve MySQL ayarlarının kullanıcı müdahalesi olmadan hazırlanması. + +## Teknik Detaylar + +### 1. Servis Yönetimi (Node.js Child Process) +Uygulama, servisleri Windows servisleri olarak kurmak yerine, taşınabilir (portable) binary'leri doğrudan `child_process.spawn` ile yönetecektir. +- **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ı**: + - **Dizin ve Alias Eşleme**: Bir dizini (örn: `C:/Projeler/Web`) bir alias'a (örn: `myproject.test`) bağlama arayüzü. + - **Config Path Yönetimi**: Proje bazlı `vhost` dosyalarının otomatik oluşturulması ve düzenlenmesi. + - **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ü.