مثال على هجرة الاستضافة الذاتية — من VPS إلى VPS

أشارك تجربتي الأخيرة في نقل تثبيت Discourse المستضاف ذاتيًا من خادم افتراضي (VPS) واحد إلى آخر، كطريقة لقول “شكرًا!” لمبدعي Discourse ومجتمع الإداريين الخاص بهم. يحافظ هذا النقل على تكوينات SSL من LetsEncrypt والبريد الإلكتروني.

كان التثبيت الأصلي على نوع مثيل g1-small من منصة Google Cloud Platform (GCP) (وحدة معالجة مركزية واحدة، 1.7 جيجابايت من ذاكرة الوصول العشوائي)، باستخدام الدليل الرسمي (INSTALL-cloud.md) وتتبع فرع tests-passed.

أما التثبيت الجديد فهو على خادم افتراضي من نوع KVM من نوع ‘Developer’ من Evolution Host (نوى معالجتان، 2 جيجابايت من ذاكرة الوصول العشوائي، 40 جيجابايت من تخزين SSD، وقت إعادة بناء 7 دقائق و23 ثانية، 10 يورو/شهر). تم تثبيت Ubuntu Server 18.04.4 الحد الأدنى مع قسم تبديل (swap) بسعة 1 جيجابايت (من المرجح أنه مبني على قالب).

إذا كان المضيف الخاص بك قد تم تثبيته مع برامج إضافية، فتأكد من إزالة البرامج غير الضرورية، مثل خوادم الويب، وتأكد من تأمين المضيف الخاص بك (أسماء المستخدمين الافتراضية، وكلمات المرور، وتكوينات sshd، وما إلى ذلك).

ما يلي هو أوامر الطرفية التي تم إصدارها كمسؤول (root)، مع إزالة البيانات الخاصة بالتثبيت (استبدل الأجزاء المكتوبة بحروف كبيرة ALL CAPS ببياناتك الخاصة). يرجى التعليق بأي تصحيحات أو أسئلة!

إعداد المضيف الجديد

apt update && apt -y dist-upgrade
apt install -y byobu mosh htop iotop hugepages curl git && byobu-enable

hugeadm --thp-never

fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
echo '/swapfile       swap    swap    auto      0       0' | tee -a /etc/fstab
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf

git clone https://github.com/discourse/discourse_docker.git /var/discourse

reboot

إعداد المضيف القديم ونسخ ملفات Discourse احتياطيًا

cd /var/discourse
./launcher rebuild app

./launcher enter app
discourse backup
exit

(لاحظ اسم ملف النسخة الاحتياطية الخاصة بـ Discourse)

cp -v containers/app.yml ~
cd shared/standalone
cp -v settings.yml ~
tar cvf ~/ssl.tar ssl
tar cvf ~/letsencrypt.tar letsencrypt

cd ~
scp -C ssl.tar letsencrypt.tar app.yml settings.yml USERNAME@NEW-HOST-IP:~
scp /var/discourse/shared/standalone/backups/default/YOUR-DISCOURSE-BACKUP.tar.gz USERNAME@NEW-HOST-IP:~
exit

استعادة Discourse على المضيف الجديد

(انقل الملفات التي تم نسخها باستخدام scp أعلاه إلى مجلد المستخدم الرئيسي للمستخدم الجذر)

echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts

cd /var/discourse
cp -v ~/app.yml containers

mkdir -v shared/standalone
cd shared/standalone
cp -v ~/settings.yml .   
tar xvf ~/ssl.tar
tar xvf ~/letsencrypt.tar

cd /var/discourse
./discourse-setup

(يجب أن يكتمل discourse-setup دون أخطاء، مما يسمح لك بالتحقق من جميع معلومات التكوين ذات الصلة)

mkdir -v shared/standalone/backups/default
cp -v ~/YOUR-DISCOURSE-BACKUP.tar.gz shared/standalone/backups/default

./launcher enter app
discourse enable_restore
discourse restore YOUR-DISCOURSE-BACKUP.tar.gz
discourse disable_restore

الاختبار من جهازك المحلي

echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts

تصفح إلى https://YOUR-DISCOURSE-FQHN/admin/email

في أسفل الصفحة، أدخل عنوان بريدك الإلكتروني لاختبار إرسال البريد الإلكتروني، وتصفح موقع Discourse الخاص بك للتأكد من حالة العمل.

عندما تكون راضيًا عن أن كل شيء يعمل بشكل صحيح، قم بتغيير سجل DNS A لـ YOUR-DISCOURSE-FQHN ليشير إلى عنوان IP الخاص بالمضيف الجديد.

6 إعجابات