# Paylaşımlı hostingde test kurulumu (netlen.com)

Gereksinim: PHP **8.2+** (8.3 ideal), MySQL/MariaDB, SSH erişimi (Composer için). Eklentiler: mbstring, xml, curl, zip, bcmath, intl, pdo_mysql, sodium/openssl.
Paylaşımlı hostingde **Redis ve supervisor yoktur**: oturum/önbellek/kuyruk veritabanına, kuyruk işçisi cron'a taşınır. Test için yeterli; gerçek yoğun gönderimde VPS'e geç.

## 1. Hazırlık (hosting panelinde)
1. Subdomain aç: **panel.netlen.com**. **Belge kökünü (document root) `.../nexusjet/public`** klasörüne ayarla (örn. `public_html/panel/nexusjet/public`). Belge kökü `public` olmazsa .env dahil her şey internetten okunabilir olur; ayarlanamıyorsa kurulumu yapma.
2. PHP sürümünü 8.2+ seç.
3. MySQL veritabanı + kullanıcı oluştur, bilgileri not et.
4. SSL (Let's Encrypt / ücretsiz SSL) etkinleştir, "HTTPS'e zorla"yı aç.

## 2. Laravel'i kur (SSH)
```bash
cd ~/domains/netlen.com        # hosting düzenine göre; nexusjet klasörü belge kökünün bir üstüne gelecek şekilde
composer create-project laravel/laravel:^12.0 nexusjet
cd nexusjet
composer require inertiajs/inertia-laravel:^2.0 pragmarx/google2fa:^8.0
```
Sonra zip'teki proje dosyalarını bu klasörün **üzerine** kopyala (deploy/ ve README hariç, aynı isimli dosyaların üzerine yazılsın) ve Laravel'in varsayılan users/cache/jobs migration dosyalarını sil:
```bash
rm database/migrations/0001_01_01_00000*_create_*_table.php
```
## 3. Arayüzü derle
Hostingde Node yoksa **kendi bilgisayarında**: `npm install && npm run build` çalıştır, çıkan `public/build` klasörünü sunucudaki `nexusjet/public/build` içine yükle.

## 4. Ayarlar
```bash
cp deploy/env.shared-hosting.example .env     # deploy klasörünü yüklediysen; yoksa içeriği elle .env'e yapıştır
php artisan key:generate
nano .env      # DB_*, ADMIN_PASSWORD (en az 12 karakter) doldur
php artisan migrate --force
php artisan db:seed --class=AdminSeeder --force
php artisan config:cache && php artisan route:cache
chmod -R 775 storage bootstrap/cache
chmod 600 .env
```
## 5. Cron (hosting panelinde "Cron Jobs", her dakika)
```
* * * * * /usr/bin/php /tam/yol/nexusjet/artisan schedule:run >> /dev/null 2>&1
```
(PHP yolunu hostingin gösterdiği şekilde yaz, örn. `/usr/local/bin/php`.) Kuyruk işçisi bu cron'la çalışır; onaylanan talep en geç ~1 dakikada gönderime başlar.

## 6. Giriş ve deneme
`https://panel.netlen.com/login` → şifre değiştir → 2FA kur. `NJ_DRY_RUN=true` olduğu sürece gerçek mesaj gitmez. Müşteri oluştur, talep aç, onayla, raporlara bak.

## 7. Sonra VPS'e taşıma
Veritabanını `mysqldump` ile alıp VPS'e yükle, `.env`'i taşı, `deploy/install.sh` yerine mevcut veriyi kullanacak şekilde kur (istersen bunu birlikte yaparız).

## Sık hatalar
- **500 hatası:** `storage/logs/laravel-*.log` dosyasına bak; çoğunlukla izin (`chmod 775 storage`) veya eksik PHP eklentisi.
- **Sayfa açılıyor ama stil yok:** `public/build` yüklenmemiş.
- **Girişte "419":** `APP_URL` https ve `SESSION_SECURE_COOKIE=true` iken siteye http ile girilmiş.
