صفحة الإعدادات ← الاستيراد ← الترحيل من WHMCS تنسخ بيانات WHMCS إلى مساحة عملك في Hostinvo. يتصل Hostinvo بقاعدة بيانات MySQL الخاصة بـ WHMCS بالبيانات التي تدخلها، ويقرأ البيانات، وينشئ نفس العملاء والمنتجات والخدمات هنا. لا يتغير أي شيء في WHMCS، ولا يُنشأ أي شيء على خوادمك.
ما الذي يُستورد
| في WHMCS | في Hostinvo |
|---|---|
| العملاء | الاسم والشركة والبريد والهاتف والدولة وعنوان الفوترة. ويحصل كل عميل على دخول لمنطقة العملاء بدون كلمة مرور، فيعيّنها بنفسه من «نسيت كلمة المرور». |
| مجموعات المنتجات | تُنشأ كمجموعات منتجات. |
| المنتجات | تُنشأ بأسعارها. المنتج الذي لا سعر له يحصل على سعر افتراضي يمكنك تعديله. |
| الخدمات (الاستضافة) | تُنشأ بحالتها ودورة فوترتها وتاريخ استحقاقها القادم ونطاقها، فتستمر التجديدات. النشطة والموقوفة تبقى كما هي؛ والمنتهية والملغاة والاحتيالية تصبح منتهية؛ وأي حالة أخرى تصبح بالانتظار. |
| الفواتير وبنودها | تُنشأ بمجاميعها وحالة دفعها، إن وُجدت جداولها. |
| المعاملات | تُنشأ كمدفوعات ومعاملات، إن وُجد جدولها. |
قبل أن تبدأ
- بيانات قاعدة بيانات WHMCS. تجدها في ملف configuration.php داخل مجلد WHMCS: $db_host و$db_port و$db_name و$db_username و$db_password.
- مستخدم MySQL يستطيع قراءة قاعدة بيانات WHMCS. الأفضل مستخدم للقراءة فقط (المثال أدناه).
- يجب أن يصل خادم Hostinvo إلى خادم MySQL الخاص بـ WHMCS. إذا كان WHMCS على خادم آخر فاسمح باتصالات MySQL البعيدة من عنوان IP لخادم Hostinvo.
- على خادم Hostinvo الخاص بك يجب أن يعمل عامل الطوابير (queue worker)، لأن الاستيراد يعمل في الخلفية.
مثال: مستخدم MySQL للقراءة فقط (يُنفَّذ على خادم MySQL الخاص بـ WHMCS)
CREATE USER 'whmcs_reader'@'203.0.113.10' IDENTIFIED BY 'a-long-random-password';
GRANT SELECT ON whmcs.* TO 'whmcs_reader'@'203.0.113.10';
FLUSH PRIVILEGES;استبدل 203.0.113.10 بعنوان IP لخادم Hostinvo، وwhmcs باسم قاعدة بيانات WHMCS. يمكنك حذف هذا المستخدم بعد انتهاء الاستيراد.
الخطوات
- 1
تعبئة الحقول من configuration.php (اختياري)
اختر ملف configuration.php الخاص بـ WHMCS. يُقرأ الملف داخل متصفحك لتعبئة الحقول فقط، ولا يُرفع ولا يُحفظ. إذا كان في الملف localhost فسيُغيَّر الخادم إلى host.docker.internal، وهذا صحيح فقط إذا كان WHMCS على نفس جهاز Hostinvo؛ وإلا فضع عنوان خادم WHMCS (انظر الأمثلة).
- 2
خادم قاعدة البيانات والمنفذ
عنوان خادم MySQL الخاص بـ WHMCS، مثل whmcs.example.com أو 198.51.100.20. المنفذ غالباً 3306.
- 3
اسم قاعدة البيانات
اسم قاعدة بيانات WHMCS ($db_name)، مثل example_whmcs.
- 4
اسم المستخدم وكلمة المرور
مستخدم MySQL الذي يستطيع قراءة القاعدة. كلمة المرور تُرسل لمهمة الاستيراد فقط ولا تُحفظ.
- 5
اختبار الاتصال
يتحقق من أن Hostinvo يستطيع الاتصال وأن جداول WHMCS موجودة (tblclients وtblproductgroups وtblproducts وtblhosting). يجب أن تظهر رسالة نجاح الاتصال ووجود الجداول المطلوبة.
- 6
بدء الاستيراد
يضع الاستيراد في قائمة الانتظار. يبقى الزر على «الاستيراد قيد التنفيذ» حتى ينتهي.
- 7
متابعة حالة الاستيراد
مربع الحالة يتحدث تلقائياً كل بضع ثوانٍ: بالانتظار، ثم قيد التنفيذ، ثم مكتمل، أو فشل مع السبب.
مثال 1: WHMCS على استضافة cPanel
ملف configuration.php على خادم WHMCS
$db_host = 'localhost';
$db_port = '';
$db_username = 'example_whmcs';
$db_password = '********';
$db_name = 'example_whmcs';- كلمة localhost هنا تعني خادم WHMCS نفسه، لذلك أدخل في Hostinvo عنوان الخادم بدلاً منها، مثل: خادم قاعدة البيانات = server1.example-host.com، والمنفذ = 3306.
- من cPanel ← Remote MySQL أضف عنوان IP لخادم Hostinvo، وإلا سيُرفض الاتصال.
- اسم قاعدة البيانات = example_whmcs، واسم المستخدم = example_whmcs (أو مستخدم القراءة فقط)، وكلمة المرور = كلمة مرور قاعدة البيانات.
- اضغط «اختبار الاتصال» ثم «بدء الاستيراد».
مثال 2: WHMCS وHostinvo على نفس الجهاز
إذا كان Hostinvo يعمل داخل Docker وقاعدة MySQL الخاصة بـ WHMCS على نفس الجهاز، فاستخدم: خادم قاعدة البيانات = host.docker.internal والمنفذ = 3306. وإذا كانت MySQL الخاصة بـ WHMCS في حاوية Docker أخرى، فاستخدم اسم خدمة تلك الحاوية كعنوان للخادم.
مثال 3: قاعدة MySQL غير مفتوحة على الإنترنت
إذا كانت استضافتك لا تسمح باتصالات MySQL البعيدة، افتح نفق SSH من خادم Hostinvo إلى خادم WHMCS ووجّه Hostinvo إلى النفق. اترك النفق مفتوحاً حتى يكتمل الاستيراد.
على خادم Hostinvo
ssh -N -L 0.0.0.0:3307:127.0.0.1:3306 user@whmcs-server.example.comثم استخدم: خادم قاعدة البيانات = host.docker.internal (أو عنوان IP لخادم Hostinvo) والمنفذ = 3307.
حالة الاستيراد
| الحالة | المعنى |
|---|---|
| بالانتظار | في قائمة الانتظار بانتظار عامل الطوابير. إذا بقي على هذه الحالة فعامل الطوابير لا يعمل. |
| قيد التنفيذ | يقرأ من WHMCS ويكتب في Hostinvo. القواعد الكبيرة قد تأخذ بضع دقائق. |
| مكتمل | استُورد كل شيء. |
| فشل | لم يُستورد شيء: الاستيراد خطوة واحدة، فالفشل لا يترك بيانات مستوردة جزئياً. يظهر السبب؛ عالجه وابدأ من جديد. |
بعد الاستيراد
- أخبر عملاءك بالدخول عبر «نسيت كلمة المرور»، لأن كلمات مرورهم في WHMCS لا يمكن نقلها.
- راجع المنتجات: الأسعار ودورات الفوترة، خاصة المنتجات التي حصلت على سعر افتراضي.
- الخدمات تُستورد كسجلات فقط، غير مربوطة بخوادمك بعد. أضف خادم Plesk من صفحة الخوادم أولاً، ثم اربطها بإحدى الطريقتين أدناه.
- تشغيل الاستيراد مرة أخرى آمن: العملاء يُطابَقون بالبريد، والسجلات برقمها في WHMCS، فتُحدَّث ولا تتكرر.
ربط الخدمات المستوردة بخادم Plesk
تُطابَق كل خدمة مستوردة مع اشتراك في Plesk بنطاقها أو باسم المستخدم، وتُربط بذلك الخادم. لا يُنشأ ولا يتغير أي حساب في Plesk. اختر أياً من الطريقتين؛ كلتاهما تؤديان نفس العمل.
- 1
الخيار الأول: الزر
افتح الخوادم ← خادم Plesk الخاص بك. في قسم «ربط الخدمات المستوردة من WHMCS» اضغط «ربط الخدمات الآن». تظهر النتيجة بعدد الخدمات التي رُبطت والتي لم تُعثر على هذا الخادم.
- 2
الخيار الثاني: الأمر
على خادم Hostinvo داخل مجلد Hostinvo. صفحة الخادم تعرض هذا الأمر برقم الخادم جاهزاً للنسخ؛ و--all يربط كل خوادم Plesk مرة واحدة.
docker compose -f docker-compose.prod.yml exec app php artisan plesk:sync-services --server=SERVER_ID docker compose -f docker-compose.prod.yml exec app php artisan plesk:sync-services --all
حل المشكلات
| الرسالة | ما العمل |
|---|---|
| تعذر الاتصال بخادم MySQL الخاص بـ WHMCS | العنوان خاطئ أو هو localhost. استخدم عنوان خادم WHMCS، أو host.docker.internal إذا كانا على نفس الجهاز. |
| Access denied for user | اسم المستخدم أو كلمة المرور خاطئة، أو المستخدم غير مسموح له من IP خادم Hostinvo. راجع صلاحيات GRANT وcPanel ← Remote MySQL. |
| انتهت مهلة الاتصال / الخادم غير قابل للوصول | جدار ناري يمنع المنفذ 3306. افتحه لعنوان IP خادم Hostinvo، أو استخدم نفق SSH (المثال 3). |
| لم تُعثر على جداول WHMCS المطلوبة | اسم قاعدة البيانات خاطئ، أو الجداول لا تستخدم البادئة القياسية tbl. |
| الحالة تبقى «بالانتظار» | عامل الطوابير لا يعمل على خادم Hostinvo. شغّله وسيكمل الاستيراد. |