چرا انتقال سایت بدون قطعی اهمیت دارد؟
انتقال سایت از یک هاست به هاست دیگر یکی از حساسترین عملیاتهای مدیریت وبسایت است. اگر این کار بهدرستی انجام نشود، کاربران با خطای ۵۰۳ یا صفحه سفید مواجه میشوند و موتورهای جستجو ممکن است افت رتبه را تجربه کنند. در این مقاله، یک روش عملی و تستشده برای انتقال سایت بدون حتی یک ثانیه قطعی ارائه میدهیم. این روش برای سایتهای وردپرسی، لاراولی و حتی سایتهای استاتیک قابل استفاده است.
مرحله اول: آمادهسازی هاست مقصد
پیش از هر کاری، باید هاست جدید را آماده کنید. فرض کنید هاست قدیمی شما روی old.server.net و هاست جدید روی new.server.net قرار دارد.
۱. ایجاد دیتابیس و کاربر
در هاست جدید، یک دیتابیس خالی ایجاد کنید. نام دیتابیس و کاربر را یادداشت کنید. مثلاً:
Database: newdb_user
User: newdb_user_pass
Host: localhost
نکته مهم: رمز عبور دیتابیس را در هاست جدید با رمز عبور هاست قدیمی یکسان نگذارید. بعداً در فایل کانفیگ سایت آن را تغییر میدهیم.
۲. ایجاد دایرکتوری اصلی
در هاست جدید، دایرکتوری public_html یا معادل آن را خالی کنید. اگر از cPanel استفاده میکنید، از گزینه «File Manager» استفاده کنید.
مرحله دوم: کپی فایلها و دیتابیس
این مرحله را میتوانید در هر ساعتی از شبانهروز انجام دهید، چون هنوز ترافیک به هاست قدیمی هدایت میشود.
۱. انتقال فایلها با rsync
بهترین ابزار برای کپی فایلها rsync است. اگر به هر دو هاست دسترسی SSH دارید، از دستور زیر استفاده کنید:
rsync -avz --progress user@old.server.net:/home/user/public_html/ /home/user2/public_html/
اگر فقط به هاست قدیمی دسترسی SSH دارید، فایلها را ابتدا به سیستم محلی و سپس به هاست جدید منتقل کنید:
rsync -avz user@old.server.net:/home/user/public_html/ ./backup-site/
rsync -avz ./backup-site/ user2@new.server.net:/home/user2/public_html/
اشتباه رایج: استفاده از FTP برای انتقال فایلهای حجیم. FTP در فایلهای زیاد کند است و ممکن است中途 قطع شود. همیشه از rsync یا scp استفاده کنید.
۲. انتقال دیتابیس
ابتدا از دیتابیس قدیمی یک dump بگیرید:
mysqldump -u olduser -p olddb > olddb.sql
سپس فایل SQL را به هاست جدید منتقل کرده و import کنید:
mysql -u newuser -p newdb < olddb.sql
اگر دیتابیس بزرگ است (بیش از ۵۰ مگابایت)، از bigdump یا mysql -e استفاده کنید.
۳. ویرایش فایل کانفیگ
در هاست جدید، فایل کانفیگ سایت را ویرایش کنید. برای وردپرس، فایل wp-config.php را باز کرده و مقادیر زیر را تغییر دهید:
define('DB_NAME', 'newdb_user');
define('DB_USER', 'newdb_user');
define('DB_PASSWORD', 'new_password');
define('DB_HOST', 'localhost');
برای لاراول، فایل .env را ویرایش کنید.
مرحله سوم: تست سایت در هاست جدید بدون قطعی
قبل از تغییر DNS، باید مطمئن شوید سایت در هاست جدید بهدرستی کار میکند. این کار را با فایل hosts انجام میدهیم.
۱. تنظیم فایل hosts در سیستم خود
فایل hosts را در سیستم خود باز کنید:
- ویندوز:
C:\Windows\System32\drivers\etc\hosts - لینوکس/مک:
/etc/hosts
یک خط به انتهای فایل اضافه کنید:
192.168.1.100 example.com www.example.com
آدرس IP را با IP هاست جدید جایگزین کنید. حالا اگر در مرورگر خود example.com را باز کنید، به هاست جدید هدایت میشوید.
۲. تست کامل سایت
در این مرحله، تمام بخشهای سایت را تست کنید:
- صفحات اصلی و داخلی
- فرمهای تماس و ثبتنام
- لاگین کاربران
- تصاویر و فایلهای CSS/JS
- SSL (اگر گواهی دارید، باید در هاست جدید نصب شود)
تست SSL: اگر از SSL استفاده میکنید، در هاست جدید گواهی را نصب کنید. میتوانید از Let's Encrypt استفاده کنید:
certbot --apache -d example.com -d www.example.com
اگر SSL کار نکند، مرورگر خطای امنیتی نشان میدهد.
مرحله چهارم: کاهش TTL و سوییچ DNS
حالا که مطمئن شدید سایت در هاست جدید کار میکند، نوبت به تغییر DNS میرسد.
۱. کاهش TTL (Time To Live)
TTL مشخص میکند که رکوردهای DNS چقدر در cache باقی بمانند. مقدار پیشفرض معمولاً ۱۴۴۰۰ ثانیه (۴ ساعت) است. این مقدار را به ۳۰۰ ثانیه (۵ دقیقه) کاهش دهید. این کار را حداقل ۲۴ ساعت قبل از سوییچ انجام دهید.
در پنل DNS خود، رکوردهای A و CNAME را پیدا کرده و TTL را تغییر دهید:
example.com. 300 IN A 192.168.1.100
www.example.com. 300 IN CNAME example.com.
اشتباه رایج: فراموش کردن کاهش TTL برای رکوردهای MX (ایمیل). اگر ایمیل دارید، TTL رکوردهای MX را هم کاهش دهید.
۲. تغییر رکوردهای DNS
پس از ۲۴ ساعت (یا مدت زمان TTL قدیمی)، رکورد A را به IP هاست جدید تغییر دهید:
example.com. 300 IN A IP_NEW_HOST
اگر از CDN استفاده میکنید (مثل Cloudflare)، فقط IP origin را تغییر دهید.
۳. صبر برای propagation
تغییرات DNS معمولاً بین ۵ دقیقه تا ۲۴ ساعت در سراسر جهان منتشر میشود. در این مدت، برخی کاربران به هاست قدیمی و برخی به هاست جدید هدایت میشوند. این طبیعی است و قطعی محسوب نمیشود.
مرحله پنجم: بازگشت اضطراری (Rollback)
اگر بعد از سوییچ DNS مشکلی پیش آمد (مثل خطای ۵۰۲ یا کندی شدید)، باید سریعاً به هاست قدیمی برگردید.
۱. برگرداندن DNS
رکورد A را به IP هاست قدیمی تغییر دهید. TTL را هم به مقدار قبلی برگردانید.
۲. بررسی لاگها
لاگهای خطای هاست جدید را بررسی کنید:
tail -f /var/log/apache2/error.log
علت مشکل را پیدا کنید (مثلاً پلاگین ناسازگار یا تنظیمات PHP).
۳. رفع مشکل و تکرار مراحل
پس از رفع مشکل، دوباره از مرحله سوم (تست با فایل hosts) شروع کنید.
نکات تکمیلی و عیبیابی
۱. انتقال ایمیلها
اگر از سرویس ایمیل هاست استفاده میکنید، باید ایمیلها را هم منتقل کنید. از ابزار imapsync استفاده کنید:
imapsync --host1 old.server.net --user1 info@example.com --password1 oldpass \
--host2 new.server.net --user2 info@example.com --password2 newpass
۲. مشکل مسیرهای نسبی
برخی سایتها از مسیرهای مطلق استفاده میکنند. در هاست جدید، مسیرها را بررسی کنید. مثلاً در وردپرس، از پلاگین «Better Search Replace» استفاده کنید.
۳. کش مرورگر و CDN
پس از سوییچ، کش مرورگر خود و CDN را پاک کنید. در Cloudflare، از گزینه «Purge Cache» استفاده کنید.
۴. زمانبندی مناسب
بهترین زمان برای سوییچ DNS، ساعات کمترافیک (مثلاً ۲ بامداد) است. این کار باعث میشود تعداد کاربرانی که در حین propagation به مشکل برمیخورند، حداقل باشد.
جمعبندی
انتقال سایت بدون قطعی نیازمند برنامهریزی دقیق و رعایت ترتیب درست مراحل است. با استفاده از روش ارائهشده در این مقاله (کپی فایلها، تست با فایل hosts، کاهش TTL، سوییچ DNS و آمادگی برای بازگشت اضطراری)، میتوانید انتقال سایت را با کمترین ریسک انجام دهید. اگر به دنبال یک هاست پایدار برای میزبانی سایت خود هستید، سرورنت (ServerNet) گزینههای مناسبی را ارائه میدهد. اما مهمتر از انتخاب هاست، اجرای صحیح فرآیند انتقال است.
در پایان، همیشه یک نسخه پشتیبان کامل از سایت و دیتابیس قبل از شروع کار تهیه کنید. این کار سادهترین راه برای جلوگیری از فاجعه است.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!