first commit
This commit is contained in:
@@ -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ü.
|
||||||
Reference in New Issue
Block a user