بیشتر قطعی هایی که هنگام انتقال سایت پیش می آید، به دلیل کمبود دانش فنی نیست؛ به دلیل ترتیب اشتباه مراحل است. اگر اول DNS را تغییر دهید و بعد سراغ انتقال فایل ها بروید، مدتی کاربران به سروری هدایت میشوند که هنوز آماده نیست. با یک ترتیب ساده میتوان این مشکل را کاملا حذف کرد.
چرا بیشتر انتقال ها با قطعی همراه میشود
تغییر رکورد DNS بلافاصله در همه جای دنیا اعمال نمیشود. سرورهای DNS پاسخ قبلی را به مدت مشخصی که TTL نام دارد در کش نگه میدارند. اگر این مقدار روی چند ساعت تنظیم باشد، تا ساعت ها بخشی از کاربران به سرور قدیمی و بخشی به سرور جدید میروند.
این دوره همزمانی اجتناب ناپذیر است، اما میتوان آن را از چند ساعت به چند دقیقه کاهش داد و مهمتر از آن، کاری کرد که هر دو سرور در آن بازه درست کار کنند.
چند روز قبل: کاهش TTL
این تنها کاری است که باید از قبل انجام دهید و بیشترین تاثیر را دارد. مقدار TTL رکوردهای دامنه را به کمترین مقدار ممکن، معمولا سیصد ثانیه، کاهش دهید.
این تغییر باید حداقل به اندازه TTL قبلی زودتر انجام شود. یعنی اگر TTL فعلی شما چهار ساعت است، حداقل چهار ساعت قبل از انتقال آن را کم کنید تا کش قبلی منقضی شده باشد.
dig +nocmd example.com A +noall +answerانتقال فایل ها و پایگاه داده
برای فایل ها از rsync استفاده کنید نه از دانلود و آپلود دستی. مزیت اصلی این است که میتوانید آن را چند بار اجرا کنید و در هر بار فقط تغییرات منتقل میشود؛ یعنی انتقال نهایی بسیار سریع خواهد بود.
برای پایگاه داده حتما از گزینه ای استفاده کنید که خروجی سازگار بگیرد، وگرنه ممکن است در حین گرفتن خروجی، داده ها تغییر کنند و فایل نهایی ناسازگار باشد.
rsync -avz --progress /var/www/ user@new-server:/var/www/mysqldump -u root -p --single-transaction --routines --triggers appdb > appdb.sqlmysql -u root -p appdb < appdb.sqlتست کامل روی سرور جدید بدون تغییر DNS
این مرحله همان چیزی است که اکثرا از آن صرف نظر میکنند و بعد با مشکل روبرو میشوند. قبل از هر تغییری در DNS، سایت را روی سرور جدید کامل تست کنید. برای این کار فایل hosts سیستم خودتان را ویرایش کنید تا فقط برای شما، دامنه به سرور جدید اشاره کند.
حالا سایت را با دامنه واقعی باز کنید و همه چیز را بررسی کنید: ورود کاربر، فرم ها، پرداخت، ارسال ایمیل و مسیر فایل های آپلود شده.
sudo nano /etc/hosts
203.0.113.20 example.com www.example.comانتقال نهایی و تغییر DNS
وقتی مطمئن شدید سرور جدید درست کار میکند، یک بار دیگر rsync را اجرا کنید تا فایل های تغییر یافته منتقل شوند و خروجی تازه ای از پایگاه داده بگیرید. بلافاصله بعد از آن رکورد DNS را تغییر دهید.
سرور قدیمی را حداقل چند روز روشن نگه دارید. تا زمانی که کش های قبلی منقضی نشده اند، بخشی از کاربران همچنان به آن مراجعه میکنند و خاموش کردن زودهنگام آن یعنی قطعی برای همان کاربران.
- قبل از انتقال نهایی، در صورت داشتن سفارش یا داده کاربر، حالت تعمیر را فعال کنید.
- بعد از تغییر DNS، سرور قدیمی را دست کم چهل و هشت ساعت نگه دارید.
- وقتی مطمئن شدید ترافیک به سرور قدیمی نمیرسد، TTL را به مقدار عادی برگردانید.
بعد از انتقال چه چیزهایی را بررسی کنید
چند مورد هستند که معمولا بعد از انتقال فراموش میشوند و چند روز بعد به شکل مشکل ظاهر میشوند. بهتر است همان روز اول آنها را کنترل کنید.
- گواهی SSL روی سرور جدید نصب و تمدید خودکار آن فعال باشد.
- کرون جاب ها روی سرور جدید تعریف شده باشند.
- برنامه پشتیبان گیری روی سرور جدید فعال باشد.
- ارسال ایمیل سایت درست کار کند و در هرزنامه نیفتد.
- لاگ خطاها را چند روز اول با دقت بیشتری بررسی کنید.
پرسش های پرتکرار
انتقال سایت به سرور جدید چقدر طول میکشد؟
انتقال فایل ها و پایگاه داده معمولا بین چند دقیقه تا چند ساعت است، اما انتشار کامل تغییر DNS بسته به مقدار TTL میتواند تا چند ساعت طول بکشد. با کم کردن TTL چند روز قبل، این زمان به چند دقیقه کاهش می یابد.
چرا بعد از تغییر DNS بعضی کاربران هنوز سایت قدیمی را میبینند؟
چون رکورد قبلی هنوز در کش سرورهای DNS و مرورگرها باقی مانده است. تا پایان مدت TTL قبلی، بخشی از کاربران به سرور قدیمی هدایت میشوند. به همین دلیل نباید سرور قدیمی را بلافاصله خاموش کنید.
آیا در زمان انتقال باید سایت را ببندم؟
برای سایت های محتوایی معمولا لازم نیست. اما اگر سایت شما سفارش یا داده کاربر ثبت میکند، بهتر است در بازه کوتاه انتقال نهایی پایگاه داده، حالت تعمیر را فعال کنید تا داده ای از دست نرود.
به راهنمای بیشتری نیاز دارید؟
تیم پشتیبانی هایوهاست برای انتخاب و مدیریت سرویس کنار شماست.