استعادة المنتدى إلى خادم جديد

بالنسبة لخدمات الإنتاج المختلفة التي أديرها (مثل مواقع WordPress وغيرها)، أحب تشغيل موقع ثانٍ، وهو “نسخة مرآة”، إلى جانب موقع الإنتاج. على سبيل المثال، قد يكون لدي www.mydomain.com بالإضافة إلى mirror.mydomain.com. يتم إنشاء الأخير عن طريق النسخ من موقع الإنتاج ثم تعطيل بعض العمليات التي لا تحتاج إلى التشغيل.

أود فعل الشيء نفسه مع منتداي. كما أفهم، فإن وظيفة الاستعادة “شاملة”، حيث لا تستعيد البيانات فحسب (المواضيع وما إلى ذلك) بل أيضًا الإعدادات بالكامل. وهذا يترك لي مشكلتين أود فهمهما بشكل أفضل.

  1. أستخدم تسجيل الدخول الموحد عبر WordPress (SSO). بعد اكتمال الاستعادة، أريد أن يشير موقع Discourse في mirror-forum.mydomain.com إلى mirror.mydomain.com كمصدر لتسجيل الدخول. كيف يمكنني تعديل موقع المنتدى المرآة (وهي مفارقة واضحة، حيث إنه بعد الاستعادة وتسجيل الدخول، من المرجح أن يشير موقع المرآة إلى موقع الإنتاج)؟

  2. أريد التأكد بنسبة 100% من عدم إرسال أي رسائل بريد إلكتروني من موقع المنتدى المرآة. مرة أخرى، إذا قمت بالاستعادة إلى موقع المنتدى المرآة، أفترض أن جميع المهام المجدولة من موقع الإنتاج (مثل إرسال ملخصات البريد الإلكتروني للمستخدمين وما إلى ذلك) ستكون مجدولة، أليس كذلك؟ كيف يمكنني تجنب ذلك؟ هل هناك مكان مركزي لإيقاف جميع رسائل البريد الإلكتروني من هذا الخادم؟

كيف يمكنني التعامل مع هذا؟

شكرًا لك.

تصفح الرابط التالي: Syncing Production to Staging

خاصة هذا التعليق: يبدو ذلك نهجًا جيدًا

إليك سكريبت نستخدمه لمزامنة موقع تجريبي (staging) مع موقع الإنتاج:

#!/bin/bash
echo "cd /var/www/discourse"
cd /var/www/discourse

echo "/usr/local/bin/rake site_settings:export > /var/www/discourse/settings.yml"
/usr/local/bin/rake site_settings:export >  /var/www/discourse/settings.yml

echo "cd /var/www/discourse/public/backups/default"
cd /var/www/discourse/public/backups/default

echo "/usr/local/bin/discourse restore " $(ls -r | head -1)
/usr/local/bin/discourse restore $(ls -r | head -1)

echo "cd /var/www/discourse"
cd /var/www/discourse

echo "/usr/local/bin/rake site_settings:import <  /var/www/discourse/settings.yml"
/usr/local/bin/rake site_settings:import <  /var/www/discourse/settings.yml

يتم استدعاؤه من خلال Docker.

مثال على استدعاء سكريبت من خارج مثيل discourse:

echo 'cd /var/www/discourse; RUBY_ENV=production rails r /var/www/discourse/script/import_scripts/wordpress-with-sabai-export.rb /var/www/discourse/script/import_scripts/wordpress-discourse-id-map.json' | docker exec -i $(docker ps | grep app | awk '{print $1}') /bin/bash

قم بتعيين إعداد “تعطيل البريد الإلكتروني” للموقع المنعكس إلى “نعم”

https://{fully-qualiified-domain-name}/admin/site_settings/category/email?filter=disable%20email

نعم، قم بتعطيل البريد الإلكتروني من إعدادات موقعك. أو يمكنك تعيين البريد الإلكتروني ليكون مخصصًا للموظفين فقط، وهو أمر مفيد أحيانًا.

أعمال رائعة يا أصدقاء. يبدو أن هذا يمنحني كل ما أحتاجه. شكرًا لكم.