كيفية إعادة تثبيت نظام التشغيل أو ترقية خطتك دون توقف الخدمة

كيفية إعادة تثبيت نظام التشغيل أو ترقية خطتك دون توقف الخدمة

إعادة تثبيت نظام التشغيل على السيرفر نفسه تمسح قرص السيرفر بالكامل، لذا فهي توقف ذلك السيرفر عن العمل في كل الأحوال. ولتجنب توقف الخدمة، جهّز النظام الجديد واختبره على سيرفر ثانٍ، أو حدِّد موعد إعادة التثبيت خلال فترة صيانة قصيرة مع تجهيز نسخة احتياطية كاملة خارج السيرفر جاهزة للاستعادة. بعد ذلك لا تحوّل DNS إلا بعد أن يجتاز الإعداد الجديد الاختبار، وأبقِ السيرفر القديم يعمل حتى تنتهي مدة TTL الخاصة بـ DNS. أما ترقيات CPU وRAM والقرص على VPS قائم لدى Cloudesta فيطبقها فريقنا عند الطلب، ولا تحتاج إلا إلى إعادة تشغيل قصيرة.

يتناول هذا الدليل التحضير، وكيفية طلب إعادة التثبيت أو وضع الإنقاذ (rescue mode)، والترتيب الصحيح للاستعادة، والاختبار باستخدام ملف hosts، وترقية الخطط. وهو ينطبق على VPS سحابي والسيرفرات المخصصة التي تعمل بنظام Ubuntu 24.04 أو 22.04.

المتطلبات المسبقة

  • وصول إلى السيرفر عبر SSH بحساب root أو بصلاحيات sudo.
  • وصول إلى منطقة DNS (DNS zone) الخاصة بنطاقك، لدى مسجّل النطاق أو مزوّد خدمة DNS.
  • مساحة خارج السيرفر لحفظ النسخ الاحتياطية، مثل جهاز الكمبيوتر الخاص بك أو سيرفر آخر أو تخزين الكائنات (object storage).
  • مهلة لا تقل عن 24 ساعة قبل موعد التحويل المخطط له.

متى تكون إعادة تثبيت نظام التشغيل خيارًا مناسبًا؟

أعد التثبيت عندما تريد الانتقال إلى إصدار أحدث من Ubuntu LTS على قاعدة نظيفة، أو التعافي من اختراق، أو البدء من جديد بعد أن تراكمت تغييرات في الإعدادات لم يعد بإمكانك فكّ تشابكها. إذا كان النظام لا يُقلع أو كان SSH معطلًا، فاطلب وضع الإنقاذ أولًا، إذ يتيح لك وضع الإنقاذ في أغلب الأحيان نسخ البيانات إلى الخارج أو إصلاح المشكلة دون الحاجة إلى إعادة التثبيت.

1. كيف أجهّز السيرفر قبل إعادة التثبيت؟

خفّض قيمة TTL في DNS قبل 24 ساعة

تحقق من قيمة TTL الحالية. العمود الثاني في المخرجات هو قيمة TTL بالثواني.

dig +noall +answer example.com A
dig +noall +answer www.example.com A

في منطقة DNS الخاصة بك، اضبط قيمة TTL لسجلات A وAAAA على 300 (5 دقائق). افعل ذلك قبل التحويل بـ 24 ساعة على الأقل، أو بمدة أطول إذا كانت قيمة TTL القديمة أطول من يوم.

صدّر قواعد البيانات ومهام cron وقائمة الحزم

sudo mkdir -p /root/migration && cd /root/migration

# MySQL/MariaDB: one dump per application database
sudo mysqldump --single-transaction --routines --triggers --events --databases appdb > appdb.sql

# PostgreSQL (if used)
sudo -u postgres pg_dumpall > postgres.sql

# Packages you installed and extra APT sources
apt-mark showmanual > manual-packages.txt
sudo cp -a /etc/apt/sources.list.d ./apt-sources

# Cron jobs and systemd timers
sudo cp -a /var/spool/cron/crontabs ./crontabs
systemctl list-timers --all > timers.txt

# Configuration and web files
sudo tar -czpf etc.tar.gz /etc
sudo tar -czpf www.tar.gz /var/www

دوّن كذلك مستخدمي قواعد البيانات وصلاحياتهم، لأن تفريغ كل قاعدة بيانات على حدة لا يتضمنها. وإذا كان لديك VPS خاص بـ استضافة n8n، فخذ أيضًا نسخة احتياطية من وحدة تخزين Docker (volume) الخاصة بـ n8n ومن قيمة N8N_ENCRYPTION_KEY. فبدون هذا المفتاح لن تتمكن نسخة n8n المستعادة من فك تشفير بيانات الاعتماد المحفوظة لديك.

انسخ كل شيء إلى خارج السيرفر

# Run this on your PC or backup host
rsync -avz root@203.0.113.10:/root/migration/ ./server-backup/
تحذير: إعادة التثبيت تمسح القرص بالكامل، والنسخة الاحتياطية المحفوظة على السيرفر نفسه فقط ستضيع معه. قبل أن تطلب إعادة التثبيت، افتح الأرشيفات على جهاز النسخ الاحتياطي وتأكد من اكتمالها.

2. كيف أطلب إعادة تثبيت نظام التشغيل أو وضع الإنقاذ؟

يتولى فريق Cloudesta تنفيذ إعادة تثبيت نظام التشغيل وتفعيل وضع الإنقاذ. افتح تذكرة دعم عبر https://cloudesta.com/submitticket.php واذكر فيها ما يلي:

  • اسم المضيف (hostname) الخاص بالسيرفر وعنوان IP الخاص به.
  • نظام التشغيل الذي تريده، مثل Ubuntu 24.04 LTS، أو "وضع الإنقاذ" إذا كنت تحتاجه بدلًا من ذلك.
  • التاريخ والفترة الزمنية المفضلين لديك، مع تحديد المنطقة الزمنية.
  • تأكيدًا بأن لديك نسخة احتياطية خارج السيرفر وأنك توافق على مسح القرص.

3. بأي ترتيب يجب أن أستعيد البيانات بعد إعادة التثبيت؟

بعد إعادة التثبيت يتغير مفتاح المضيف (host key) الخاص بـ SSH على السيرفر. احذف المفتاح القديم من جهازك قبل الاتصال:

ssh-keygen -R 203.0.113.10

انسخ server-backup/ مرة أخرى إلى /root/migration على السيرفر، ثم نفّذ الاستعادة بالترتيب التالي.

الحزم. إذا كنت تستخدم مستودعات PPA، فأعد إضافتها أولًا، ثم ثبّت قائمة الحزم الخاصة بك:

sudo apt update && sudo apt upgrade -y
xargs -a /root/migration/manual-packages.txt sudo apt install -y

إذا كنت تنتقل بين إصدارات Ubuntu، فستختلف أسماء بعض الحزم. على سبيل المثال، إصدار PHP هو 8.1 على 22.04 و8.3 على 24.04. احذف من القائمة أي أسماء يرفضها apt وثبّت ما يكافئها.

الإعدادات. فُك أرشيف /etc في مجلد منفصل وانسخ منه ما تحتاجه فقط. لا تستبدل مجلد /etc الجديد بالكامل.

sudo mkdir -p /root/restore
sudo tar -xzpf /root/migration/etc.tar.gz -C /root/restore
sudo cp -a /root/restore/etc/nginx/sites-available/. /etc/nginx/sites-available/
sudo cp -a /root/restore/etc/cron.d/. /etc/cron.d/
sudo cp -a /root/migration/crontabs/. /var/spool/cron/crontabs/

بعد نسخ ملفات إعدادات المواقع، أعد إنشاء الروابط الرمزية (symlinks) في sites-enabled.

المجلد الجذري للموقع (Web root). استعد الملفات وأعد ضبط ملكيتها:

sudo tar -xzpf /root/migration/www.tar.gz -C /
sudo chown -R www-data:www-data /var/www/example.com

قواعد البيانات. استورد ملف التفريغ، ثم أعد إنشاء مستخدم التطبيق:

sudo mysql < /root/migration/appdb.sql
sudo mysql -e "CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'yourpassword'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';"

SSL. استعد شهادات Let's Encrypt حتى يعمل HTTPS قبل أن يشير DNS إلى السيرفر. ثم اختبر إعدادات سيرفر الويب وأعد تحميلها:

sudo apt install -y certbot python3-certbot-nginx
sudo cp -a /root/restore/etc/letsencrypt /etc/
sudo nginx -t && sudo systemctl reload nginx

4. كيف أختبر الموقع قبل تحويل DNS؟

وجّه جهازك أنت فقط إلى عنوان IP الجديد. أضف هذا السطر إلى /etc/hosts على Linux أو macOS. وعلى Windows، عدّل الملف C:\Windows\System32\drivers\etc\hosts باستخدام Notepad بعد تشغيله كمسؤول (Administrator).

203.0.113.10 example.com www.example.com

الآن تصفّح الموقع، وسجّل الدخول، وأرسل نموذجًا. ويمكنك أيضًا التحقق من HTTPS دون تعديل ملف hosts:

curl -I --resolve example.com:443:203.0.113.10 https://example.com

عند الانتهاء من الاختبار، احذف السطر الذي أضفته إلى ملف hosts.

5. كيف أرقّي خطتي دون توقف الخدمة؟

ترقية الموارد على السيرفر نفسه. لإضافة CPU أو RAM أو مساحة قرص، افتح تذكرة دعم تحدد فيها السيرفر والخطة المطلوبة. تطبّق Cloudesta التغيير، ويتطلب ذلك إعادة تشغيل واحدة قصيرة، لذا حدّد موعدها في ساعة يقل فيها الضغط. بعد إعادة التشغيل، تحقق من nproc وfree -h وlsblk وdf -h. إذا أظهر lsblk القرص الأكبر بينما لم يُظهره df -h، فاذكر ذلك في التذكرة نفسها.

الانتقال إلى سيرفر جديد. هذا هو المسار الذي لا يتسبب في أي توقف للخدمة. اطلب VPS سحابي جديدًا، وثبّت الحزم والإعدادات كما في القسم 3، ثم زامن البيانات من السيرفر القديم:

# Run on the OLD server, as root
rsync -aHAX --info=progress2 -e ssh /var/www/ root@203.0.113.20:/var/www/

اختبر السيرفر الجديد باستخدام ملف hosts، ثم نفّذ التحويل النهائي:

  1. أوقف عمليات الكتابة على السيرفر القديم لفترة وجيزة، مثلًا باستخدام وضع الصيانة.
  2. أعد تشغيل rsync مع الخيار --delete.
  3. فرّغ قواعد البيانات مرة أخرى واستوردها على السيرفر الجديد.
  4. حدّث سجلات A في DNS لتشير إلى عنوان IP الجديد.

أبقِ السيرفر القديم يعمل لمدة لا تقل عن قيمة TTL القديمة، ويُفضَّل من 24 إلى 48 ساعة، قبل أن تلغيه.

قائمة التحقق قبل التحويل

  • تم تخفيض TTL منذ 24 ساعة على الأقل.
  • تم نسخ النسخة الاحتياطية إلى خارج السيرفر والتحقق منها.
  • تمت استعادة الحزم والإعدادات والمجلد الجذري للموقع وقواعد البيانات وSSL.
  • مهام cron والمؤقتات (timers) موجودة.
  • تم اختبار الموقع عبر ملف hosts.
  • السيرفر القديم يبقى متصلًا حتى تنتهي مدة TTL.

التحقق من نجاح العملية

نفّذ عمليات الفحص التالية بعد التحويل:

dig +short example.com @1.1.1.1
dig +short example.com @8.8.8.8
systemctl --failed
sudo crontab -l
curl -I https://example.com
sudo tail -n 50 /var/log/nginx/error.log

يجب أن يُرجع كلا المحلِّلين (resolvers) عنوان IP الجديد، وألا تكون هناك أي وحدات (units) فاشلة. وبمجرد أن تتأكد من ذلك، ارفع قيمة TTL مرة أخرى إلى 3600 أو إلى القيمة المعتادة لديك.

مشكلات شائعة

  • بعض الزوار ما زالوا يصلون إلى السيرفر القديم: لا تزال المحلِّلات تحتفظ بالسجل القديم في ذاكرتها المؤقتة. انتظر حتى تنقضي مدة TTL القديمة، وأبقِ السيرفر القديم يستقبل الترافيك حتى ذلك الحين. استخدم dig مع عدة محلِّلات لمتابعة مدى انتشار التغيير.
  • صفحة فارغة أو أخطاء "Call to undefined function": هناك إضافات PHP ناقصة. قارن مخرجات php -m على السيرفر القديم والجديد، ثم ثبّت ما ينقص، مثلًا sudo apt install php8.3-mysql php8.3-gd php8.3-mbstring.
  • أخطاء 403 أو "permission denied" بعد rsync: نُسخت الملفات دون الخيار -a أو بغير حساب root، أو أدى غياب الشرطة المائلة في نهاية المسار إلى إنشاء مجلد متداخل. أصلح الملكية باستخدام sudo chown -R www-data:www-data /var/www/example.com، ثم أعد ضبط الأذونات باستخدام find /var/www/example.com -type d -exec chmod 755 {} + وfind /var/www/example.com -type f -exec chmod 644 {} +.
  • "Access denied for user": لم تتم إعادة إنشاء مستخدمي قواعد البيانات. نفّذ أوامر CREATE USER وGRANT الواردة في القسم 3.
  • يُظهر SSH التحذير "REMOTE HOST IDENTIFICATION HAS CHANGED": هذا أمر متوقع بعد إعادة التثبيت. نفّذ ssh-keygen -R 203.0.113.10 على جهازك.

الأسئلة الشائعة

هل تحذف إعادة تثبيت نظام التشغيل جميع بياناتي؟

نعم. يُمسح كل ما على قرص السيرفر، بما في ذلك المواقع وقواعد البيانات والإعدادات، ولا يبقى إلا النسخة الاحتياطية المحفوظة خارج السيرفر.

كم من الوقت يتوقف السيرفر أثناء ترقية الموارد؟

فقط خلال إعادة التشغيل اللازمة لتطبيق التخصيص الجديد لـ CPU أو RAM أو القرص. ويمكنك اختيار الفترة الزمنية في تذكرتك.

هل سأحتفظ بعنوان IP الخاص بي؟

إعادة التثبيت على السيرفر نفسه أو ترقية الموارد تحافظ على عنوان IP نفسه. أما الانتقال إلى سيرفر جديد فيعني عادةً عنوان IP جديدًا، ولهذا تحتاج إلى تحويل DNS. ويتولى فريق الدعم أي تغييرات في عناوين IP من خلال تذكرة دعم.

تحتاج إلى مساعدة؟ لطلب إعادة التثبيت أو وضع الإنقاذ أو ترقية الخطة، أو للحصول على مساعدة في عملية النقل، افتح تذكرة دعم عبر https://cloudesta.com/submitticket.php.

هل كانت المقالة مفيدة ؟

0 أعضاء وجدوا هذه المقالة مفيدة

Powered by WHMCompleteSolution