هذا دليل لنقل مثيل Discourse الخاص بك من خادم إلى آخر، بما في ذلك جميع الإعدادات والبيانات. ينطبق هذا الدليل على مثيلات Discourse المستضافة ذاتيًا والتي تستخدم Docker.
مستوى المستخدم المطلوب: مسؤول النظام
يتضمن هذا الإجراء تغييرات في النطاق ونظام أسماء النطاقات (DNS). تأكد من حصولك على حق الوصول إلى كل من الخادم المصدر والخادم الوجهة.
يرشدك هذا الدليل خلال عملية ترحيل مثيل Discourse الخاص بك من خادم إلى آخر، مما يضمن الحفاظ على بياناتك وإعداداتك وتكوينك.
إخلاء مسؤولية أضافه @pfaffman 2025-09-12T05:00:00Z.
هذه التعليمات لا تعمل بشكل جيد الآن لأنك تستخدم https و Let’s Encrypt، مما يتطلب أن يشير نظام أسماء النطاقات (DNS) إلى الخادم الجديد حتى يتمكن من طلب المفاتيح. ما أوصي به هو اتباع نقل موقع Discourse إلى خادم افتراضي خاص آخر باستخدام rsync (ربما باستخدام --exclude postgres* ثم عمل نسخة احتياطية واستعادة قاعدة البيانات من سطر الأوامر.) هذا مفيد لأنه إذا كنت تعرف كيف، يمكنك تعديل نظام أسماء النطاقات المحلي الخاص بك للإشارة إلى الخادم الجديد حتى تتمكن من اختبار عمله بينما لا يزال باقي الإنترنت يرى الموقع القديم.
الملخص
ستقوم بتنفيذ الخطوات الرئيسية التالية في هذا الدليل:
- عمل نسخة احتياطية لمثيل Discourse الحالي الخاص بك (الخادم المصدر).
- نقل ملف النسخ الاحتياطي إلى مثيل Discourse الهدف الخاص بك (الخادم الوجهة).
- استعادة النسخة الاحتياطية على الخادم الوجهة.
- تحديث إعدادات نظام أسماء النطاقات (DNS) (إذا كان ذلك قابلاً للتطبيق).
تعديل إعدادات نظام أسماء النطاقات (DNS) (عند الضرورة)
إذا كنت تستخدم نفس النطاق للخادم الجديد، فقم بتقليل زمن البقاء (TTL) لسجل DNS الخاص بك مقدمًا. يضمن هذا الحد الأدنى من وقت التوقف أثناء انتشار سجلات DNS المحدثة. إذا كنت ستستخدم نطاقًا جديدًا، يمكن تخطي هذه الخطوة.
تسجيل الدخول وإعداد الخادم المصدر
- سجل الدخول إلى مثيل Discourse المصدر الخاص بك باستخدام حساب لديه صلاحيات المسؤول.
- تأكد من أن كل من الخادم المصدر والخادم الوجهة يستخدمان:
- نفس إصدار Discourse.
- نفس مجموعة المكونات الإضافية (Plugins).
- قم بترقية إصدار Discourse على كلا الخادمين عن طريق زيارة
/admin/upgrade.
تجنب استعادة نسخة احتياطية أحدث على إصدار Discourse أقدم، أو إصدارات PostgreSQL غير المتوافقة، حيث قد يؤدي ذلك إلى حدوث أخطاء.
إنشاء النسخة الاحتياطية وتنزيلها
- انتقل إلى
/admin/backupsعلى مثيل Discourse المصدر الخاص بك. - انقر فوق الزر Backup لإنشاء نسخة احتياطية:
- عند المطالبة، قم بالتأكيد بالنقر فوق Yes.
- بمجرد اكتمال النسخ الاحتياطي، انتقل إلى علامة التبويب Backup files، وحدد موقع النسخة الاحتياطية التي تم إنشاؤها حديثًا.
- انقر فوق Download لتلقي بريد إلكتروني يحتوي على رابط تنزيل. انقر على الرابط الموجود في البريد الإلكتروني لحفظ ملف النسخ الاحتياطي محليًا.
قبل المتابعة، راجع ملف
app.ymlالخاص بك للتأكد من أن أي إعدادات اختيارية، مثل تكوينات شبكة توصيل المحتوى (CDN)، أو المكونات الإضافية المثبتة، أو دعم HTTPS، متسقة بين الخوادم المصدر والوجهة.
استعادة النسخة الاحتياطية على الخادم الوجهة
لاستعادة النسخة الاحتياطية عبر سطر الأوامر، راجع التوثيق ذي الصلة.
- سجل الدخول كمسؤول إلى مثيل Discourse الوجهة الخاص بك.
- انتقل إلى
/admin/backups/settings، وقم بتمكين الإعدادallow restore. - انتقل إلى
/admin/backupsوانقر فوق علامة التبويب Backup files. قم بتحميل ملف النسخ الاحتياطي الذي قمت بتنزيله سابقًا بالنقر فوق الزر Upload:
- بعد اكتمال التحميل، انقر فوق قائمة ⋮ (المزيد من الخيارات) بجوار النسخة الاحتياطية التي تم تحميلها، ثم انقر فوق Restore:
- قم بالتأكيد بالنقر فوق Yes عند المطالبة.
ستبدأ عملية الاستعادة. قد يستغرق هذا بعض الوقت اعتمادًا على حجم قاعدة البيانات الخاصة بك. بعد اكتمال العملية، سيتم تسجيل خروجك تلقائيًا.
الانتهاء وتسجيل الدخول
- سجل الدخول إلى مثيل Discourse الوجهة الخاص بك باستخدام بيانات اعتماد المسؤول الخاصة بك.
- إذا تم عمل نسخة احتياطية للموقع باستخدام HTTPS، فتأكد من تمكين HTTPS على الخادم الجديد. إذا لم يتم تكوينه بشكل صحيح، استخدم وحدة تحكم Rails لتعطيل الإعداد “force https” مؤقتًا.
- أعد تمكين أي تكوينات اختيارية عن طريق تعديل ملف
app.ymlوإعادة بناء المثيل الخاص بك. قد يشمل ذلك:- تمكين دعم شبكة توصيل المحتوى (CDN).
- تثبيت مكونات إضافية إضافية.
- تعيين تكوينات HTTPS.
المشاكل والحلول الشائعة
فشل استعادة ملف النسخ الاحتياطي
- تحقق من تطابق إصدارات Discourse و PostgreSQL بين الخوادم المصدر والوجهة.
عدم القدرة على تسجيل الدخول بعد الاستعادة (مع تمكين HTTPS)
- استخدم وحدة تحكم Rails لتعطيل
force httpsمؤقتًا عن طريق تشغيل:SiteSetting.force_https = false



