# Desteklenen İşletim Sistemleri

## Genel Bakış

WHost, hem Debian hem de RHEL tabanlı dağıtımları desteklemek için bir OS soyutlama katmanı kullanır. Tüm OS'a özgü işlemler `core/os_commands.py` üzerinden yönlendirilir; bu sayede platformlar arasında tutarlı davranış sağlanır.

---

## Desteklenen Dağıtımlar

WHost bilinçli olarak dar bir OS matrisiyle gelir. Kurulum aracı
(`installer/lib/detect_os.sh`), **bunların dışındaki her sürümü yumuşak bir
uyarı yerine, hiçbir şey kurmadan `exit 1` ile reddeder.** Kabul ettikleri:
Ubuntu 22.04 ve 24.04 (daha eski ya da daha yeni başka Ubuntu sürümü yok) ile
AlmaLinux, Rocky Linux ve CentOS Stream'in 9 sürümü; Debian 12 tanınır ama
reddedilir, Red Hat Enterprise Linux'un kendisi ise listede yoktur.
Agent'ın derlenmiş modülleri CPython 3.12 ister (aşağıda *Agent Python
çalışma zamanı*), Debian 12 ise bunu paketlemez; Debian 11 ve RHEL 8 ailesi
gibi eski sürümler de yığının hedeflediğinden eski sistem kütüphaneleriyle
(Python, `libmodsecurity3`) gelir.

### Debian Ailesi

| Dağıtım | Sürüm | Kod Adı | Durum |
|-------------|---------|----------|--------|
| Ubuntu | 22.04 LTS | Jammy Jellyfish | Tam Destekli (Python 3.12 deadsnakes PPA'dan) |
| Ubuntu | 24.04 LTS | Noble Numbat | Tam Destekli |
| Debian | 12 | Bookworm | 1.0 hattında kurulamaz (Python 3.12 paketi yok); çoklu-ABI build ile geri gelir |

### RHEL Ailesi

| Dağıtım | Sürüm | Durum |
|-------------|---------|--------|
| AlmaLinux | 9 | Tam Destekli |
| Rocky Linux | 9 | Tam Destekli |
| CentOS Stream | 9 | Tam Destekli |

Kurulum aracı bu sistemlerde SELinux'u Permissive'e çevirir — bkz.
[RHEL ailesinde SELinux](installation.md#rhel-ailesinde-selinux).

---

## OS'a Özgü Farklılıklar

### Paket Yönetimi

| İşlem | Debian/Ubuntu | RHEL/Alma/Rocky |
|-----------|--------------|-----------------|
| Kurulum | `apt-get install -y` | `dnf install -y` |
| Kaldırma | `apt-get remove -y` | `dnf remove -y` |
| Dizini güncelleme | `apt-get update -y` | `dnf makecache --refresh` |

### Web Sunucusu

| Bileşen | Debian/Ubuntu | RHEL/Alma/Rocky |
|-----------|--------------|-----------------|
| Apache paketi | `apache2` | `httpd` |
| Apache kullanıcısı | `www-data` | `apache`; önde nginx varken `nginx` grubunun üyesidir (hesap dizinleri ve PHP-FPM soketleri bu gruba aittir) |
| Apache konfigürasyonu | `/etc/apache2/sites-available/` | `/etc/httpd/conf.d/` |
| Site etkinleştirme | `a2ensite` | Yok — `conf.d/` içindeki dosyalar olduğu gibi yüklenir |
| Nginx konfigürasyonu | `/etc/nginx/sites-available/` + `sites-enabled/` | `/etc/nginx/conf.d/` |

### PHP-FPM

| Bileşen | Debian/Ubuntu | RHEL/Alma/Rocky |
|-----------|--------------|-----------------|
| Paket adı | `php8.4-fpm` | `php84-php-fpm` (Remi repo) |
| Servis adı | `php8.4-fpm` | `php84-php-fpm` |
| Konfigürasyon yolu | `/etc/php/8.4/fpm/` | `/etc/opt/remi/php84/` |
| Pool dizini | `/etc/php/8.4/fpm/pool.d/` | `/etc/opt/remi/php84/php-fpm.d/` |
| Hesap pool soketi | `/run/php/php-fpm-<hesap>-8.4.sock` | `/run/php/php-fpm-<hesap>-8.4.sock`; klasör `/etc/tmpfiles.d/whost-php-fpm.conf` ile tanımlanır |
| Ortak pool (phpMyAdmin, webmail) | `www`, `www-data` olarak `/run/php/php8.4-fpm.sock` üzerinde çalışır | `www`, kurulum aracı tarafından `nginx` olarak `/run/php/php8.4-fpm.sock` üzerinde çalışacak şekilde yazılır |

### Güvenlik Duvarı

| Bileşen | Debian/Ubuntu | RHEL/Alma/Rocky |
|-----------|--------------|-----------------|
| Güvenlik duvarı | UFW | firewalld |
| Port izin verme | `ufw allow 80/tcp` | `firewall-cmd --permanent --add-port=80/tcp` |
| Port kapatma (izin kuralını silme) | `ufw delete allow 80/tcp` | `firewall-cmd --permanent --remove-port=80/tcp` |
| Yeniden yükle | `ufw reload` | `firewall-cmd --reload` |

### Servis Yönetimi

Tüm dağıtımlar servis yönetimi için `systemctl` kullanır. Servis adları farklılık gösterebilir:

| Servis | Debian/Ubuntu | RHEL/Alma/Rocky |
|---------|--------------|-----------------|
| Web sunucusu | `apache2` / `nginx` | `httpd` / `nginx` |
| Veritabanı | `mariadb` | `mariadb` |
| DNS | `pdns` | `pdns` |
| Mail | `postfix`, `dovecot` | `postfix`, `dovecot` |
| Redis (Rspamd'in veri deposu) | `redis-server` | `redis` |
| FTP | `pure-ftpd-mysql` | `pure-ftpd` |

### Diğer Yollar

| Kaynak | Debian/Ubuntu | RHEL/Alma/Rocky |
|----------|--------------|-----------------|
| PowerDNS konfigürasyonu | `/etc/powerdns/pdns.conf` | `/etc/pdns/pdns.conf` |
| Certbot | `certbot` (apt) | `certbot` (EPEL) |
| Pure-FTPd | `pure-ftpd-mysql` (apt) | `pure-ftpd` (EPEL) |
| Let's Encrypt webroot | `/var/www/letsencrypt` | `/var/www/letsencrypt` |

---

## OS Algılama

WHost, başlangıçta `/etc/os-release` dosyasını ayrıştırarak işletim sistemini otomatik olarak algılar. Algılama şunları sağlar:

- **family:** `debian` veya `rhel`
- **distro:** Belirli dağıtım adı (örn. `ubuntu`, `almalinux`)
- **version:** Tam sürüm dizesi (örn. `22.04`, `9.4`)
- **codename:** Sürüm kod adı (örn. `jammy`, `noble`)
- **pkg_manager:** Paket yöneticisi komutu (`apt` veya `dnf`)
- **cgroup_version:** cgroup v2 olan sunucularda `2`; hesap bazlı kaynak limitleri bunu ister

Bu bilgi, servis katmanlarında dağıtıma özgü mantığı hardcode etmeden OS'a uygun kararlar vermek için kod tabanı boyunca kullanılır.

---

## Agent Python çalışma zamanı

Agent'ın korumalı modülleri **CPython 3.12** için derlenmiştir ve yalnız o
yorumlayıcı altında yüklenir. Kurulum aracı bu yüzden şunu kullanır:

| OS | `/opt/whost/venv` için yorumlayıcı |
|----|-------------------------------------|
| Ubuntu 24.04 | sistem `python3` (3.12) |
| AlmaLinux / Rocky / CentOS Stream 9 | AppStream'den `python3.12` (kurulum aracı kurar; sistem `python3` 3.9 kalır) |
| Ubuntu 22.04 | installer'ın eklediği deadsnakes PPA'dan `python3.12` |
| Debian 12 | dağıtım yalnız 3.11 sunar, 3.12 paketi yok; **bu sürümde kurulamaz** |

Servis birimi agent'ı ve bütünlük ön kontrolünü venv'in yorumlayıcısıyla
başlatır; bu yüzden sistemdeki varsayılan `python3`'ün farklı olması agent'ı
etkilemez, ancak venv'in oluşturulduğu yorumlayıcı (örneğin AlmaLinux'ta
`python3.12`) kurulu kalmalıdır.

---

**[WISECP LLC.](https://wisecp.com) tarafından geliştirilmiştir.**
**İletişim:** hello@wisecp.com
