أشارك تجربتي الأخيرة في نقل تثبيت 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 الخاص بالمضيف الجديد.