فارسی (Farsi)
€EUR

انتقال وب‌سایت از هاست اشتراکی به VPS لینوکس

3 min
سرور مجازی (VPS/VDS)

انتقال یک وب‌سایت PHP/MySQL به VPS Linux Infrawire منابع اختصاصی و کنترل کامل بر محیط اجرا به شما می‌دهد. کلید یک مهاجرت بی‌دردسر این است که همه‌چیز را روی سرور جدید آماده کنید، پیش از دست‌زدن به DNS آزمایش کنید و در پایان ترافیک را جابه‌جا کنید. این راهنما همین ترتیب را دنبال می‌کند.

📋 پیش‌نیازها

  • یک VPS لینوکس با Ubuntu 24.04 یا Debian 12 (آی‌پی و رمز root در بخش مشتریان شما موجود است)
  • دسترسی به هاست اشتراکی (مدیر فایل، FTP/SSH و ابزار پایگاه داده مانند phpMyAdmin)
  • دسترسی به ناحیه DNS دامنه شما
  • یک دامنه example.com و آی‌پی VPS شما که در ادامه VPS_IP نوشته می‌شود

1. سایت قدیمی را فهرست‌برداری کنید

نیازهای سایت را یادداشت کنید: نسخه PHP، افزونه‌ها، نام پایگاه داده، کارهای cron، قوانین .htaccess، گواهی SSL و به‌ویژه محل میزبانی ایمیل شما. در کنترل‌پنل قدیمی نسخه PHP را ببینید؛ اگر دسترسی SSH دارید:

Bash
php -v php -m | sort crontab -l

همین حالا TTL رکوردهای DNS را هم دست‌کم یک روز پیش از مهاجرت به ۳۰۰ ثانیه کاهش دهید تا تغییر نهایی سریع باشد.

2. فایل‌ها و پایگاه داده را خروجی بگیرید

اگر میزبان قدیمی SSH دارد، می‌توانید فایل‌ها را مستقیماً از VPS بکشید:

Bash
mkdir -p ~/migration && cd ~/migration rsync -avz OLDUSER@OLD_HOST:~/public_html/ ./site/

بدون SSH، یک آرشیو را با FTP یا مدیر فایل دانلود کنید و با scp آپلود کنید. پایگاه داده را با mysqldump (یا دکمه Export در phpMyAdmin) خروجی بگیرید:

Bash
mysqldump --single-transaction -u DBUSER -p DBNAME > db.sql

3. محیط را روی VPS آماده کنید

Bash
sudo apt update sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd sudo mysql_secure_installation php -v

Ubuntu 24.04 با PHP 8.3 و Debian 12 با PHP 8.2 عرضه می‌شود؛ سوکت /run/php/php8.3-fpm.sock یا /run/php/php8.2-fpm.sock است. سایت Nginx را در /etc/nginx/sites-available/example.com بسازید:

Nginx
1server { 2 listen 80; 3 listen [::]:80; 4 server_name example.com www.example.com; 5 root /var/www/example.com; 6 index index.php index.html; 7 8 location / { 9 try_files $uri $uri/ /index.php?$args; 10 } 11 12 location ~ \.php$ { 13 include snippets/fastcgi-php.conf; 14 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 15 } 16}
Bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx

Nginx فایل .htaccess را نادیده می‌گیرد: قوانین بازنویسی آن را به بلوک‌های location تبدیل کنید.

4. فایل‌ها و پایگاه داده را درون‌ریزی کنید

Bash
sudo mkdir -p /var/www/example.com sudo cp -a ~/migration/site/. /var/www/example.com/ sudo chown -R www-data:www-data /var/www/example.com sudo mysql -e "CREATE DATABASE dbname CHARACTER SET utf8mb4;" sudo mysql -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';" sudo mysql -e "GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; FLUSH PRIVILEGES;" sudo mysql dbname < ~/migration/db.sql

سپس پیکربندی برنامه (مثلاً wp-config.php) را با نام پایگاه داده، کاربر و رمز جدید ویرایش کنید. میزبان اکنون localhost است.

5. پیش از تغییر آزمایش کنید

روی رایانه خودتان با ویرایش فایل hosts دامنه را به VPS اشاره دهید (/etc/hosts در لینوکس و macOS و C:\Windows\System32\drivers\etc\hosts در ویندوز):

Bash
VPS_IP example.com www.example.com

یا بدون تغییر دادن چیزی آزمایش کنید:

Bash
curl -I --resolve example.com:80:VPS_IP http://example.com/

سایت را مرور کنید، وارد شوید، یک فرم ارسال کنید و لاگ‌ها را در /var/log/nginx/error.log ببینید. پس از آن خط hosts را حذف کنید.

6. DNS را تغییر دهید و ایمیل را مدیریت کنید

تغییرات محتوا روی سایت قدیمی را متوقف کنید، rsync و خروجی/درون‌ریزی پایگاه داده را برای دریافت آخرین تغییرات تکرار کنید، سپس رکورد A را به VPS_IP و رکورد AAAA را به آدرس IPv6 سرور تغییر دهید. وقتی DNS منتشر شد، گواهی را صادر کنید:

Bash
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com

ایمیل: فقط رکوردهای A/AAAA را تغییر دهید. اگر صندوق‌های پستی شما نزد ارائه‌دهنده قدیمی می‌مانند، رکوردهای MX، SPF و DKIM را دست‌نخورده بگذارید. هاست قدیمی را تنها پس از چند روز بدون مشکل لغو کنید.

🔧 عیب‌یابی

502 Bad Gateway
سوکت PHP در fastcgi_pass با نسخه نصب‌شده مطابقت ندارد. با ls /run/php/ و systemctl status php8.3-fpm بررسی کنید.

"Error establishing a database connection"
اطلاعات ورود یا میزبان در فایل پیکربندی اشتباه است. با mysql -u dbuser -p dbname آزمایش کنید.

403 یا صفحه خالی
مالک و مجوزها (chown -R www-data:www-data) را بررسی کنید و sudo tail -n 50 /var/log/nginx/error.log و لاگ‌های PHP را ببینید.

پس از تغییر هنوز سایت قدیمی نمایش داده می‌شود
کش‌های DNS هنوز فعال‌اند. با dig +short example.com بررسی کنید و منتظر پایان TTL بمانید.


✅ وب‌سایت شما اکنون روی VPS اختصاصی خودش اجرا می‌شود، بدون توقف منتقل شد و راه بازگشت امنی هم دارد.

با آخرین پیشنهادها، تخفیف‌ها و تبلیغات ویژه به‌روز بمانید.

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

ما از کوکی‌های تحلیلی برای بهبود تجربه شما در سایت خود استفاده می‌کنیم. هیچ داده‌ای به اشخاص ثالث فروخته نمی‌شود. اطلاعات بیشتر در سیاست حفظ حریم خصوصی ما.