Files
multiphp/implementation_plan.md
T
Ümit Tunç ae0f61e364 first commit
2026-03-28 07:02:08 +03:00

61 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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ü.