docs: update implementation plan for multi-PHP support
This commit is contained in:
@@ -80,3 +80,48 @@ multiphp/
|
||||
2. **Güvenlik Testi**: Renderer içinden Node yeteneklerine erişilemediğinin teyidi.
|
||||
3. **Performans**: Başlangıç süresi ve RAM kullanım ölçümleri.
|
||||
4. **Temiz Kapanış**: Uygulama kapandığında tüm alt süreçlerin (Nginx, PHP, MySQL) sonlanması.
|
||||
|
||||
## Platformlar Arası (Cross-Platform) Yönetim Stratejisi
|
||||
|
||||
Uygulamanın Windows, macOS ve Linux üzerinde sorunsuz ve sürdürülebilir bir şekilde çalışması için "Platform Strategy Pattern" benimsenecektir.
|
||||
|
||||
### 1. Mimari Yaklaşım: Strategy Pattern
|
||||
İşletim sistemine duyarlı işlemler (servis başlatma, hosts dosyası düzenleme vb.) için bir interface tanımlanacak ve her platform için ayrı sınıflar oluşturulacaktır.
|
||||
|
||||
```typescript
|
||||
interface OSOperations {
|
||||
restartService(name: string, config: any): Promise<void>;
|
||||
editHostsFile(domain: string, ip: string): Promise<void>;
|
||||
getElevatedPrivileges(): Promise<boolean>;
|
||||
}
|
||||
// WindowsOps, MacOSOps ve LinuxOps sınıfları bu arayüzü implemente eder.
|
||||
```
|
||||
|
||||
### 2. Kritik Platform Farklılıkları ve Çözümler
|
||||
|
||||
#### **Yetki Yönetimi (Elevated Privileges)**
|
||||
- **Windows**: `sudo-prompt` veya `runas` ile admin yetkisi istenir.
|
||||
- **macOS/Linux**: `sudo` veya `polkit` kullanılır.
|
||||
- **Strateji**: Uygulamanın tamamını admin yapmak yerine, sadece yetki gerektiren "servis başlatma" veya "hosts yazma" gibi atomik işlemler yetki yükseltilerek (elevated) tetiklenmelidir.
|
||||
|
||||
#### **Dosya Sistemi ve Yapılandırma**
|
||||
- **Yollar**: Mutlaka `path.join()` kullanılacak. (Windows `\` vs Unix `/`).
|
||||
- **Harf Duyarlılığı**: Linux/macOS'te `php.ini` ile `PHP.ini` farkı gözetilecek.
|
||||
- **Satır Sonları**: Konfigürasyon dosyaları yazılırken Windows için `CRLF`, Unix için `LF` (`os.EOL`) kullanılacak.
|
||||
|
||||
#### **Servis Yönetimi (Process Managers)**
|
||||
- **Windows**: `.exe` spawn veya Windows Service (`sc.exe`/`winsw`).
|
||||
- **macOS**: `launchd` (`.plist` dosyaları).
|
||||
- **Linux**: `systemd` (`systemctl`).
|
||||
- **Hosts Dosyası**: Windows (`C:\Windows\System32\drivers\etc\hosts`) vs Unix (`/etc/hosts`).
|
||||
|
||||
#### **Paketleme ve Güvenlik (Code Signing)**
|
||||
- **Windows**: Blue Screen (SmartScreen) uyarısını engellemek için **EV Code Signing Certificate**.
|
||||
- **macOS**: "Uygulama hasarlı" hatasını engellemek için **Apple Notarization** (Xcode & Apple Developer ID).
|
||||
- **Linux**: `.deb`, `.rpm` ve **AppImage** formatlarında dağıtım.
|
||||
|
||||
#### **Terminal ve Log Akışı**
|
||||
- `node-pty` kütüphanesi kullanılarak her platformda yerel terminal emülasyonu sağlanacak (Windows için `conpty` desteği).
|
||||
|
||||
### 3. Geliştirme Sıralaması
|
||||
**Öneri**: Geliştirmeye **Windows** platformu üzerinde başlanması (en yaygın kullanım senaryosu olduğu için), ancak `OSOperations` yapısının ilk günden kurulmasıyla macOS ve Linux desteğinin eklenti/modül olarak kolayca dahil edilmesi hedeflenmektedir.
|
||||
|
||||
Reference in New Issue
Block a user