نقل موقع Discourse إلى VPS آخر باستخدام rsync

لقد انتقلت إلى خادم افتراضي خاص جديد اليوم وفكرت في مشاركة تجاربي حيث يبدو أن عددًا لا بأس به من الأشخاص يواجهون مشكلة نظام التشغيل القديم في تحديثاتهم مؤخرًا :blush:

أنا على Digital Ocean، لذا أنشأت قطرة جديدة.

خادم افتراضي خاص قديم = Ubuntu Server 18.04.6 LTS

خادم افتراضي خاص جديد = Ubuntu Server 23.10

لقد قمت بالصيانة المعتادة على الخادم الافتراضي الخاص الجديد - يرجى التعديل حسب ما يناسبك:

Apt-get update

Apt-get upgrade

Apt-get install fail2ban

ufw default deny incoming

ufw default allow outgoing

ufw allow ssh

ufw allow http

ufw allow https

ufw enable

ثم قمت بإنشاء دليل فارغ جديد لـ Discourse:

sudo mkdir -p /var/discourse

ثم قمت بتثبيت Docker:

wget -qO- https://get.docker.com/ | sh

ثم قمت بتغيير TTL على DNS الخاص بي من 30 دقيقة إلى 10 دقائق (الحد الأدنى الذي تسمح به GoDaddy).

على الخادم القديم، قمت بتنزيل نسخة محلية من النسخة الاحتياطية لقاعدة بيانات Discourse الليلة الماضية (لا يمكنك أبدًا الحصول على نسخ احتياطية محلية كافية). قمت أيضًا بتنزيل نسخة من app.yml إلى جهاز الكمبيوتر المحلي الخاص بي أيضًا.

كما اقترح عدد قليل من الأشخاص أعلاه، قمت بإجراء مزامنة “من جذر إلى جذر”. استخدمت عنوان IP بدلاً من اسم المضيف، حتى أتمكن من تجنب أي ارتباك في DNS. كما تم اقتراحه أعلاه، استخدمت مفاتيح -avz:

rsync -avz root@old.ip.address.here:/var/discourse /var

للرجوع إليها، مجلد Discourse الخاص بي هو 25 جيجابايت.

استغرق الأمر حوالي 25 دقيقة للمزامنة من الخادم القديم إلى الخادم الجديد. كان هذا ببساطة بين قطرتين من Digital Ocean في نفس منطقة LON1. قد تختلف تجاربك.

بعد المزامنة ومحاولة إعادة البناء، واجهت نفس الخطأ الذي واجهه @piratdavid بخصوص postgres database system is shut down.

لذا قمت بإيقاف التطبيق على الخادم الافتراضي الخاص القديم:

./launcher stop app

وقمت بمزامنة أخرى، للتغييرات فقط هذه المرة:

rsync -avz --delete root@old.ip.address.here:/var/discourse /var

ثم قمت بتشغيل تطبيق Discourse القديم مرة أخرى ووضعته بسرعة في وضع الصيانة - هذا حتى يتمكن الأشخاص من الوصول إليه وسيظهرون رسالة تحذير الصيانة المعتادة.

هذا يمنحني أيضًا بعض الوقت للعمل على الخادم الافتراضي الخاص الجديد :blush:

لقد قمت بتحديث ملف HOSTS الخاص بي على جهاز الكمبيوتر المحلي الخاص بي حتى أتمكن من الوصول إلى Discourse على الخادم الافتراضي الخاص الجديد دون تحذيرات / مشاكل في المتصفح.

على الخادم الافتراضي الخاص الجديد، قمت بتشغيل:

./discourse-setup

كان هذا حتى يتمكن من تحديث إعدادات الذاكرة العشوائية ووحدة المعالجة المركزية في ملف app.yml تلقائيًا.

ثم قمت بإعادة بناء التطبيق على الخادم الافتراضي الخاص الجديد:

./launcher rebuild app

قمت ببعض الاختبارات السريعة، كل شيء على ما يرام.

تم تحديث DNS - تم الانتهاء من المهمة.

شكرًا على الموضوع المفصل، أيها الجميع :smiley:

4 إعجابات