كلاود
أدلة

كيف تنقل موقعك لسيرفر كلاود: دليل المطور

كلاود|٣٠ ديسمبر ٢٠٢٥|4 دقائق قراءة|٤٨٧ مشاهدة
كيف تنقل موقعك لسيرفر كلاود: دليل المطور

نسخ الملفات، تصدير قاعدة البيانات، إعداد DNS، واختبار كل شي قبل التحويل النهائي. نشرح الخطوات.

قبل ما تبدأ: التجهيزات الأساسية

نقل موقع لسيرفر سحابي جديد يتطلب تخطيط مسبق. بدون تجهيز صحيح، ممكن تفقد بيانات أو تتعرض لتوقف طويل. هذا الدليل يغطي نقل موقع PHP/Laravel (أو أي تطبيق ويب) من سيرفر لآخر خطوة بخطوة.

وقت التنفيذ المتوقع: 2-6 ساعات حسب حجم الموقع وقاعدة البيانات.

لماذا النقل لسيرفر سحابي؟ السيرفر السحابي يوفّر مرونة في التوسّع، عزل كامل لمواردك، تحكم كامل بنظام التشغيل، وأداء ثابت ما يتأثر بمواقع ثانية على نفس الجهاز. مقارنة بالاستضافة المشتركة التقليدية، الفرق واضح في الأداء والأمان والتحكم.

قائمة التجهيزات

  • بيانات دخول السيرفر القديم (SSH)
  • بيانات دخول السيرفر الجديد (SSH)
  • بيانات قاعدة البيانات القديمة (اسم، مستخدم، كلمة مرور)
  • قائمة بالنطاقات والنطاقات الفرعية
  • نسخة من إعدادات DNS الحالية (سجّلها كاملة قبل ما تغيّر شي)
  • قائمة بالخدمات المرتبطة (APIs، خدمات بريد، بوابات دفع، خدمات خارجية)
  • قائمة بالـ Cron jobs الموجودة على السيرفر القديم
  • نسخة احتياطية كاملة قبل البدء (ملفات + قاعدة بيانات)
  • توثيق إصدارات البرامج على السيرفر القديم (PHP, MySQL, Node.js)

الخطوة 1: تجهيز السيرفر الجديد

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

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

# إنشاء مستخدم جديد
adduser deploy
usermod -aG sudo deploy

# تأمين SSH
# في /etc/ssh/sshd_config:
Port 2222
PermitRootLogin no
PasswordAuthentication no

systemctl restart sshd

تثبيت البرامج المطلوبة

# Nginx
apt install nginx -y

# PHP (مثال: PHP 8.3)
add-apt-repository ppa:ondrej/php -y
apt install php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip php8.3-gd php8.3-bcmath -y

# MySQL/MariaDB
apt install mariadb-server -y
mysql_secure_installation

# Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

# Node.js (لو مطلوب)
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install nodejs -y

# Certbot (SSL)
apt install certbot python3-certbot-nginx -y

إعداد جدار الحماية

ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

الخطوة 2: نقل الملفات

الطريقة 1: rsync (الأفضل)

# من السيرفر الجديد، اسحب الملفات من القديم
rsync -avz --progress -e "ssh -p 22" user@old-server:/var/www/mysite/ /var/www/mysite/

rsync يتميز بإنه ينقل الفرق فقط — لو انقطع الاتصال تقدر تكمل من حيث وقف.

الطريقة 2: ضغط ونقل

# على السيرفر القديم
cd /var/www
tar -czf mysite-backup.tar.gz mysite/

# نقل للسيرفر الجديد
scp -P 22 mysite-backup.tar.gz user@new-server:/var/www/

# على السيرفر الجديد
cd /var/www
tar -xzf mysite-backup.tar.gz

ضبط الصلاحيات

chown -R www-data:www-data /var/www/mysite
chmod -R 755 /var/www/mysite
chmod -R 775 /var/www/mysite/storage
chmod -R 775 /var/www/mysite/bootstrap/cache

الخطوة 3: نقل قاعدة البيانات

تصدير من السيرفر القديم

mysqldump -u root -p --single-transaction --routines --triggers database_name > database_backup.sql

الخيارات المهمة:

  • --single-transaction: يضمن تناسق البيانات بدون قفل الجداول
  • --routines: يشمل stored procedures
  • --triggers: يشمل triggers

استيراد في السيرفر الجديد

# إنشاء قاعدة البيانات والمستخدم
mysql -u root -p <<EOF
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON database_name.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EOF

# استيراد البيانات
mysql -u root -p database_name < database_backup.sql

التحقق

# عدد الجداول
mysql -u root -p -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='database_name';"

قارن العدد مع السيرفر القديم — لازم يتطابق.

الخطوة 4: إعداد التطبيق

تعديل ملف البيئة (.env)

# تحديث إعدادات قاعدة البيانات
DB_HOST=127.0.0.1
DB_DATABASE=database_name
DB_USERNAME=app_user
DB_PASSWORD=strong_password_here

# تحديث رابط الموقع
APP_URL=https://yourdomain.com

تشغيل أوامر Laravel

cd /var/www/mysite
composer install --no-dev --optimize-autoloader
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan migrate --force

إعداد Nginx

server {
 listen 80;
 server_name yourdomain.com www.yourdomain.com;
 root /var/www/mysite/public;

 index index.php;

 location / {
 try_files $uri $uri/ /index.php?$query_string;
 }

 location ~ \.php$ {
 fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
 include fastcgi_params;
 }

 location ~ /\.(?!well-known).* {
 deny all;
 }
}
ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

الخطوة 5: تحويل DNS

قبل التحويل

# خفّض TTL قبل 24 ساعة من التحويل
# غيّر TTL لكل السجلات إلى 300 ثانية (5 دقائق)

التحويل

# سجلات DNS الجديدة
A @ NEW_SERVER_IP
A www NEW_SERVER_IP

بعد التحويل

# تفعيل SSL
certbot --nginx -d yourdomain.com -d www.yourdomain.com

# التأكد من DNS
dig yourdomain.com +short

الخطوة 6: التحقق النهائي

الفحص الأمر/الطريقة
الموقع يعمل افتح الموقع في المتصفح
SSL شغّال تحقق من القفل الأخضر
قاعدة البيانات سجّل دخول وتحقق من البيانات
النماذج أرسل نموذج تجريبي
البريد أرسل بريد تجريبي
API اختبر كل endpoints
Cron jobs تحقق من crontab
الأداء قس زمن تحميل الصفحة

الخطوة 7: المراقبة بعد النقل

أول 48 ساعة حرجة. راقب:

  • سجلات الأخطاء: tail -f /var/log/nginx/error.log
  • أداء النظام: htop
  • مساحة التخزين: df -h
  • حركة الشبكة: iftop

نقل موقعك إلى كلاود

كلاود (cloud.net.sa) توفّر سيرفرات في الرياض بزمن استجابة زمن استجابة منخفض جداً. فريقك يتولّى النقل — وفريق كلاود يقدّم جلسات توجيه مجانية لمطوريك خلال العملية. سيرفر جاهز في 60 ثانية بأسعار تبدأ من أسعار تنافسية — الأسعار والباقات.


ابدأ الآن

تبي تجرب بنفسك؟ اختر باقة الاستضافة المناسبة أو صمم سيرفرك الخاص بالمواصفات اللي تبيها.

مشاركة