نقل موقع من استضافة مشتركة إلى VPS: دليل عملي خطوة بخطوة

كل ما تحتاجه للانتقال من الاستضافة المشتركة إلى سيرفر VPS بدون توقف أو فقدان بيانات

عندما يبدأ موقعك بالنمو ويزداد عدد الزوّار، ستلاحظ أن الاستضافة المشتركة لم تعد كافية. البطء المتكرر، وتوقف الموقع في أوقات الذروة، ومحدودية الموارد كلها علامات واضحة أنك تحتاج نقل موقع من استضافة مشتركة إلى VPS. في هذا الدليل العملي سنأخذك خطوة بخطوة في رحلة الانتقال الكاملة مع أوامر وتعليمات تطبيقية مفصّلة.

متى تحتاج الانتقال من مشتركة لـ VPS

قبل الإقدام على نقل موقع من استضافة مشتركة إلى VPS، يجب أن تتأكد أن الوقت مناسب فعلاً. إليك العلامات التي تدل على أنك تحتاج VPS:

  • بطء ملحوظ في التحميل: إذا أصبح موقعك يستغرق أكثر من 3 ثوانٍ للتحميل رغم تحسين الكاش والصور
  • توقف متكرر (Downtime): المواقع المجاورة على نفس السيرفر المشترك تستهلك الموارد وتؤثر عليك
  • تجاوز حدود الموارد: رسائل تحذيرية من مزوّد الاستضافة بخصوص استهلاك CPU أو RAM
  • أكثر من 10,000 زائر شهريًا: حجم زيارات يتطلب موارد مخصصة
  • حاجة لإعدادات خاصة: تثبيت برمجيات مخصصة أو تعديل إعدادات PHP/MySQL غير متاحة في المشتركة
  • متطلبات أمنية عالية: متجر إلكتروني أو موقع يتعامل مع بيانات حساسة يحتاج عزل كامل
  • تشغيل عدة مواقع: إدارة عدة مواقع على سيرفر واحد بتكلفة أقل من عدة خطط مشتركة

إذا انطبقت عليك علامتان أو أكثر من القائمة أعلاه، فقد حان الوقت للتفكير جديًا في نقل موقع من استضافة مشتركة إلى VPS.

الفرق بين الاستضافة المشتركة و VPS

لفهم أهمية هذه الخطوة، يجب أن نقارن بين النوعين بشكل واضح:

المعيار استضافة مشتركة VPS
المواردمشتركة مع مواقع أخرىمخصصة ومضمونة
صلاحيات Rootغير متوفرةكاملة
الأداءيتأثر بالمواقع الأخرىثابت ومستقل
التخصيصمحدود جداًكامل (نظام التشغيل، البرمجيات)
السعرمنخفض (3-15$/شهر)متوسط (10-80$/شهر)
المعرفة التقنيةلا تحتاج خبرةتحتاج معرفة بـ Linux
قابلية التوسعمحدودةسهلة (زيادة RAM/CPU فوراً)

كما ترى، VPS يمنحك تحكمًا كاملاً وموارد مخصصة. لكن هذا يأتي مع مسؤولية إدارة السيرفر. إذا لم تكن مرتاحًا لإدارة السيرفر بنفسك، يمكنك اختيار VPS مُدار (Managed VPS) حيث تتولى شركة الاستضافة إدارة السيرفر نيابة عنك.

التحضير للانتقال

قبل البدء في عملية نقل موقع من استضافة مشتركة إلى VPS، هناك خطوات تحضيرية مهمة يجب تنفيذها لضمان انتقال سلس:

1. اختيار مواصفات VPS المناسبة

المواصفات تعتمد على حجم موقعك وعدد الزوّار. كقاعدة عامة لموقع ووردبريس متوسط:

  • RAM: 2-4 GB كحد أدنى (4 GB مُوصى به)
  • CPU: 2 cores على الأقل
  • التخزين: 40-80 GB SSD/NVMe
  • نظام التشغيل: Ubuntu 24.04 LTS أو AlmaLinux 9
  • عرض النطاق: 2-4 TB شهريًا

2. النسخ الاحتياطي الكامل

قبل أي شيء، خذ نسخة احتياطية كاملة من الاستضافة المشتركة:

# من لوحة cPanel: اذهب إلى Backup > Generate Full Backup
# أو استخدم SSH إن كان متاحاً:

# نسخ ملفات الموقع
tar -czf ~/website_backup_$(date +%Y%m%d).tar.gz -C /home/username/public_html .

# نسخ قاعدة البيانات
mysqldump -u dbuser -p database_name > ~/db_backup_$(date +%Y%m%d).sql

# التحقق من حجم النسخة
ls -lh ~/website_backup_*.tar.gz ~/db_backup_*.sql

3. توثيق الإعدادات الحالية

وثّق كل شيء قبل الانتقال حتى تتمكن من إعادة إعداده على VPS:

# سجّل إصدار PHP الحالي
php -v

# سجّل إعدادات PHP المهمة
php -i | grep -E "upload_max|post_max|memory_limit|max_execution"

# سجّل إصدار MySQL/MariaDB
mysql --version

# سجّل Cron Jobs الحالية
crontab -l

# قائمة بإضافات PHP المُثبّتة
php -m

إعداد سيرفر VPS من الصفر

الآن نبدأ الجزء العملي من عملية نقل موقع من استضافة مشتركة إلى VPS. سنقوم بإعداد سيرفر Ubuntu 24.04 مع حزمة LEMP (Linux, Nginx, MySQL, PHP). يمكنك الرجوع إلى دليل DigitalOcean لتثبيت LEMP للمزيد من التفاصيل.

تأمين السيرفر أولاً

# الاتصال بالسيرفر
ssh root@YOUR_VPS_IP

# تحديث النظام
apt update && apt upgrade -y

# إنشاء مستخدم جديد بدلاً من root
adduser deployer
usermod -aG sudo deployer

# إعداد مفاتيح SSH
mkdir -p /home/deployer/.ssh
cp ~/.ssh/authorized_keys /home/deployer/.ssh/
chown -R deployer:deployer /home/deployer/.ssh
chmod 700 /home/deployer/.ssh
chmod 600 /home/deployer/.ssh/authorized_keys

# تعطيل تسجيل الدخول بكلمة مرور
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd

# إعداد الجدار الناري
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

تثبيت حزمة LEMP

# تثبيت Nginx
apt install nginx -y
systemctl enable nginx

# تثبيت MySQL/MariaDB
apt install mariadb-server -y
mysql_secure_installation

# تثبيت PHP 8.3 مع الإضافات المطلوبة لووردبريس
apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd 
    php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml 
    php8.3-zip php8.3-imagick php8.3-redis php8.3-opcache -y

# التحقق من التثبيت
nginx -v
mysql --version
php -v

تحسين إعدادات PHP

# تعديل إعدادات PHP لتناسب ووردبريس
cat > /etc/php/8.3/fpm/conf.d/99-wordpress.ini << 'EOF'
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 300
max_input_vars = 3000

[opcache]
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60
opcache.validate_timestamps=1
EOF

# إعادة تشغيل PHP-FPM
systemctl restart php8.3-fpm

نقل الملفات بـ rsync

من أهم خطوات عملية الانتقال هي نقل الملفات. أداة rsync هي الخيار الأفضل لأنها تنقل فقط الملفات المُعدّلة وتدعم الاستكمال في حال انقطاع الاتصال.

# إنشاء مجلد الموقع على VPS
sudo mkdir -p /var/www/example.com
sudo chown deployer:www-data /var/www/example.com

# نقل الملفات من الاستضافة المشتركة إلى VPS
# (نفّذ هذا الأمر من VPS)
rsync -avzP --stats 
    [email protected]:/home/shared_user/public_html/ 
    /var/www/example.com/

# أو إذا كنت تنقل من نسخة احتياطية محلية
rsync -avzP ~/website_backup/ /var/www/example.com/

# ضبط الصلاحيات
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} ;
sudo find /var/www/example.com -type f -exec chmod 644 {} ;

# التحقق من حجم الملفات المنقولة
du -sh /var/www/example.com

إذا كانت الاستضافة المشتركة لا تدعم SSH، يمكنك تحميل النسخة الاحتياطية عبر FTP ثم رفعها إلى VPS، أو استخدام لوحة cPanel لتنزيل نسخة كاملة.

نقل قاعدة البيانات

الخطوة التالية هي نقل قاعدة البيانات. هذه الخطوة حرجة ويجب تنفيذها بدقة:

# على VPS: إنشاء قاعدة البيانات والمستخدم
sudo mysql -u root << 'EOF'
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'StrongPassword_2026!';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EOF

# نقل ملف SQL إلى VPS (من جهازك المحلي)
scp db_backup_20260426.sql deployer@YOUR_VPS_IP:~/

# استيراد قاعدة البيانات
mysql -u wp_user -p wordpress_db < ~/db_backup_20260426.sql

# التحقق من الاستيراد
mysql -u wp_user -p -e "USE wordpress_db; SHOW TABLES;" | head -20

# التحقق من عدد الجداول
mysql -u wp_user -p -e "SELECT COUNT(*) as total_tables FROM information_schema.tables WHERE table_schema = 'wordpress_db';"

بعد استيراد قاعدة البيانات، حدّث ملف wp-config.php ليعكس بيانات الاتصال الجديدة:

# تعديل wp-config.php
nano /var/www/example.com/wp-config.php

# حدّث هذه القيم:
# define('DB_NAME', 'wordpress_db');
# define('DB_USER', 'wp_user');
# define('DB_PASSWORD', 'StrongPassword_2026!');
# define('DB_HOST', 'localhost');

إعداد Nginx/Apache

الآن تحتاج إعداد خادم الويب. سنستخدم Nginx لأنه أخف وأسرع. يمكنك الرجوع إلى الوثائق الرسمية لـ Nginx للتعرّف على جميع التوجيهات المتاحة.

# إنشاء ملف إعدادات Nginx للموقع
sudo nano /etc/nginx/sites-available/example.com

# المحتوى:
cat > /etc/nginx/sites-available/example.com << 'NGINX'
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

    # حجم الرفع الأقصى
    client_max_body_size 64M;

    # إعدادات ووردبريس
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # منع الوصول لملفات حساسة
    location ~ /.ht {
        deny all;
    }
    location = /wp-config.php {
        deny all;
    }
    location ~* /(?:uploads|files)/.*.php$ {
        deny all;
    }

    # معالجة PHP
    location ~ .php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
    }

    # كاش الملفات الثابتة
    location ~* .(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # ضغط Gzip
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml;
    gzip_min_length 256;
}
NGINX

# تفعيل الموقع
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

تركيب SSL على VPS

بعد إعداد خادم الويب، لا تنسَ تركيب شهادة SSL. يمكنك الرجوع إلى وثائق Let's Encrypt الرسمية للاطلاع على الخيارات المتقدمة:

# تثبيت Certbot
sudo apt install certbot python3-certbot-nginx -y

# إصدار الشهادة (تأكد أن DNS يشير للـ VPS أولاً)
# إذا لم تكن جاهزاً لتبديل DNS، استخدم الطريقة في القسم التالي
sudo certbot --nginx -d example.com -d www.example.com

# التحقق من التجديد التلقائي
sudo certbot renew --dry-run

# إعداد cron للتجديد
echo "0 3 * * * certbot renew --quiet --post-hook 'systemctl reload nginx'" | sudo tee -a /etc/crontab

بعد تركيب SSL، سيقوم Certbot تلقائيًا بتعديل ملف Nginx لإضافة إعدادات HTTPS والتحويل من HTTP.

اختبار الموقع قبل تبديل DNS

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

الاختبار عبر ملف hosts المحلي

# على جهازك المحلي (Windows)
# افتح Notepad كمسؤول وعدّل:
# C:WindowsSystem32driversetchosts

# أضف هذا السطر (استبدل بـ IP السيرفر الجديد):
203.0.113.50  example.com  www.example.com

# على Linux/Mac:
sudo nano /etc/hosts
# أضف نفس السطر

# الآن عند فتح example.com في المتصفح ستصل للسيرفر الجديد

قائمة الفحص قبل تبديل DNS

  • الصفحة الرئيسية تعمل بشكل صحيح
  • لوحة تحكم ووردبريس متاحة (wp-admin)
  • الإضافات والقالب يعملون بدون أخطاء
  • نماذج الاتصال ترسل البريد بنجاح
  • رفع الصور يعمل في المحرر
  • WooCommerce: عملية شراء تجريبية ناجحة (إن وُجد)
  • الروابط الدائمة (Permalinks) تعمل
  • لا توجد أخطاء 404 أو 500
# فحص سريع من سطر الأوامر
# اختبار الاتصال بالموقع مع تحديد IP يدوياً
curl -sI --resolve example.com:80:203.0.113.50 http://example.com | head -5

# فحص PHP يعمل
curl -s --resolve example.com:80:203.0.113.50 http://example.com | grep -o '.*'

# فحص سجل الأخطاء
sudo tail -20 /var/log/nginx/error.log
sudo tail -20 /var/log/php8.3-fpm.log

تبديل DNS والانتقال النهائي

بعد التأكد من أن كل شيء يعمل على VPS، حان الوقت لتبديل DNS وإتمام عملية نقل موقع من استضافة مشتركة إلى VPS:

خطوات تبديل DNS

# 1. قلّل TTL لسجلات DNS إلى 300 ثانية (5 دقائق) قبل 24 ساعة من التبديل
# هذا يُسرّع انتشار التغيير

# 2. خذ نسخة نهائية من الاستضافة المشتركة (لالتقاط آخر التعديلات)
mysqldump -u dbuser -p database_name > final_db_backup.sql
rsync -avzP [email protected]:/home/shared_user/public_html/ /var/www/example.com/

# 3. استورد النسخة النهائية لقاعدة البيانات
mysql -u wp_user -p wordpress_db < final_db_backup.sql

# 4. بدّل سجلات DNS (في لوحة تحكم النطاق):
# A Record: @ → IP_VPS_الجديد
# A Record: www → IP_VPS_الجديد
# أو CNAME: www → example.com

# 5. تحقق من انتشار DNS
dig example.com +short
dig www.example.com +short

# 6. بعد انتشار DNS، ثبّت SSL
sudo certbot --nginx -d example.com -d www.example.com

قد يستغرق انتشار DNS من دقائق إلى 48 ساعة حسب مزوّد النطاق. خلال هذه الفترة، أبقِ الموقع على الاستضافة المشتركة يعمل كاحتياط. يمكنك مراقبة حالة الانتشار باستخدام أدوات مثل whatsmydns.net.

تحسينات بعد الانتقال

بعد إتمام نقل موقع من استضافة مشتركة إلى VPS بنجاح، حان الوقت لاستغلال إمكانيات VPS الكاملة في تحسين الأداء والأمان:

تثبيت Redis للكاش

# تثبيت Redis
sudo apt install redis-server -y
sudo systemctl enable redis-server

# تعديل إعدادات Redis
sudo sed -i 's/^# maxmemory .*/maxmemory 256mb/' /etc/redis/redis.conf
sudo sed -i 's/^# maxmemory-policy .*/maxmemory-policy allkeys-lru/' /etc/redis/redis.conf
sudo systemctl restart redis-server

# في ووردبريس: ثبّت إضافة Redis Object Cache
# وأضف في wp-config.php:
# define('WP_REDIS_HOST', '127.0.0.1');
# define('WP_REDIS_PORT', 6379);

تثبيت Fail2Ban للحماية

# تثبيت Fail2Ban
sudo apt install fail2ban -y

# إنشاء ملف إعدادات محلي
sudo cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 10

[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 300
EOF

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

إعداد النسخ الاحتياطي التلقائي

#!/bin/bash
# /usr/local/bin/backup-site.sh
BACKUP_DIR="/var/backups/website"
DATE=$(date +%Y%m%d_%H%M)
KEEP_DAYS=7

mkdir -p $BACKUP_DIR

# نسخ قاعدة البيانات
mysqldump -u wp_user -p'StrongPassword_2026!' wordpress_db | gzip > $BACKUP_DIR/db_$DATE.sql.gz

# نسخ ملفات الموقع
tar -czf $BACKUP_DIR/files_$DATE.tar.gz -C /var/www/example.com .

# حذف النسخ الأقدم من 7 أيام
find $BACKUP_DIR -type f -mtime +$KEEP_DAYS -delete

echo "[$DATE] Backup completed successfully" >> /var/log/backup.log
# جعل السكربت قابلاً للتنفيذ وجدولته
sudo chmod +x /usr/local/bin/backup-site.sh

# تشغيل يومياً الساعة 3 فجراً
echo "0 3 * * * root /usr/local/bin/backup-site.sh" | sudo tee /etc/cron.d/website-backup

الخلاصة

نقل موقع من استضافة مشتركة إلى VPS هو قرار استراتيجي يفتح أمامك آفاقًا واسعة من حيث الأداء والتحكم والأمان. صحيح أن العملية تتطلب بعض المعرفة التقنية والتخطيط المسبق، لكن باتباع الخطوات المذكورة في هذا الدليل يمكنك إتمام الانتقال بنجاح ودون توقف لموقعك.

تذكّر دائمًا: خذ نسخة احتياطية قبل كل خطوة، اختبر الموقع على VPS قبل تبديل DNS، ولا تُلغِ الاستضافة المشتركة إلا بعد التأكد الكامل من أن كل شيء يعمل على VPS. إذا كنت تبحث عن نقل موقع من استضافة مشتركة إلى VPS بدون عناء الإعداد، يمكنك الاستفادة من خدمة النقل المجاني التي توفّرها مرام هوست مع سيرفرات VPS المُدارة.

سيرفرات VPS مُدارة من مرام هوست مع نقل مجاني

وفّر وقتك ودع فريقنا يتولى نقل موقع من استضافة مشتركة إلى VPS نيابةً عنك. سيرفرات VPS بأداء عالٍ مع إدارة كاملة ودعم فني على مدار الساعة. ابدأ من هنا.

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

كم يستغرق نقل موقع من استضافة مشتركة إلى VPS؟

تعتمد المدة على حجم الموقع وقاعدة البيانات. بشكل عام، موقع ووردبريس متوسط (2-5 GB) يمكن نقله خلال 2-4 ساعات. القسم الأكبر من الوقت يُستهلك في إعداد السيرفر وليس في نقل الملفات ذاتها. مع خبرة كافية، يمكن إتمام العملية الكاملة في يوم واحد.

هل سيتوقف موقعي أثناء عملية النقل؟

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

هل أحتاج خبرة في Linux لإدارة VPS؟

نعم، VPS غير المُدار يتطلب معرفة أساسية بسطر أوامر Linux وإدارة الخوادم. إذا لم تكن مرتاحًا لذلك، اختر VPS مُدار حيث تتولى شركة الاستضافة إدارة النظام والتحديثات والأمان نيابة عنك، بينما تركّز أنت على محتوى موقعك.

ما الفرق بين VPS مُدار وغير مُدار؟

VPS غير المُدار يعطيك سيرفر فارغ مع نظام تشغيل فقط وأنت مسؤول عن كل شيء: التثبيت، التحديثات، الأمان، والنسخ الاحتياطي. أما VPS المُدار فيتضمن إعداد السيرفر وتحديثاته الأمنية والدعم الفني ولوحة تحكم جاهزة. التكلفة أعلى قليلاً لكنه يوفّر عليك ساعات من العمل الشهري.