لقد انتقلت إلى خادم افتراضي خاص جديد اليوم وفكرت في مشاركة تجاربي حيث يبدو أن عددًا لا بأس به من الأشخاص يواجهون مشكلة نظام التشغيل القديم في تحديثاتهم مؤخرًا ![]()
أنا على 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 القديم مرة أخرى ووضعته بسرعة في وضع الصيانة - هذا حتى يتمكن الأشخاص من الوصول إليه وسيظهرون رسالة تحذير الصيانة المعتادة.
هذا يمنحني أيضًا بعض الوقت للعمل على الخادم الافتراضي الخاص الجديد ![]()
لقد قمت بتحديث ملف HOSTS الخاص بي على جهاز الكمبيوتر المحلي الخاص بي حتى أتمكن من الوصول إلى Discourse على الخادم الافتراضي الخاص الجديد دون تحذيرات / مشاكل في المتصفح.
على الخادم الافتراضي الخاص الجديد، قمت بتشغيل:
./discourse-setup
كان هذا حتى يتمكن من تحديث إعدادات الذاكرة العشوائية ووحدة المعالجة المركزية في ملف app.yml تلقائيًا.
ثم قمت بإعادة بناء التطبيق على الخادم الافتراضي الخاص الجديد:
./launcher rebuild app
قمت ببعض الاختبارات السريعة، كل شيء على ما يرام.
تم تحديث DNS - تم الانتهاء من المهمة.
شكرًا على الموضوع المفصل، أيها الجميع ![]()