# 🚀 دليل نشر موقع Q ROVER - نظام تأجير المركبات الفاخرة

## Laravel Deployment Guide for Production

---

## 📋 فهرس المحتويات

1. [متطلبات النظام](#متطلبات-النظام)
2. [إعداد ما قبل النشر](#إعداد-ما-قبل-النشر)
3. [تحضير ملفات المشروع](#تحضير-ملفات-المشروع)
4. [النشر على خدمات الاستضافة](#النشر-على-خدمات-الاستضافة)
5. [إعدادات ما بعد النشر](#إعدادات-ما-بعد-النشر)
6. [اعتبارات الاستضافة](#اعتبارات-الاستضافة)

---

## 🔧 متطلبات النظام

### متطلبات الخادم الأساسية:

-   **PHP**: 8.1 أو أحدث
-   **MySQL**: 5.7 أو أحدث / MariaDB 10.3+
-   **Apache**: 2.4+ أو **Nginx**: 1.18+
-   **SSL Certificate**: للأمان (HTTPS)
-   **مساحة التخزين**: 2GB على الأقل

### إضافات PHP المطلوبة:

```bash
# تحقق من الإضافات المطلوبة
php -m | grep -E "(openssl|pdo|mbstring|tokenizer|xml|ctype|json|bcmath|zip|gd|fileinfo|intl)"
```

**الإضافات الضرورية**:

-   `php-openssl` - للتشفير والأمان
-   `php-pdo` - للاتصال بقاعدة البيانات
-   `php-mbstring` - لدعم النصوص متعددة البايت (العربية)
-   `php-tokenizer` - لمعالجة الرموز
-   `php-xml` - لمعالجة XML
-   `php-ctype` - للتحقق من أنواع الأحرف
-   `php-json` - لمعالجة JSON
-   `php-bcmath` - للعمليات الحسابية الدقيقة
-   `php-zip` - لضغط الملفات
-   `php-gd` - لمعالجة الصور
-   `php-fileinfo` - لمعلومات الملفات
-   `php-intl` - للدعم الدولي (العربية/الإنجليزية)

---

## ⚙️ إعداد ما قبل النشر

### 1. إعداد البيئة للإنتاج

#### إنشاء ملف .env للإنتاج:

```bash
# انسخ ملف البيئة
cp .env.example .env.production
```

#### تحرير إعدادات الإنتاج:

```env
# .env.production
APP_NAME="Q ROVER"
APP_ENV=production
APP_KEY=base64:YOUR_GENERATED_KEY_HERE
APP_DEBUG=false
APP_URL=https://yourdomain.com

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=error

# Database Configuration
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=qrover_production
DB_USERNAME=your_db_username
DB_PASSWORD=your_secure_db_password

# Cache Configuration
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

# Mail Configuration
MAIL_MAILER=smtp
MAIL_HOST=your-smtp-server.com
MAIL_PORT=587
MAIL_USERNAME=noreply@yourdomain.com
MAIL_PASSWORD=your_email_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@yourdomain.com
MAIL_FROM_NAME="${APP_NAME}"

# Security Settings
BCRYPT_ROUNDS=12
```

### 2. تحسين الأداء والأمان

#### تجميع وتحسين الأصول:

```bash
# تثبيت التبعيات للإنتاج فقط
composer install --optimize-autoloader --no-dev

# تجميع أصول CSS و JavaScript
npm install
npm run production

# تحسين Laravel للإنتاج
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
```

#### إنشاء مفتاح التطبيق:

```bash
# إنشاء مفتاح جديد للإنتاج
php artisan key:generate --env=production
```

### 3. إعداد قاعدة البيانات

#### تصدير قاعدة البيانات المحلية:

```bash
# إنشاء نسخة احتياطية من قاعدة البيانات
mysqldump -u root -p qrover_local > qrover_database_backup.sql

# أو باستخدام Laravel
php artisan backup:run --only-db
```

#### تحضير ملفات الهجرة:

```bash
# التأكد من حالة الهجرات
php artisan migrate:status

# إنشاء ملف SQL للهجرات الجديدة
php artisan migrate --pretend > migration_commands.sql
```

---

## 📦 تحضير ملفات المشروع

### 1. الملفات المطلوبة للنشر

#### الملفات والمجلدات الأساسية:

```
qrover-deployment/
├── app/                    # منطق التطبيق
├── bootstrap/              # ملفات البدء
├── config/                 # ملفات الإعداد
├── database/              # الهجرات والبذور
├── public/                # الملفات العامة
├── resources/             # العروض والأصول
├── routes/                # ملفات التوجيه
├── storage/               # ملفات التخزين
├── vendor/                # تبعيات Composer
├── .htaccess             # إعدادات Apache
├── artisan               # أداة سطر الأوامر
├── composer.json         # تبعيات PHP
├── composer.lock         # قفل التبعيات
└── package.json          # تبعيات Node.js
```

#### الملفات المستبعدة من النشر:

```bash
# إنشاء ملف .deployignore
cat > .deployignore << EOF
.env
.env.example
.git/
.gitignore
node_modules/
tests/
.phpunit.result.cache
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.DS_Store
Thumbs.db
*.log
storage/logs/*
!storage/logs/.gitkeep
EOF
```

### 2. إعداد الملفات الحساسة

#### إنشاء ملف .env آمن للإنتاج:

```bash
# إنشاء ملف بيئة منفصل للإنتاج
cat > .env.server << EOF
APP_NAME="Q ROVER"
APP_ENV=production
APP_KEY=WILL_BE_GENERATED_ON_SERVER
APP_DEBUG=false
APP_URL=https://yourdomain.com

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=REPLACE_WITH_ACTUAL_DB_NAME
DB_USERNAME=REPLACE_WITH_ACTUAL_USERNAME
DB_PASSWORD=REPLACE_WITH_ACTUAL_PASSWORD

# Add other production settings here
EOF
```

### 3. ضغط وأرشفة المشروع

#### إنشاء أرشيف للنشر:

```bash
# إنشاء أرشيف مضغوط (استبعاد الملفات غير المرغوبة)
tar -czf qrover-deployment.tar.gz \
  --exclude='.git' \
  --exclude='node_modules' \
  --exclude='.env' \
  --exclude='tests' \
  --exclude='storage/logs/*' \
  --exclude='.phpunit.result.cache' \
  .

# أو باستخدام zip
zip -r qrover-deployment.zip . \
  -x ".git/*" "node_modules/*" ".env" "tests/*" "storage/logs/*"
```

#### التحقق من محتويات الأرشيف:

```bash
# عرض محتويات الأرشيف
tar -tzf qrover-deployment.tar.gz | head -20

# أو للـ zip
unzip -l qrover-deployment.zip | head -20
```

---

## 🌐 النشر على خدمات الاستضافة

### 1. الاستضافة المشتركة (Shared Hosting)

#### خطوات الرفع:

```bash
# 1. رفع الملفات عبر FTP/SFTP
# استخدم FileZilla أو WinSCP أو سطر الأوامر

# رفع عبر scp
scp qrover-deployment.tar.gz username@yourserver.com:/home/username/

# 2. فك الضغط على الخادم
ssh username@yourserver.com
cd /home/username/
tar -xzf qrover-deployment.tar.gz
```

#### إعداد المجلد العام:

```bash
# نقل محتويات public إلى public_html
mv public/* public_html/
mv public/.htaccess public_html/

# تحديث مسار index.php
# تحرير public_html/index.php
sed -i 's|__DIR__\.\.\/|__DIR__/../../|g' public_html/index.php
```

### 2. الخادم الافتراضي الخاص (VPS)

#### إعداد البيئة:

```bash
# تحديث النظام
sudo apt update && sudo apt upgrade -y

# تثبيت المتطلبات
sudo apt install -y php8.1 php8.1-fpm php8.1-mysql php8.1-xml php8.1-gd \
  php8.1-mbstring php8.1-zip php8.1-curl php8.1-intl nginx mysql-server

# تثبيت Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
```

#### إعداد Nginx:

```nginx
# /etc/nginx/sites-available/qrover
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/qrover/public;
    index index.php index.html;

    # Security headers
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;

    # Handle Arabic/English URLs
    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

    # Handle large file uploads (vehicle images)
    client_max_body_size 10M;
}
```

### 3. إعداد قاعدة البيانات

#### إنشاء قاعدة البيانات:

```sql
-- تسجيل الدخول إلى MySQL
mysql -u root -p

-- إنشاء قاعدة البيانات
CREATE DATABASE qrover_production CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- إنشاء مستخدم جديد
CREATE USER 'qrover_user'@'localhost' IDENTIFIED BY 'secure_password_here';

-- منح الصلاحيات
GRANT ALL PRIVILEGES ON qrover_production.* TO 'qrover_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

#### استيراد البيانات:

```bash
# استيراد قاعدة البيانات
mysql -u qrover_user -p qrover_production < qrover_database_backup.sql

# أو تشغيل الهجرات
php artisan migrate --force

# إضافة البيانات الأساسية
php artisan db:seed --force
```

---

## 🔧 إعدادات ما بعد النشر

### 1. إعداد متغيرات البيئة

#### إنشاء ملف .env على الخادم:

```bash
# إنشاء ملف البيئة
cp .env.server .env

# تحرير الإعدادات
nano .env

# إنشاء مفتاح التطبيق
php artisan key:generate
```

### 2. ضبط صلاحيات الملفات

#### صلاحيات Laravel الصحيحة:

```bash
# صلاحيات المجلدات
sudo chown -R www-data:www-data /var/www/qrover
sudo find /var/www/qrover -type d -exec chmod 755 {} \;
sudo find /var/www/qrover -type f -exec chmod 644 {} \;

# صلاحيات خاصة لمجلدات التخزين
sudo chmod -R 775 /var/www/qrover/storage
sudo chmod -R 775 /var/www/qrover/bootstrap/cache
sudo chmod -R 775 /var/www/qrover/public/storage

# صلاحيات ملف artisan
sudo chmod +x /var/www/qrover/artisan
```

### 3. تحسين الأداء

#### تفعيل التخزين المؤقت:

```bash
# تخزين الإعدادات مؤقتاً
php artisan config:cache

# تخزين المسارات مؤقتاً
php artisan route:cache

# تخزين العروض مؤقتاً
php artisan view:cache

# تحسين autoloader
composer dump-autoload --optimize
```

### 4. إعداد SSL Certificate

#### باستخدام Let's Encrypt:

```bash
# تثبيت Certbot
sudo apt install certbot python3-certbot-nginx

# الحصول على شهادة SSL
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# تجديد تلقائي
sudo crontab -e
# إضافة السطر التالي:
0 12 * * * /usr/bin/certbot renew --quiet
```

### 5. إعداد رفع الصور

#### إنشاء رابط رمزي للتخزين:

```bash
# إنشاء رابط للصور
php artisan storage:link

# التحقق من الرابط
ls -la public/storage
```

#### إعداد مجلد الصور:

```bash
# إنشاء مجلدات الصور
mkdir -p storage/app/public/vehicles
mkdir -p storage/app/public/users
mkdir -p storage/app/public/categories

# ضبط الصلاحيات
chmod -R 775 storage/app/public/
```

---

## ✅ اختبار ما بعد النشر

### 1. اختبارات الوظائف الأساسية

#### فحص الصفحات الرئيسية:

```bash
# اختبار الصفحة الرئيسية
curl -I https://yourdomain.com

# اختبار صفحة المركبات
curl -I https://yourdomain.com/vehicles

# اختبار لوحة التحكم
curl -I https://yourdomain.com/admin/dashboard
```

#### اختبار قاعدة البيانات:

```bash
# اختبار الاتصال بقاعدة البيانات
php artisan tinker
>>> DB::connection()->getPdo();
>>> User::count();
>>> Vehicle::count();
```

### 2. اختبار الميزات المتقدمة

#### اختبار رفع الصور:

-   تسجيل الدخول كمدير
-   محاولة رفع صورة مركبة
-   التحقق من ظهور الصورة

#### اختبار النظام ثنائي اللغة:

-   تبديل اللغة من العربية للإنجليزية
-   التحقق من اتجاه النص (RTL/LTR)
-   اختبار النماذج بكلا اللغتين

### 3. اختبار الأداء

#### قياس سرعة التحميل:

```bash
# اختبار سرعة الاستجابة
time curl -s https://yourdomain.com > /dev/null

# مراقبة استخدام الذاكرة
php artisan tinker
>>> memory_get_usage(true);
```

---

## 🔒 الأمان والصيانة

### إعدادات الأمان الإضافية:

#### حماية الملفات الحساسة:

```apache
# إضافة إلى .htaccess
<Files ".env">
    Order allow,deny
    Deny from all
</Files>

<Files "composer.json">
    Order allow,deny
    Deny from all
</Files>
```

#### مراقبة السجلات:

```bash
# مراقبة سجلات Laravel
tail -f storage/logs/laravel.log

# مراقبة سجلات Nginx
sudo tail -f /var/log/nginx/error.log
```

### النسخ الاحتياطي التلقائي:

```bash
# إنشاء سكريبت النسخ الاحتياطي
cat > /home/backup/qrover_backup.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/home/backup/qrover"
DB_NAME="qrover_production"
DB_USER="qrover_user"
DB_PASS="your_password"

# نسخ قاعدة البيانات
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/db_$DATE.sql

# نسخ الملفات
tar -czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/qrover/storage/app/public

# حذف النسخ القديمة (أكثر من 30 يوم)
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
EOF

# جعل السكريبت قابل للتنفيذ
chmod +x /home/backup/qrover_backup.sh

# إضافة إلى crontab للتشغيل اليومي
echo "0 2 * * * /home/backup/qrover_backup.sh" | crontab -
```

---

## 🏢 اعتبارات خدمات الاستضافة المختلفة

### 1. cPanel Shared Hosting

#### خطوات النشر على cPanel:

```bash
# 1. رفع الملفات عبر File Manager
# - فك ضغط الأرشيف في المجلد الرئيسي
# - نقل محتويات public/ إلى public_html/

# 2. إعداد قاعدة البيانات
# - إنشاء قاعدة بيانات من MySQL Databases
# - إنشاء مستخدم وربطه بقاعدة البيانات
# - استيراد ملف SQL من phpMyAdmin
```

#### تحديث مسارات cPanel:

```php
// تحديث public_html/index.php
<?php
// تغيير المسار للمجلد الرئيسي
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
```

#### إعداد .htaccess لـ cPanel:

```apache
# public_html/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On

    # Handle Arabic URLs
    RewriteRule ^ar/(.*)$ /$1?lang=ar [QSA,L]
    RewriteRule ^en/(.*)$ /$1?lang=en [QSA,L]

    # Laravel routing
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Security headers
    Header always set X-Frame-Options DENY
    Header always set X-Content-Type-Options nosniff
</IfModule>

# PHP Configuration
php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_execution_time 300
php_value memory_limit 256M
```

### 2. Cloudflare Integration

#### إعداد Cloudflare للأداء:

```javascript
// Cloudflare Page Rules
// Rule 1: Cache static assets
// URL: yourdomain.com/css/*
// Settings: Cache Level = Cache Everything, Edge Cache TTL = 1 month

// Rule 2: Cache images
// URL: yourdomain.com/storage/*
// Settings: Cache Level = Cache Everything, Edge Cache TTL = 1 week

// Rule 3: Security for admin
// URL: yourdomain.com/admin/*
// Settings: Security Level = High, Cache Level = Bypass
```

#### تحسين الأداء مع Cloudflare:

```php
// config/app.php - إضافة Cloudflare IPs
'proxies' => [
    '103.21.244.0/22',
    '103.22.200.0/22',
    '103.31.4.0/22',
    // ... باقي عناوين Cloudflare
],
```

### 3. AWS/DigitalOcean Deployment

#### Docker Configuration:

```dockerfile
# Dockerfile
FROM php:8.1-fpm-alpine

# Install dependencies
RUN apk add --no-cache \
    nginx \
    mysql-client \
    nodejs \
    npm \
    zip \
    unzip \
    git

# Install PHP extensions
RUN docker-php-ext-install pdo pdo_mysql mbstring xml gd

# Copy application
COPY . /var/www/html
WORKDIR /var/www/html

# Install dependencies
RUN composer install --optimize-autoloader --no-dev
RUN npm install && npm run production

# Set permissions
RUN chown -R www-data:www-data /var/www/html/storage
RUN chown -R www-data:www-data /var/www/html/bootstrap/cache

EXPOSE 80
CMD ["php-fpm"]
```

---

## 🔍 استكشاف الأخطاء وإصلاحها

### 1. مشاكل شائعة وحلولها

#### خطأ 500 - Internal Server Error:

```bash
# فحص سجلات الأخطاء
tail -f storage/logs/laravel.log

# الأسباب الشائعة:
# 1. صلاحيات الملفات خاطئة
sudo chmod -R 775 storage bootstrap/cache

# 2. ملف .env مفقود أو خاطئ
cp .env.example .env
php artisan key:generate

# 3. مشكلة في autoloader
composer dump-autoload
```

#### خطأ 404 - الصفحات لا تعمل:

```apache
# التحقق من .htaccess
# public/.htaccess
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
```

#### مشاكل الصور لا تظهر:

```bash
# إنشاء الرابط الرمزي
php artisan storage:link

# التحقق من الرابط
ls -la public/storage

# إعداد صلاحيات الصور
chmod -R 755 storage/app/public
chmod -R 755 public/storage
```

#### مشاكل قاعدة البيانات:

```bash
# اختبار الاتصال
php artisan tinker
>>> DB::connection()->getPdo();

# فحص إعدادات قاعدة البيانات
php artisan config:show database

# إعادة تشغيل الهجرات
php artisan migrate:fresh --seed
```

### 2. مشاكل الأداء

#### بطء في التحميل:

```bash
# تفعيل OPcache
# في php.ini
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2

# تحسين Laravel
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

#### مشاكل الذاكرة:

```php
// في php.ini أو .htaccess
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 10M
post_max_size = 10M
```

### 3. مشاكل الأمان

#### حماية من الهجمات:

```apache
# .htaccess security rules
# Block access to sensitive files
<FilesMatch "\.(env|log|sql)$">
    Order allow,deny
    Deny from all
</FilesMatch>

# Prevent directory browsing
Options -Indexes

# Block suspicious requests
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC]
RewriteRule .* - [F]
```

---

## 📊 مراقبة الأداء والصيانة

### 1. مراقبة النظام

#### إعداد مراقبة الخادم:

```bash
# تثبيت htop لمراقبة الموارد
sudo apt install htop

# مراقبة استخدام القرص
df -h

# مراقبة استخدام الذاكرة
free -h

# مراقبة العمليات
ps aux | grep php
```

#### مراقبة سجلات Laravel:

```bash
# إنشاء سكريبت مراقبة السجلات
cat > /usr/local/bin/monitor-qrover.sh << 'EOF'
#!/bin/bash
LOG_FILE="/var/www/qrover/storage/logs/laravel.log"
ERROR_COUNT=$(tail -n 100 $LOG_FILE | grep -c "ERROR")

if [ $ERROR_COUNT -gt 5 ]; then
    echo "تحذير: تم اكتشاف $ERROR_COUNT أخطاء في آخر 100 سطر من السجل"
    # إرسال تنبيه عبر البريد الإلكتروني
    mail -s "Q ROVER: تحذير أخطاء النظام" admin@yourdomain.com < $LOG_FILE
fi
EOF

chmod +x /usr/local/bin/monitor-qrover.sh

# إضافة إلى crontab للتشغيل كل 15 دقيقة
echo "*/15 * * * * /usr/local/bin/monitor-qrover.sh" | crontab -
```

### 2. تحديثات النظام

#### إجراء التحديثات الآمنة:

```bash
# إنشاء نسخة احتياطية قبل التحديث
./backup_script.sh

# تحديث التبعيات
composer update --no-dev

# تشغيل الهجرات الجديدة
php artisan migrate --force

# مسح الكاش
php artisan cache:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

# اختبار النظام
php artisan tinker
>>> App\Models\User::count();
```

### 3. تحسين قاعدة البيانات

#### صيانة دورية لقاعدة البيانات:

```sql
-- تحسين الجداول
OPTIMIZE TABLE users, vehicles, bookings, vehicle_images;

-- فحص سلامة الجداول
CHECK TABLE users, vehicles, bookings;

-- إعادة بناء الفهارس
ALTER TABLE vehicles ENGINE=InnoDB;
ALTER TABLE bookings ENGINE=InnoDB;
```

#### إنشاء فهارس للأداء:

```sql
-- فهارس للبحث السريع
CREATE INDEX idx_vehicles_status ON vehicles(status);
CREATE INDEX idx_vehicles_category ON vehicles(category_id);
CREATE INDEX idx_bookings_dates ON bookings(pickup_datetime, dropoff_datetime);
CREATE INDEX idx_bookings_status ON bookings(status);
```

---

## 🚀 تحسينات الأداء المتقدمة

### 1. Redis Cache Setup

#### تثبيت وإعداد Redis:

```bash
# تثبيت Redis
sudo apt install redis-server

# إعداد Laravel لاستخدام Redis
# في .env
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
```

### 2. Queue Processing

#### إعداد معالجة الطوابير:

```bash
# إنشاء خدمة systemd للطوابير
sudo cat > /etc/systemd/system/qrover-worker.service << 'EOF'
[Unit]
Description=Q ROVER Queue Worker
After=network.target

[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/qrover/artisan queue:work --sleep=3 --tries=3
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

# تفعيل الخدمة
sudo systemctl enable qrover-worker
sudo systemctl start qrover-worker
```

### 3. CDN Integration

#### إعداد CDN للصور:

```php
// config/filesystems.php
'disks' => [
    'cdn' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
    ],
],
```

---

## 📞 الدعم والمساعدة

### موارد إضافية:

-   **Laravel Documentation**: https://laravel.com/docs
-   **PHP Manual**: https://www.php.net/manual/
-   **MySQL Documentation**: https://dev.mysql.com/doc/
-   **Nginx Documentation**: https://nginx.org/en/docs/

### قائمة مراجعة النشر:

-   [ ] تحديث ملف .env للإنتاج
-   [ ] تشغيل composer install --no-dev
-   [ ] تجميع الأصول (npm run production)
-   [ ] إعداد قاعدة البيانات
-   [ ] ضبط صلاحيات الملفات
-   [ ] إنشاء رابط التخزين
-   [ ] تفعيل HTTPS
-   [ ] اختبار جميع الوظائف
-   [ ] إعداد النسخ الاحتياطي
-   [ ] مراقبة الأداء

---

**تاريخ الإنشاء**: 1 أغسطس 2025
**النظام**: Q ROVER - دليل النشر الشامل
**الإصدار**: 1.0
