دليل التثبيت
هذا هو دليل التثبيت الكامل خطوة بخطوة لـ FeedbackPulse SaaS. اتبع كل خطوة بعناية.
قائمة التحقق قبل التثبيت
قبل البدء، تأكد من توافر:
- خادم يستوفي جميع المتطلبات
- اسم نطاق يشير إلى عنوان IP الخادم
- وصول SSH إلى خادمك (أو FTP لرفع الملفات)
- قاعدة بيانات MySQL/MariaDB وبيانات اعتماد
- حساب بريد إلكتروني SMTP (Gmail، Mailgun، Amazon SES، إلخ)
- رمز شراء Envato الخاص بك (من طلب CodeCanyon)
الخطوة 1: رفع الملفات إلى خادمك
الخيار أ: استخدام SSH (موصى به)
# الاتصال بالخادم
ssh user@your-server-ip
# الانتقال إلى مجلد الويب
cd /var/www
# رفع الملف المضغوط واستخراجه
# (ارفع الملف zip عبر SCP أو SFTP أو wget من رابط مؤقت)
unzip feedbackpulse-saas.zip -d feedbackpulse-saas
cd feedbackpulse-saas
الخيار ب: استخدام FTP/SFTP
- اتصل بالخادم باستخدام FileZilla أو WinSCP أو ما شابه
- انتقل إلى مجلد الويب (عادةً
/var/www/أو/home/user/public_html/) - ارفع مجلد
feedbackpulse-saasالمستخرج بالكام ل - تأكد من إمكانية الوصول إلى المجلد الفرعي
public/
الخيار ج: استخدام cPanel File Manager
- سجّل الدخول إلى cPanel
- افتح File Manager ← انتقل إلى
public_html(أو مجلد فرعي) - ارفع الملف المضغوط
- استخرجه في مكانه
- مهم: ستحتاج إلى ضبط جذر المستند على مجلد
public/(راجع إعداد Apache)
الخطوة 2: ضبط صلاحيات الملفات
cd /var/www/feedbackpulse-saas
# ضبط الملكية (استبدل www-data بمستخدم خادم الويب)
# Apache: www-data | Nginx: www-data أو nginx
sudo chown -R www-data:www-data .
# ضبط صلاحيات المجلدات
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;
# جعل التخزين والذاكرة المؤقتة قابلين للكتابة
sudo chmod -R 775 storage bootstrap/cache
الخطوة 3: إعداد خادم الويب
يجب أن يشير خادم الويب إلى مجلد public/ داخل المشروع — وليس إلى جذر المشروع. هذا متطلب أمني بالغ الأهمية.
اختر خادم الويب:
- إعداد Apache
- إعداد Nginx
- الاستضافة المشتركة (cPanel وPlesk وDirectAdmin) — إذا كنت على استضافة مشتركة، اتبع هذا الدليل بدلاً من ذلك!
الإصدار السريع:
Apache:
DocumentRoot /var/www/feedbackpulse-saas/public
Nginx:
root /var/www/feedbackpulse-saas/public;
بعد الإعداد، أعد تشغيل خادم الويب:
# Apache
sudo systemctl restart apache2
# Nginx
sudo systemctl restart nginx
الخطوة 4: الرابط الرمزي للتخزين (تلقائي)
يحاول مثبّت الويب تلقائيًا إنشاء الرابط الرمزي للتخزين أثناء الخطوة الأخيرة. لا تحتاج إلى تشغيل أي أوامر.
- VPS/مخصص: يُنشأ الرابط الرمزي تلقائيًا. لا حاجة لأي إجراء.
- الاستضافة المشتركة: إذا كانت الروابط الرمزية معطّلة على مزودك، يستخدم FeedbackPulse بديلاً مدمجًا بـ PHP لتقديم الملفات المرفوعة (الشعارات والصور). كل شيء يعمل — لا حاجة لأي إجراء.
ستُخبرك صفحة اكتمال المثبّت بما إذا كان الرابط الرمزي قد أُنشئ أو إذا كان البديل نشطًا.
الخطوة 5: تشغيل مثبّت الويب
افتح متصفحك وانتقل إلى:
https://yourdomain.com/install
سيرشدك المثبّت عبر 5 خطوات. راجع جولة مثبّت الويب للحصول على لقطات شاشة وشروحات تفصيلية.
ملخص سريع:
الخطوة 1: التحقق من الترخيص
- أدخل رمز شراء Envato/CodeCanyon الخاص بك
- يتحقق هذا من ترخيصك مع Envato API
- إذا لم تكن تستخدم Envato، قد يكون هناك خيار للتخطي
الخطوة 2: فحص المتطلبات
- يتحقق المث بّت تلقائيًا من:
- اعتماديات Vendor (وجود
vendor/autoload.php) - إصدار PHP (8.2+)
- امتدادات PHP المطلوبة
- صلاحيات المجلدات (storage، bootstrap/cache)
- بيئة الاستضافة (يكتشف الاستضافة المشتركة، يُظهر معلومات التوافق)
- اعتماديات Vendor (وجود
- أصلح أي عناصر فاشلة قبل المتابعة
الخطوة 3: إعداد قاعدة البيانات
- أدخل بيانات اعتماد قاعدة البيانات:
- المضيف:
127.0.0.1(أوlocalhost) - المنفذ:
3306 - اسم قاعدة البيانات:
feedbackpulse(أنشئها أولاً!) - اسم المستخدم: اسم مستخدم قاعدة البيانات
- كلمة المرور: كلمة مرور قاعدة البيانات
- المضيف:
- سيُشغّل المثبّت جميع عمليات الترحيل ويُلقّح البيانات الافتراضية
أنشئ قاعدة البيانات أولاً:
CREATE DATABASE feedbackpulse CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
الخطوة 4: حساب المشرف
- أنشئ حساب المشرف العام:
- الاسم: اسمك
- البريد الإلكتروني: [email protected]
- كلمة المرور: كلمة مرور قوية (8 أحرف على الأقل)
- هذا هو الحساب الذي ستستخدمه لإدارة المنصة بأكملها
الخطوة 5: إعداد البريد الإلكتروني
- أدخل تفاصيل SMTP:
- المضيف: مثل
smtp.gmail.com - المنفذ:
587(TLS) أو465(SSL) - اسم المستخدم: اسم مستخدم SMTP الخاص بك
- كلمة المرور: كلمة مرور SMTP أو كلمة مرور التطبيق
- التشفير: TLS (موصى به)
- عنوان الإرسال:
[email protected]
- المضيف: مثل
- يمكنك تخطي هذا والإعداد لاحقًا في إعدادات الإدارة
الاكتمال
- يُبدّل برامج تشغيل الجلسة والذاكرة المؤقتة إلى
databaseللإنتاج - يُنشئ
CRON_TOKENلنقطة نهاية cron المستندة إلى الويب - يُنشئ ملف
storage/installed.lock(يمنع إعادة التشغيل) - يُظهر صفحة نجاح مع تعليمات إعداد cron job (خيارا CLI وURL) والخطوات التالية
الخطوة 6: إعداد Cron Job
يحتاج FeedbackPulse إلى cron job لتشغيل المهام المجدولة. هذا ضروري لـ:
- إرسال ملخصات البريد (يومية/أسبوعية)
- معالجة انتهاء صلاحية التجربة
- تطبيق سياسات الاحتفاظ بالبيانات
- إرسال تنبيهات الاستخدام
- تشغيل اكتشاف شذوذات الذكاء الاصطناعي
- إرسال التقارير المجدولة
الخيار 1 — أمر CLI (VPS / مخصص):
crontab -e
أضف هذا السطر:
* * * * * cd /var/www/feedbackpulse-saas && php artisan schedule:run >> /dev/null 2>&1
الخيار 2 — URL/wget (الاستضافة المشتركة):
إذا كان لوح الاستضافة يدعم فقط cron المستند إلى URL، استخدم نقطة نهاية cron الويب (يُنشأ CRON_TOKEN تلقائيًا أثناء التثبيت ويُعرض على صفحة الاكتمال):
wget -q -O /dev/null "https://yourdomain.com/cron/run?token=YOUR_CRON_TOKEN"
نصيحة: تُظهر صفحة اكتمال المثبّت كلا الخيارين مع مسار الخادم الفعلي والرمز مملوءَين مسبقًا. انسخهما من هناك!
للمزيد من التفاصيل، راجع Cron Jobs وعمال قائمة الانتظار.
الخطوة 7: إعداد SSL (HTTPS)
يُوصى بشدة بـ HTTPS للأمان، خاصةً لأن FeedbackPulse يتعامل مع بيانات المصادقة والدفع.
استخدام Let's Encrypt (مجاني)
# تثبيت Certbot
sudo apt install certbot python3-certbot-nginx # لـ Nginx
# أو
sudo apt install certbot python3-certbot-apache # لـ Apache
# الحصول على الشهادة
sudo certbot --nginx -d yourdomain.com # لـ Nginx
# أو
sudo certbot --apache -d yourdomain.com # لـ Apache
سيُعدّ Certbot خادم الويب تلقائيًا لـ HTTPS ويُعدّ التجديد التلقائي.
للمزيد من التفاصيل، راجع شهادات SSL.
الخطوة 8: التحقق من التثبيت
اتبع قائمة التحقق هذه:
| الفحص | الكيفية | النتيجة المتوقعة |
|---|---|---|
| تحميل صفحة الهبوط | زر https://yourdomain.com | رؤية صفحة الهبوط |
| عمل تسجيل الدخول | زر https://yourdomain.com/login | تسجيل الدخول ببيانات المشرف العام |
| لوحة الإدارة | زر https://yourdomain.com/admin/dashboard | رؤية لوحة تحكم الإدارة |
| رابط التخزين | زر https://yourdomain.com/storage/ | لا خطأ 404 |
| فحص الصحة | زر https://yourdomain.com/up | رؤية نص "OK" |
| تشغيل Cron | تحقق من الإدارة ← الإعدادات | لا تحذيرات cron |
| عمل البريد الإلكتروني | الإدارة ← الإعدادات ← البريد ← إرسال اختباري | استلام بريد اختباري |
خطوات ما بعد التثبيت
بعد اكتمال التثبيت:
- راجع خطط الاشتراك —
الإدارة ← الخطط(عدّل التسعير والحدود والميزات) - إعداد بوابات الدفع —
الإدارة ← الإعدادات ← المدفوعات(مفاتيح API لـ Stripe/PayPal) - تخصيص صفحة الهبوط —
الإدارة ← صفحة الهبوط - اختبار البريد الإلكتروني —
الإدارة ← الإعدادات ← البريد ← إرسال بريد اختباري - إعداد DNS الشامل (اختياري) — للنطاقات الفرعية للمستأجرين. راجع إعداد DNS الشامل.
- إنشاء أول مستأجر — سجّل في
/registerفي نافذة تصفح خاص
استكشاف أخطاء التثبيت وإصلاحها
| المشكلة | الحل |
|---|---|
| صفحة بيضاء فارغة | تحقق من storage/logs/laravel.log للأخطاء. عادةً مشكلة صلاحيات. |
| خطأ 500 في الخادم | فعّل وضع التصحيح مؤقتًا: اضبط APP_DEBUG=true في .env، ثم تحقق من الخطأ. |
| "Class not found" | تأكد من وجود مجلد vendor/ وسلامته. أعد رفعه من الحزمة المُنزّلة إذا لزم الأمر. |
| رفض الاتصال بقاعدة البيانات | تحقق من بيانات الاعتماد، تأكد من تشغيل MySQL، تحقق من أهمية localhost مقابل 127.0.0.1. |
| عدم تحميل المثبّت | تأكد من إشارة جذر الويب إلى مجلد public/. |
| عدم تحميل CSS/JS | امسح ذاكرة التخزين المؤقتة للمتصفح. إذا كانت الصور مفقودة، يتعامل البديل الاحتياطي معها تلقائيًا على الاستضافة المشتركة. على VPS، زر /update بصفتك مشرفًا عامًا لإعادة إنشاء الرابط الرمزي. |
| رفض الإذن | شغّل أوامر chown وchmod من الخطوة 2 مرة أخرى. |
للمزيد، راجع استكشاف الأخطاء وإصلاحها.
الخطوات التالية
- جولة مثبّت الويب — لقطات شاشة تفصيلية للمثبّت
- إعداد Apache — إ عداد المضيف الافتراضي
- إعداد Nginx — إعداد كتلة الخادم
- الإعداد — ضبط
.envالخاص بك