# Reverb (WebSocket) — Sunucu Notları

> Bu dosya günlük yapılacak işler **değildir**. Reverb kurulumu tamamdır ve sunucu
> yeniden başlasa bile otomatik açılır. Aşağıdaki komutlara **yalnızca** kod güncellediğinde
> veya bir sorun olduğunda bakarsın.

## Sunucu bilgileri

| | |
|---|---|
| Kullanıcı | `mehmetguruz` |
| Alan adı | `test.mehmetguruz.net` |
| Proje yolu | `/home/mehmetguruz/public_html/test` |
| PHP (CLI) | kullanıcı kabuğunda `php` (= ea-php82) |
| Composer | proje kökünde `php composer.phar` |

**Önemli:** `composer` ve `artisan` komutlarını **her zaman kullanıcı olarak** çalıştır (root ile CGI hatası verir).
`systemctl` ve Apache komutları **root** ile çalışır.

Kullanıcıya geçmek için:
```bash
su - mehmetguruz
cd public_html/test
```
Root'a dönmek için: `exit`

---

## 1) Proje güncellemesi sonrası yapılacaklar (git pull / dosya güncelleme)

Kullanıcı olarak (`su - mehmetguruz`, `cd public_html/test`):
```bash
php composer.phar install --no-dev -o
php artisan migrate --force
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
```
Sonra root olarak (`exit`):
```bash
systemctl restart reverb
```

> `optimize:clear` önemli: eski config/route cache kalırsa `.env` okunmaz ve Reverb
> bağlantısı kopabilir. Onun için önce temizleyip yeniden cache'liyoruz.

> Seed çalıştırman gerekirse Faker lazım olur → `--no-dev` yerine `php composer.phar install -o` yap.

### ⚠️ Reverb kurulumu güncellemeden ETKİLENMEZ, çünkü:
- systemd servisi (`/etc/systemd/system/reverb.service`) proje klasörünün **dışında**.
- Apache proxy config (`/etc/apache2/.../reverb.conf`) proje klasörünün **dışında**.
- `.env` güncellemeye dahil değil.

Reverb'in koda ait parçaları (`config/broadcasting.php`, `routes/channels.php`,
`bootstrap/app.php`, `app/Events/Chat/MessageSent.php`, chat view'leri) repoda doğru
haliyle olduğu için güncelleme onları doğru sürümüyle getirir.

### ⚠️ Komple dosya kopyalarken SİLME/EZME (repoda yok, kullanıcı verisi):
- `storage/app/public/` → yüklenen dosyalar (disk modülü, chat ekleri, sözleşme PDF'leri)
- `public/storage` → symlink (bozulursa `php artisan storage:link` ile geri gelir)
- `.env` · `composer.phar`

**En temizi `git pull` ile güncellemek** — bu klasörlere hiç dokunmaz, sadece takip edilen
dosyaları değiştirir. Komple kopyalama yaparsan yukarıdaki klasörleri hariç tut.

## 2) `.env`'de Reverb ayarını değiştirdiğinde

Kullanıcı olarak:
```bash
php artisan config:cache
```
Root olarak:
```bash
systemctl restart reverb
```

## 3) Sorun giderme (mesajlar anlık düşmüyorsa)

Reverb çalışıyor mu:
```bash
systemctl status reverb --no-pager
```
`active (running)` görmelisin. Değilse:
```bash
systemctl restart reverb
```

Son logları görmek için:
```bash
journalctl -u reverb -n 50 --no-pager
```

Tarayıcı testi: Panelde **F12 → Network → WS** filtresi → **Mesajlarım**'a gir →
`app/...` satırının durumu **101 Switching Protocols** olmalı.

## 4) Faydalı komutlar

| Amaç | Komut (root) |
|---|---|
| Başlat | `systemctl start reverb` |
| Durdur | `systemctl stop reverb` |
| Yeniden başlat | `systemctl restart reverb` |
| Durum | `systemctl status reverb --no-pager` |
| Canlı log | `journalctl -u reverb -f` |

---

## ⚠️ Yapma!

- **`php artisan reverb:install` ASLA çalıştırma** — özel `routes/channels.php` ve
  config dosyalarını ezer, mesajlaşma bozulur.
- composer/artisan'ı **root** ile çalıştırma — dosyalar root'a ait olur, site bozulur.

## Test sonrası (canlıya tam geçince)

`.env` içinde:
```
APP_ENV=production
APP_DEBUG=false
```
yapıp `php artisan config:cache` çalıştır. (Debug açıkken hata sayfaları `.env` bilgilerini sızdırabilir.)
