What is wordpress to vps migration and what does it involve?

TechSteps moves WordPress and WooCommerce sites from shared hosting or another server onto a VPS, with the WordPress-specific parts handled properly: the serialized data in the database, the second content sync for posts and orders placed mid-migration, cron, transactional mail, and a rollback path held open after DNS changes.

What this solves

The problem underneath the request.

WordPress migrations look simple and have a set of specific traps that generic migration advice misses. The database contains serialized data where a naive find-and-replace on the site URL corrupts the serialization and breaks widgets, theme options and plugin settings in ways that are not immediately obvious.

WordPress also has its own scheduled task system, which depends on traffic unless it has been switched to a real system cron. Moving a site without converting that leaves scheduled posts, backups and order processing running unpredictably or not at all.

Then there is the content that arrives during the migration. On a store, an order placed between the database copy and the DNS switch exists only on the old server. Without a second synchronization, it is gone.

Who this is for

  • WordPress sites that have outgrown shared hosting
  • WooCommerce stores needing more control over the server
  • Businesses whose host cannot support the PHP or database version they need
  • Sites suffering resource limits during traffic peaks
  • Anyone whose previous WordPress migration went wrong

When people call us

Situations that usually start this conversation.

If more than one of these sounds familiar, the underlying cause is often a single issue rather than several separate ones.

  • 01 The host imposes limits the site keeps hitting
  • 02 The site slows down under traffic and the host will not explain why
  • 03 You need object caching, a specific PHP version or extensions the host does not offer
  • 04 Support tickets take days and the answer is usually to upgrade the plan
  • 05 The store has grown past what shared hosting handles comfortably
  • 06 A migration plugin was tried and produced a broken site

Technical scope

What the work actually covers.

Not every engagement includes all of this. The scope is agreed in writing before we start, and anything excluded is named rather than left ambiguous.

WordPress specifics

  • Serialization-safe search and replace across the database
  • wp-config, salts and environment configuration rebuilt rather than copied blindly
  • Uploads directory with permissions and ownership preserved
  • Must-use plugins, drop-ins and custom code paths
  • Multisite handling where applicable

WooCommerce specifics

  • Orders, customers and subscriptions, including those created during migration
  • Payment gateway configuration and webhook endpoints
  • Scheduled actions and the action scheduler queue
  • Stock levels reconciled at cutover
  • Tax and shipping configuration verified against live examples

Server side

  • PHP version, extensions and worker configuration sized for the site
  • Database tuning for the actual table sizes
  • Object cache such as Redis where it helps
  • Nginx configuration with correct caching exclusions for cart, checkout and admin
  • TLS certificates with automated renewal

Cutover and verification

  • DNS TTL reduction ahead of the change
  • WP-Cron converted to system cron
  • Transactional mail tested end to end
  • Second sync of posts, comments, orders and uploads
  • Admin, checkout and search functionally tested on the destination

How we approach it

The order matters more than the checklist.

  1. 01

    Audit the site as it runs

    Plugin list, theme, PHP version, database size, upload directory size, cron behavior and mail path. This determines whether the destination needs to be sized differently from what a plan comparison would suggest.

  2. 02

    Build and size the destination

    PHP workers, database configuration and caching sized for the real site rather than a default. A VPS with the wrong worker configuration can be slower than the shared host it replaced.

  3. 03

    First copy and staging test

    Files and database copied to the destination, URL replacement done in a serialization-safe way, and the site tested through a hosts file entry so it is never publicly indexed on a temporary domain.

  4. 04

    Test the parts people skip

    Admin login, checkout with a real payment method in test mode, contact form email, scheduled publishing, and search. These are the areas where a migration silently fails.

  5. 05

    Lower TTL and schedule the cutover

    TTL reduced at least a day ahead. For stores, we agree whether a short read-only window is acceptable or whether we reconcile orders after the switch.

  6. 06

    Final sync and switch

    Everything created since the first copy is synchronized, then DNS is changed. The old server stays running and untouched.

  7. 07

    Verify, then harden

    Confirm real traffic is being served correctly, check mail deliverability from the new IP, then apply hardening, backups and monitoring.

What goes wrong

How this work fails when it is done badly.

These are the patterns we see most often when we are called in to fix someone else's work, or our own from earlier in our careers.

  • Find-and-replace that corrupts serialized data

    A plain SQL replace on the site URL breaks serialized strings, because the stored length no longer matches. Theme options and plugin settings quietly stop working, and the cause is not obvious.

  • WP-Cron left as is

    WordPress cron fires on page loads. On a low-traffic site scheduled tasks run late or not at all. It should be disabled and replaced with a real system cron entry during migration.

  • Orders lost in the gap

    Between the database copy and the DNS switch, orders continue on the old server. Without a second sync those orders do not exist on the new one, and the customer has paid.

  • Caching applied to cart and checkout

    A new server usually means new caching. Applied without exclusions, customers see stale carts or, far worse, someone else's session.

  • Mail breaks silently

    The new IP is not covered by SPF, so receipts and password resets go to spam. Nothing errors. You find out from a customer complaint.

What each side brings

What we need from you

  • WordPress administrator access and server or hosting access
  • DNS access, or a contact who can change records promptly
  • Payment gateway access if webhook endpoints need updating
  • A window for a short read-only period if the store is busy
  • Someone who can confirm checkout and email work from the customer side

What you get

  • The site running on the new VPS with correct configuration
  • System cron replacing WP-Cron
  • Caching rules documented, including exclusions
  • Mail sending verified with correct authentication records
  • Backups configured and a restore tested
  • Reconciliation report for anything created during the migration window
  • Rollback procedure valid through the agreed window

Where we stop

  • A VPS is only faster if it is configured for the site. We size and tune it, and we will tell you when the real constraint is the site rather than the host.
  • Some managed WordPress hosts restrict export access. Where that limits what we can move, we will identify it before the project starts.
  • We do not guarantee that every plugin behaves identically on a new PHP version. Version changes are tested on staging and, where possible, handled separately from the move.

Questions we actually get asked

Straight answers.

Can we just use a migration plugin?

For a small, simple site, often yes. They handle the common case competently. They tend to struggle with large databases, large upload directories, sites with must-use plugins or custom drop-ins, and anything needing a second synchronization. They also do not configure the destination server, which is usually where the performance benefit of moving actually comes from.

Will the site be faster on a VPS?

It can be substantially faster, and only if the VPS is configured properly. An unconfigured VPS with default PHP settings and no object cache can be slower than good shared hosting. The gain comes from tuning PHP workers, the database and caching for your specific site, which is the part we do.

What about our orders during the switch?

They are handled explicitly. Either we agree a short read-only window so no orders are placed during the final sync, or we synchronize orders after the cutover and reconcile them. Which approach fits depends on your order volume. What we do not do is hope the gap is empty.

Do we need to change anything in WordPress itself?

Usually a few things. WP-Cron should be disabled in favour of system cron. Caching plugins often need reconfiguring for the new server-level cache. If the site was using a host-specific plugin, that comes out. We list these before the migration so nothing is a surprise.

Who manages the VPS afterwards?

Someone has to. A VPS gives you control and hands you responsibility for patching, monitoring and backups. We can manage it under an ongoing arrangement, or hand it over documented if you have someone. What we will flag is when nobody is going to own it, because an unmaintained VPS is worse than the shared host you left.

Migrate My Site.

Describe the system and what is going wrong with it. A short technical conversation is usually enough for us to tell you whether this is the right work and roughly what it involves.