HostCheck
Home Blog Resources About Contact
← All Posts 15 May 2025 Migration

The Ultimate Server Migration Checklist: A Step-by-Step Planning Guide

By Mark Bolton, creator of HostCheck Published 15 May 2025 Editorial policy

A server migration is only as good as the planning behind it. Whether you are moving a simple brochure website or a complex e-commerce platform, having a detailed checklist ensures nothing falls through the cracks. This guide provides a comprehensive, step-by-step migration checklist that covers everything from initial planning to post-migration monitoring.

Phase 1: Planning and Preparation

Inventory your current setup

Before making any changes, document your existing environment completely:

  • Web server software and version (Apache 2.4, Nginx 1.24, LiteSpeed, etc.)
  • PHP version and loaded extensions
  • Database server and version (MySQL 8.0, MariaDB 10.6, PostgreSQL 15, etc.)
  • Operating system and version
  • All domain names and subdomains hosted on the server
  • SSL certificates — who issued them, when they expire, and how they are managed
  • Email configuration — where email is hosted and what MX records are in place
  • Cron jobs and scheduled tasks
  • Custom server configurations (.htaccess rules, php.ini overrides, Nginx rewrites)
  • Third-party integrations — payment gateways, APIs, CDN configuration

Choose your migration window

Pick a time when your website traffic is lowest. For most businesses, this is late evening or early morning on a weekday. Avoid migrating on Fridays (in case issues arise over the weekend) or during peak business periods. Communicate the migration window to stakeholders so they know what to expect.

Set up the new server

Provision the new server and install all required software. Match the PHP version, database version, and web server software as closely as possible to the old server. Configure virtual hosts, PHP settings, and any custom server parameters. Do not proceed until the new server environment matches your requirements.

Phase 2: Pre-Migration Steps

Lower DNS TTL

At least 24 to 48 hours before migration, lower your domain's DNS TTL to 300 seconds (5 minutes). This ensures that when you eventually switch DNS, the change propagates quickly. Verify the new TTL is active by querying your DNS records with a tool like dig or nslookup.

Create a complete backup

Back up everything:

  • All website files, including hidden files like .htaccess
  • Complete database dump (use mysqldump with the --single-transaction flag for InnoDB tables)
  • Email data if stored on the server
  • SSL certificate files and private keys
  • Configuration files

Store the backup in a location separate from both the old and new servers. Verify the backup by checking file sizes and attempting a test restore.

Document current DNS records

Export or screenshot all DNS records for every domain being migrated. This includes A records, CNAME records, MX records, TXT records (SPF, DKIM, DMARC), NS records, and any SRV records. You will need this as a reference when configuring DNS after migration.

Phase 3: Migration Execution

Transfer files

Copy all website files from the old server to the new server. Use rsync for large transfers as it supports resume and only transfers changed files. Verify file counts and directory sizes match between old and new servers. Check that hidden files (dotfiles) were included in the transfer.

Transfer and import databases

Export databases from the old server and import them on the new server. Create the database, user, and permissions on the new server before importing. After import, verify table counts) and run a few queries to confirm data integrity.

Update configuration files

Update any configuration files that reference the old server:

  • Database connection settings (hostname, username, password, database name)
  • File paths that may differ between servers
  • Any hardcoded server IP addresses or hostnames
  • Email relay configuration if applicable

Set correct file permissions

Ensure file and directory permissions are set correctly on the new server. Directories should typically be 755, files should be 644, and sensitive configuration files should be 600 or 640. Check that the web server user has read access to all website files.

Phase 4: Testing

Preview with HostCheck

Use HostCheck to preview every website on the new server before touching DNS. Enter each domain and the new server's IP address to generate preview links. This is the most critical step in the entire migration — it is your last chance to catch problems before they affect visitors.

Test checklist

For each website, verify the following through the preview:

  • Homepage loads correctly with all images, styles, and scripts
  • Navigate to at least 10 internal pages — check for broken links and missing content
  • Test all forms (contact forms, search, login, registration)
  • Verify dynamic content loads from the database correctly
  • Check that uploaded media files (images, PDFs, videos) are accessible
  • Test the CMS admin panel if applicable (WordPress wp-admin, etc.)
  • Verify custom URL rewrite rules work (pretty permalinks, custom routes)
  • Check for PHP errors in the server error log
  • Test email sending if the server handles outgoing email
  • Verify cron jobs are set up and running

Phase 5: DNS Switch

Update DNS records

Once testing is complete and all issues are resolved, update your domain's A record to point to the new server IP. If you have multiple domains or subdomains, update them all. Do not change MX records unless you are also migrating email.

Set up SSL on the new server

If you have not already, generate SSL certificates on the new server. With Let's Encrypt and Certbot, you can generate certificates as soon as DNS points to the new server. Monitor your site for mixed content warnings after enabling HTTPS.

Phase 6: Post-Migration

Monitor closely

For the first 48 hours after migration, monitor your website intensively:

  • Check uptime monitoring alerts
  • Review server error logs every few hours
  • Monitor website analytics for unexpected traffic drops
  • Test the website from different devices and locations
  • Ask team members and trusted users to browse the site and report issues

Keep the old server running

Do not decommission the old server for at least one week after migration. If a critical issue is discovered, you can quickly revert DNS to the old server while you fix the problem. Only cancel the old hosting after you are confident everything is working correctly.

Increase TTL

After verifying the migration is successful and DNS has fully propagated, increase your TTL back to a normal value (3600 seconds or higher). This reduces DNS query load and improves resolution speed for repeat visitors.

Update external references

Update any external services that reference the old server IP — monitoring tools, CDN origin settings, firewall rules, API configurations, and deployment scripts.

Build a Rollback Plan Before You Switch

The strongest migration plans include an explicit rollback path. If a critical issue appears after the DNS switch, you need to know exactly how you will respond in the first fifteen minutes. That usually means keeping the old hosting active, keeping a copy of the previous DNS values, and identifying the threshold that would trigger a rollback rather than continued debugging on the live issue.

A rollback plan should answer three questions clearly: who decides whether to revert, how quickly the DNS change can be reversed, and what data or content might be affected during the window between the cutover and the rollback. Even when you never need to use it, the existence of a rollback plan leads to better migration decisions and less panic during launch.

Final Sign-Off Checks

Before you declare the migration complete, check the handful of things that most often get missed after technical testing is done:

  • Important redirects still point to the right destination and do not create loops
  • Forms send mail or data to the correct live endpoint
  • CDN, firewall, and caching layers now reference the new origin where needed
  • Search Console, analytics, uptime monitoring, and external services are still reporting normally
  • The old server remains available until you are confident no hidden dependency is left behind

Conclusion

A server migration checklist is not just a nice-to-have — it is essential for a smooth, zero-downtime migration. Print this checklist, adapt it to your specific needs, and work through it methodically. The key steps that most prevent problems are lowering TTL in advance, creating verified backups, and thoroughly testing with HostCheck before switching DNS. Follow this process, and your migrations will be predictable, professional, and stress-free.

About this article: This guide is published under the direction of Mark Bolton, creator of HostCheck, for developers, site owners, and migration teams working through real hosting changes. Content is reviewed for accuracy, updated when technical practices change, and corrected when readers report issues.

Learn more on our Editorial Policy page or browse the Resource Centre for grouped migration, DNS, security, and troubleshooting guides.

Try HostCheck Now - It's Free
HostCheck.co.uk
Privacy Policy Terms of Service Cookie Policy Owner About Resources Editorial Policy Contact

© 2026 HostCheck.co.uk. All rights reserved.