إن كان موقعك يعرض «508 Resource Limit Is Reached» في ساعات الذروة، أو صار يقفز من 300 ميلي ثانية إلى ثانيتين كلما نشرت مقالاً جديداً، فقد بلغت سقف الاستضافة المشتركة. خادم VPS يرفع هذا السقف، لكنه ينقل إليك عملاً كان المزود يقوم به عنك: التحديثات، والأمان، والنسخ الاحتياطي، والمراقبة. هذا المقال خطة انتقال كاملة: كيف تتأكد أنك تحتاجه فعلاً، وكيف تنقل موقعك بدقائق توقف، وما تفعله في الساعة الأولى على الخادم الجديد.
01علامات أنك تجاوزت الاستضافة المشتركة
في الاستضافة المشتركة يعمل حسابك داخل حدود موارد تفرضها غالباً تقنية في CloudLinux: نسبة من نواة، وذاكرة محددة، وعدد من العمليات المتزامنة، وسرعة قراءة وكتابة. وتجاوزها لا يبطئ موقعك فقط، بل يرفض الطلبات. هذه العلامات تقول إنك تجاوزتها:
- خطأ 508 أو 503 متكرر: يظهر حين يبلغ حسابك حد العمليات المتزامنة (Entry Processes) أو حد الذاكرة. صفحة استهلاك الموارد في cPanel تعرض عدد مرات بلوغ كل حد (Faults)، فإن تكررت كل يوم فالحد يخنق موقعك.
- TTFB يتضاعف تحت الحمل: قِسه في ساعة هادئة وفي ساعة الذروة. فرق كبير في صفحات مخزنة مؤقتاً يعني أن الخادم المشترك مزدحم، أو أن حسابك يُبطَّأ عند الحد.
- برمجيات لا تُتاح لك: تحتاج Redis، أو تطبيق Node.js يعمل باستمرار، أو عمّال طوابير، أو إضافة PHP غير مثبتة، أو مهام مجدولة كل دقيقة.
# مراحل الطلب بالثواني: DNS، والاتصال، وTLS، وأول بايت، والمجموعcurl -o /dev/null -s -w 'dns %{time_namelookup} tcp %{time_connect} tls %{time_appconnect} ttfb %{time_starttransfer} total %{time_total}\n' https://matbakh-doha.com/
وقبل أن تقرر، تأكد أن البطء ليس من موقعك نفسه: إضافة ثقيلة، أو صور غير مضغوطة، أو غياب التخزين المؤقت. هذه مشكلات تنتقل معك إلى أي خادم، ولن يحلها VPS.

02ما الذي ينتقل إليك
في الاستضافة المشتركة يدير المزود الخادم وتدير أنت موقعك. في خادم VPS تملك ، فتتحكم في كل شيء، وتتحمل مسؤولية كل شيء:
| المهمة | الاستضافة المشتركة | خادم VPS |
|---|---|---|
| تحديثات النظام والترقيعات الأمنية | المزود | أنت |
| إصدار PHP وإضافاته | تختار من قائمة | تثبّت ما تشاء وتصونه |
| جدار الحماية وصد محاولات الدخول | المزود | أنت |
| النسخ الاحتياطي | ضمن الباقة غالباً | أنت، بأدواتك أو بمساحة المزود |
| البريد الإلكتروني | ضمن الباقة غالباً | قرار منفصل: خدمة بريد مستقلة أو خادم بريد تديره |
| تجديد شهادات SSL | تلقائي | تضبطه بنفسك عبر ACME |
| المراقبة والتنبيه | المزود | أنت |
إن لم يكن لديك وقت لهذه المهام، فهناك حلّان وسط: خطة استضافة مشتركة أعلى بحدود أوسع، أو خادم VPS بلوحة تحكم تدير عنك جزءاً منها. خوادم CoreVPS مثلاً تتيح إضافة رخصة cPanel أو Plesk أو ISPmanager، أو اختيار تطبيق جاهز مثل LEMP أو WordPress عند الطلب. أما حجم الخادم فاحسبه من أرقام حملك، كما نشرح في مقال مستقل عن اختيار خادم VPS.

03خطة الانتقال بدقائق توقف
المثال: مدونة وصفات من الدوحة، matbakh-doha.com، تعمل بـ WordPress على استضافة cPanel. الخطة سبع خطوات:
- 01قبل يومين: خفّض TTL: غيّر سجلَّي A وAAAA للنطاق إلى 300 ثانية، ثم انتظر مدة الـ TTL القديمة كاملة، فقد تكون 14,400 ثانية أو يوماً كاملاً. بعدها لن تحتفظ المخابئ بالعنوان القديم أكثر من خمس دقائق.
- 02جهّز الخادم: حصّنه وثبّت الستاك كما في القسمين التاليين، وأنشئ قاعدة البيانات بالاسم والمستخدم وكلمة المرور الموجودة في wp-config.php، فلا تعدّل الإعدادات أثناء النقل.
- 03المزامنة الأولى: انسخ الملفات وقاعدة البيانات والموقع ما زال يعمل على الاستضافة القديمة. هذه النسخة تأخذ الوقت الأطول، ولا توقف فيها. وإن لم تتح الاستضافة القديمة SSH، فنزّل نسخة كاملة من cPanel وارفعها.
- 04اختبر قبل التحويل: انسخ شهادة SSL الحالية إلى الخادم الجديد مؤقتاً، واختبر الموقع عليه بعنوانه الجديد دون أن تغيّر DNS.
- 05جمّد الكتابة وزامن الفرق: فعّل وضع الصيانة دقائق، ثم أعد مزامنة الملفات (rsync ينقل الفرق فقط)، وأعد تفريغ قاعدة البيانات واستيرادها.
- 06حوّل DNS: غيّر سجلَّي A وAAAA إلى عنوان الخادم الجديد، وتابع وصول التغيير بأداة فحص انتشار DNS من إليفانتي، ثم أصدر شهادة جديدة بـ certbot.
- 07أبقِ القديم أسبوعاً: لا تلغِ الاستضافة القديمة قبل سبعة أيام، وراقب سجلاتها: أي طلب يصلها يعني أن مخبئاً ما زال يحمل العنوان القديم. بعدها أعد TTL إلى 3,600 ثانية أو أكثر.
# على الاستضافة القديمة (Terminal في cPanel): فرّغ قاعدة البياناتmysqldump --single-transaction --quick -u matbakh_wp -p matbakh_wp > ~/matbakh.sql# على الخادم الجديد: مجلد للموقع يملكه مستخدمك، ثم اسحب الملفات والتفريغ عبر SSHsudo install -d -o "$USER" /var/www/matbakhrsync -az --info=progress2 [email protected]:public_html/ /var/www/matbakh/rsync -az [email protected]:matbakh.sql ~/sudo mysql matbakh_wp < ~/matbakh.sql# اختبر الخادم الجديد قبل تغيير DNS، دون لمس ملف hostscurl -sI --resolve matbakh-doha.com:443:203.0.113.41 https://matbakh-doha.com/# TTL الحالي كما يراه المحلّل (الرقم بعد اسم النطاق)dig +noall +answer matbakh-doha.com A# بعد المزامنة الأخيرة فقط: سلّم الملفات لمستخدم خادم الويبsudo chown -R www-data:www-data /var/www/matbakh
04الساعة الأولى: تحصين الخادم
خادم جديد بعنوان IP عام يتلقى محاولات دخول SSH آلية خلال دقائق من تشغيله. قبل أن تنقل إليه أي ملف، أنشئ مستخدماً إدارياً، وانتقل إلى الدخول بـ بدل كلمات المرور، وأغلق كل منفذ لا تحتاجه. على Ubuntu أو Debian:
# 1) بصلاحيات root في أول دخول: حدّث النظام، وأنشئ مستخدماً إدارياًapt update && apt full-upgrade -y && apt install -y sudoadduser deployusermod -aG sudo deploy# 2) من جهازك أنت: انسخ مفتاحك العام إلى المستخدم الجديدssh-copy-id [email protected]# 3) بالمستخدم الجديد، بعد أن تتأكد أن الدخول بالمفتاح يعمل: أوقف كلمات المرور ودخول rootprintf 'PasswordAuthentication no\nKbdInteractiveAuthentication no\nPermitRootLogin no\n' | sudo tee /etc/ssh/sshd_config.d/00-hardening.confsudo sshd -t && sudo systemctl reload ssh
sudo apt install -y ufw fail2ban python3-systemd unattended-upgrades# جدار الحماية: اسمح بـ SSH أولاً، ثم الويب، ثم فعّلهsudo ufw allow OpenSSHsudo ufw allow 80,443/tcpsudo ufw enable# fail2ban: احظر ساعة كل عنوان يخطئ في الدخول 5 مراتprintf '[sshd]\nenabled = true\nbackend = systemd\nmaxretry = 5\nbantime = 1h\n' | sudo tee /etc/fail2ban/jail.localsudo systemctl restart fail2bansudo fail2ban-client status sshd# التحديثات الأمنية التلقائيةsudo dpkg-reconfigure -plow unattended-upgrades
05ستاك خفيف
موقع WordPress لا يحتاج أكثر من Nginx وPHP-FPM وMariaDB وCertbot، ومعها Redis إن أردت تخزيناً مؤقتاً للكائنات. كل لوحة أو خدمة إضافية تستهلك ذاكرة وتضيف سطح هجوم، فلا تثبّت إلا ما تستخدمه:
sudo apt install -y nginx mariadb-server redis-server certbot python3-certbot-nginx# إصدار PHP الافتراضي في توزيعتك مع إضافات WordPress الشائعةsudo apt install -y php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip php-redissudo mariadb-secure-installation# بعد تحويل DNS وإعداد كتلة الخادم في Nginx: شهادة جديدة، ثم اختبار التجديد التلقائيsudo certbot --nginx -d matbakh-doha.com -d www.matbakh-doha.comsudo certbot renew --dry-run
هذه الحزم تثبّت إصدار PHP الافتراضي في توزيعتك، وهو 8.3 في Ubuntu 24.04 و8.4 في Debian 13. فإن احتاج موقعك إصداراً آخر، فاستخدم مستودع Ondřej Surý المعروف لإصدارات PHP. وإن أردت لوحة تحكم، فاخترها عند طلب الخادم بدل تثبيتها فوق ستاك قائم، فلوحات مثل cPanel وPlesk تفترض نظاماً نظيفاً.
06المراقبة بعد الانتقال
- من الخارج: فحص توافر كل دقيقة من موقع خارج خادمك، ينبهك حين لا يرد الموقع أو يتجاوز زمن الرد ثانيتين. الخادم المتوقف لا يستطيع أن يخبرك أنه متوقف.
- من الداخل: تتابع المعالج والذاكرة والقرص لحظة بلحظة من لوحة تحكم خادمك، ولتاريخ أطول وتنبيهات أدق استخدم Prometheus مع Grafana.
- السجلات: راجع سجل أخطاء Nginx وسجلات PHP-FPM في الأيام الأولى، فهي تكشف الإضافة التي تحتاج حزمة ناقصة أو صلاحية ملف.
- الشهادة: افحص الموقع بعد التحويل بأداة فحص شهادة SSL من إليفانتي لتتأكد من الجهة المصدرة وسلسلة الثقة وتاريخ الانتهاء. ومع تقليص الحد الأقصى لعمر الشهادات العامة إلى 200 يوم منذ 15/3/2026، ثم 100 يوم في 2027، لم يعد التجديد اليدوي خياراً.
- النسخ الاحتياطي: فعّله من اليوم الأول، ونشرح بناءه واختبار استعادته في مقال مستقل عن تخزين الـ VPS.
# الخدمات المتعطلة إن وُجدتsystemctl --failed# آخر أخطاء Nginx وPHP-FPMsudo tail -n 50 /var/log/nginx/error.logsudo journalctl -u 'php*-fpm' --since '1 hour ago'# مؤقت تجديد الشهاداتsystemctl list-timers | grep certbot
- المشكلةبعض الزوار ما زالوا يرون الموقع القديم بعد يوم من التحويل
- الحللم يُخفَّض TTL مبكراً بما يكفي، أو محلّل لدى مزود إنترنت يتجاهله. تابع بأداة فحص انتشار DNS، وأبقِ الاستضافة القديمة تعمل حتى تتوقف الطلبات عنها.
- المشكلةتوقف البريد بعد إلغاء الاستضافة القديمة
- الحلسجل MX كان يشير إليها، وتغيير سجل A لا يمسه. انقل البريد إلى خدمة مستقلة وغيّر MX قبل الإلغاء بأيام.
- المشكلةخطأ 502 Bad Gateway بعد تثبيت الستاك
- الحلمسار مقبس PHP-FPM في إعداد Nginx لا يطابق الإصدار المثبت. تحقق من اسم المقبس في المجلد /run/php، وصحّح fastcgi_pass.
- المشكلةرُفض دخولك بعد إيقاف كلمات المرور
- الحلالمفتاح لم يُنسخ إلى المستخدم الصحيح. ادخل من وحدة التحكم في لوحة المزود، وأصلح ملف authorized_keys.
07قبل أن تنتقل
خادم VPS يستحق الانتقال حين تكون المشكلة حدود الموارد فعلاً، لا موقعاً ثقيلاً يحتاج تحسيناً. قِس أولاً: أخطاء 508، وعدد مرات بلوغ الحدود في cPanel، وTTFB في الذروة. ثم احسب الوقت: ساعتان لإعداد الخادم وتحصينه، ونحو ساعة في الشهر للتحديثات ومراجعة السجلات واختبار النسخ.
إن كان هذا الوقت متاحاً لك أو لفريقك، فالانتقال يمنحك موارد محجوزة لخادمك لا تقيدها حدود حساب مشترك، وحرية في كل طبقة من الستاك. وإن لم يكن، فخطة مشتركة أعلى أو خادم بلوحة تحكم قرار هندسي سليم، لا تراجع.




