WORDPRESS
July 1, 2026

How to Move WordPress from Shared Hosting to a VPS

8 min read
Author
CloudStick Team
Server Infrastructure
Share this article
How to Move WordPress from Shared Hosting to a VPS
CloudStick
Migration Guide

Why Shared Hosting Runs Out

Shared hosting caps you on CPU seconds, concurrent processes, and inodes long before you hit an obvious "disk full" wall — the usual symptom is intermittent 503 errors under moderate traffic, or a host quietly suspending your account for exceeding resource limits nobody told you about. A VPS gives you dedicated CPU and RAM you control directly, with no neighbor's traffic spike able to slow your site down.

The trade-off is that shared hosting hides server administration behind cPanel, and a VPS hands it back to you. That's the real reason this move intimidates people — not the migration itself, which is mechanically simple, but the ongoing responsibility for PHP versions, SSL renewal, and backups afterward. A managed panel closes most of that gap.

What Changes on a VPS

On shared hosting, cPanel or Plesk handles PHP-FPM pools, SSL renewal, cron, and email for you. On a bare VPS, none of that exists until you install and configure it yourself — Nginx or Apache, PHP-FPM, MariaDB, Let's Encrypt, and a mail transfer agent are all separate services you now own. CloudStick's WordPress manager replicates the parts of cPanel that matter for WordPress — one-click install, free SSL, PHP version switching, and automated backups — without installing a full legacy control panel on top of the VPS.

Budget for this difference before you migrate: either you're comfortable maintaining Nginx configs and running apt upgrade on a schedule, or you want a dashboard doing it for you. Both are valid — just decide before migration day, not after something breaks.

Export from Shared Hosting

Most shared hosts don't give SSH access, so export through cPanel's File Manager (compress public_html to a zip) and phpMyAdmin (export the database as SQL). If your host does offer SSH, the same tar/mysqldump commands from a full VPS migration apply directly:

# If SSH is available on the shared host
tar -czf site-files.tar.gz public_html/
mysqldump -u dbuser -p dbname > site-database.sql
# Download both to your local machine over SFTP, then upload to the VPS

Note your PHP version and any custom php.ini overrides from cPanel's "Select PHP Version" screen before you leave — the VPS won't inherit them automatically.

Import Onto the VPS

Create the website in your VPS control panel first so the document root, system user, and database already exist, then extract your archive into that document root and import the SQL dump:

# On the VPS, inside the site document root
tar -xzf site-files.tar.gz --strip-components=1
mysql -u dbuser -p dbname < site-database.sql
# Update wp-config.php with the new database credentials
define('DB_HOST', 'localhost');
define('DB_USER', 'new_db_user');
define('DB_PASSWORD', 'new_db_password');
TIP

CloudStick's WordPress manager can create the site, database, and system user together in one step, and its file manager lets you upload the archive directly through the browser if you'd rather skip a separate SFTP client.

DNS and Email Handoff

Test the site under its real domain using a local hosts-file override before touching DNS — the same technique used for any zero-downtime migration. Once verified, update the A record to point at the VPS. If your shared host also handled email (most do, via cPanel), that mail stops working the moment you move DNS unless you've separately configured mail on the VPS or moved to a third-party provider like Google Workspace first.

Plan the email cutover as its own task, separate from the website: set up MX, SPF, DKIM, and DMARC records on the new provider first, confirm mail flows correctly, and only then update the records that point your domain's website traffic at the VPS.

Leave a comment
Full Name
Email Address
Message
Contents