Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
The safest way to move a WordPress site from Bluehost to a Linux VPS is to build and test the VPS before changing DNS. Export a restorable copy of the files and database, recreate the site on the VPS, preview it privately, then switch the domain’s DNS records while keeping Bluehost available for rollback.
This sequence applies whether you manage the VPS yourself or use migration assistance. It covers WordPress files, MySQL or MariaDB, PHP, web-server configuration, HTTPS, email, scheduled tasks, integrations and DNS—not just copying a folder.
Free tools Windows power users keep installed
One-click scans. No signup required.
What the migration actually involves
A WordPress site has more parts than the files visible in its document root. A complete move normally includes:
- The WordPress core files and
wp-content, including themes, plugins, media uploads and any custom code. - The database containing posts, pages, settings, users, comments, orders and form submissions.
- The domain’s DNS records and, if applicable, mail records.
- PHP, the web server, database server, rewrite rules and scheduled jobs on the destination.
- TLS certificates, redirects, webhooks, payment callbacks, external storage and monitoring.
Moving only the files produces a site with missing content or settings. Moving only the database produces a site with missing themes, plugins or uploads. Treat the operation as a controlled cutover with a tested rollback, not as a single upload.
#1 Best Overall
- Slim durable design to help take your important files with you
- Vast capacities up to 6TB[1] to store your photos, videos, music, important documents and more
- Back up smarter with included device management software[2] with defense against ransomware
- Help secure your important files with password protection and hardware encryption
- 3-year limited warranty
Before you touch DNS: inventory the old site
Record the details below while the Bluehost site is still working. This inventory becomes the acceptance checklist for the VPS.
- Primary domain, www preference, subdomains and the current Bluehost document root.
- PHP and MySQL or MariaDB versions, WordPress version and server-side extensions required by plugins.
- Active themes and plugins, especially caching, security, image, membership, ecommerce and form plugins.
- DNS records, nameservers, mail providers, SPF, DKIM and DMARC records, and any subdomain used for email or APIs.
- Cron jobs, scheduled publishing, backups, feeds, analytics, webhooks, payment callbacks and external object storage.
- Forms, checkout flows, administrator accounts, redirects, robots settings and custom
.htaccessrules. - Any IP allowlists or firewall rules used by payment, CRM, email or monitoring services.
Note which parts are hosted by Bluehost and which are external. Changing nameservers can move every DNS record, while changing only an A record leaves nameservers and other records with the existing DNS provider. That distinction matters for mail and subdomains.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Freeze changes for the final copy
Choose a maintenance window or short content freeze for the final export. New comments, orders, registrations and form submissions created after the database dump will not exist on the VPS unless you replicate them manually. For an active store or membership site, announce the freeze and temporarily disable writes during the final synchronization.
Create and verify a restorable backup
Do this before provisioning changes, plugin updates or DNS edits. WordPress guidance calls for backing up the WordPress directory, images, plugins, other files and the database before a move.
Download the complete file tree
Use SFTP, the hosting file manager or SSH to download the entire WordPress directory. Include wp-content, uploads, themes, plugins, wp-config.php, .htaccess and any custom files outside the standard folders. Preserve paths and filenames, including uppercase and hidden files.
If SSH access is enabled, an archive can preserve permissions and hidden files:
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →tar -czf wordpress-files-YYYY-MM-DD.tar.gz -C /path/to/site .
Download the archive and, when practical, also retain an uncompressed copy for selective restoration. SSH availability and paths differ between Bluehost accounts, so use SFTP or the file manager when shell access is unavailable.
Rank #2
- Slim durable design to help take your important files with you
- Vast capacities up to 6TB[1] to store your photos, videos, music, important documents and more
- Back up smarter with included device management software[2] with defense against ransomware
- Help secure your important files with password protection and hardware encryption
- 3-year limited warranty
Export the database
In Bluehost’s documented manual workflow, phpMyAdmin is used to export the WordPress database. Select the complete database, use SQL format, and include tables, structure and data. Save the resulting file with the export date.
With command-line access, an equivalent export is:
mysqldump --single-transaction --routines --triggers -u DB_USER -p DB_NAME > wordpress-db-YYYY-MM-DD.sql
The exact options depend on the database server and account privileges. If the command fails, use phpMyAdmin and verify that the export contains the WordPress tables.
Verify that recovery is possible
- Open the archive and confirm that uploads, themes, plugins and configuration files are present.
- Inspect the SQL file for WordPress tables such as
wp_posts,wp_optionsandwp_users(the prefix may differ). - Keep one copy on your computer and a second copy on separate or off-site storage. An external drive is useful for the local copy, but it should not be the only backup.
- Record the database name, table prefix and any encryption keys or environment variables needed by the site.
Do not delete or overwrite the Bluehost site after making the backup. It is your rollback endpoint until the VPS has passed testing and DNS propagation.
Provision and secure the Linux VPS
Build the destination before transferring production traffic. A typical WordPress VPS uses a Linux distribution, a web server such as Apache or Nginx, PHP and MySQL or MariaDB. Bluehost’s VPS guidance describes this family of components as the LAMP stack, although the exact distribution and web server can differ.
Apply baseline security
- Choose a supported Linux distribution and apply all available security updates.
- Create a non-root administrative user and grant it only the administrative privileges it needs.
- Install an SSH key for administration. Disable password SSH login and direct root login after confirming key-based access works.
- Enable a firewall and allow only the ports you need, normally SSH, HTTP and HTTPS. Restrict SSH to trusted networks when possible.
- Set the server’s time zone and enable time synchronization so cron, logs and certificates use reliable timestamps.
Keep a tested recovery console or provider rescue method available. A firewall or SSH mistake can lock you out before WordPress is installed.
Install the web stack and match requirements
Install the web server, PHP and required PHP extensions, plus MySQL or MariaDB. Match the old site’s PHP and database behavior first; upgrade after the migration is stable. Plugin documentation may require extensions such as image processing, multibyte strings, XML, cURL or ZIP.
Create a virtual host or server block for the domain and set its document root to the directory that will contain WordPress. Configure the web server to pass PHP requests to the installed PHP handler and enable the rewrite rules WordPress needs for pretty permalinks.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteRank #3
- 【Plug-and-Play Expandability】 With no software to install, just plug it in and the drive is ready to use in Windows(For Mac,first format the drive and select the ExFat format.
- 【Fast Data Transfers 】The external hard drives with the USB 3.0 cable to provide super fast transfer speed. The theoretical read speed is as high as 110MB/s-133MB/s, and the write speed is as high as 103MB/s.
- 【High capacity in a small enclosure 】The small, lightweight design offers up to 500GB capacity, offering ample space for storing large files, multimedia content, and backups with ease. Weighing only 0.35 Lbs, it's easy to carry "
- 【Wide Compatibility】Supports PS4 5/xbox one/Windows/Linux/Mac and other operating systems, ensuring seamless integration with game consoles,various laptops and desktops .
- Important Notes for PS/Xbox Gaming Devices: You can play last-gen games (PS4 / Xbox One) directly from an external hard drive. However, to play current-gen games (PS5 / Xbox Series X|S), you must copy them to the console's internal SSD first. The external drive is great for keeping your library on hand, but it can't run the new games.
Create a dedicated database and user
Create an empty database and a least-privilege user for this site. Record the database name, username, password and host exactly as the VPS provider requires. The host is often a local value, but do not assume it; use the value that matches your database configuration.
Do not reuse the VPS root password for WordPress. Keep the database credentials out of public downloads and restrict database access to the application server unless remote administration is explicitly required.
Transfer the files and database
Upload WordPress securely
Use SFTP, SSH or another encrypted transfer method. Upload the complete WordPress tree into the VPS document root, preserving the wp-content contents and hidden files. If you uploaded an archive, extract it outside the web root first, inspect the directory layout, and then move the contents into the configured document root.
Set ownership so the web-server account can read the site and WordPress can write only to directories that need it, usually uploads and selected cache directories. Avoid making the entire installation world-writable. The correct account and group vary by Linux distribution and web server.
Import the SQL dump
Import the export into the new, empty database:
mysql -u NEW_DB_USER -p NEW_DB_NAME < wordpress-db-YYYY-MM-DD.sql
For large databases, command-line import is less likely to hit browser upload limits than phpMyAdmin. If you use phpMyAdmin, select the destination database, choose Import, upload the SQL file and wait for the completion message. Check the table list afterward.
Update wp-config.php
Edit the copied configuration file and replace the old database values with the VPS database name, user, password and host:
define( 'DB_NAME', 'NEW_DB_NAME' );
define( 'DB_USER', 'NEW_DB_USER' );
define( 'DB_PASSWORD', 'NEW_DB_PASSWORD' );
define( 'DB_HOST', 'NEW_DB_HOST' );
Retain the existing table prefix, authentication keys and salts unless you have a deliberate security reason to rotate them. A changed table prefix makes WordPress look for tables that do not exist.
Rank #4
- Slim durable design to help take your important files with you
- Back up smarter with included device management software[2] with defense against ransomware
- Help secure your important files with password protection and hardware encryption
- 3-year limited warranty
Handle domain changes safely
If the domain remains the same, do not run a search-and-replace merely because the server changed. WordPress stores URLs in serialized data, and a naive text replacement can corrupt serialized lengths.
If the domain changes, use a serialization-aware migration tool or a WP-CLI command designed for serialized values. Take another database backup first, replace the old URL only in the intended tables, and then inspect media, menus, widgets, redirects and plugin settings. Update external services that use the old callback URL.
Preview the VPS privately before launch
Do not point public DNS at an untested installation. Preview the VPS through a temporary hostname, a staging domain or a local hosts-file override. A hosts-file entry maps the real domain to the VPS IP only on your computer, allowing the site to be tested while visitors still reach Bluehost.
For a local override, add an entry in the operating system’s hosts file in this form:
VPS_IP_ADDRESS example.com
VPS_IP_ADDRESS www.example.com
Use your actual domain and VPS address, test in a private browser window, and remove the entries after testing. DNS caching in browsers, operating systems and networks can otherwise make it unclear which server you are viewing.
Run an acceptance checklist
- Open the homepage, representative posts, pages, categories, archives and search results.
- Load images from old and newly uploaded media, including responsive image sizes.
- Check menus, widgets, navigation, redirects, pagination and 404 handling.
- Log in as an administrator and test a non-administrator account if the site uses roles.
- Submit every important form and verify email delivery, spam handling and stored entries.
- For ecommerce or membership sites, test cart, checkout, payment callbacks, account pages, refunds and webhooks in the appropriate test mode.
- Verify plugin features, scheduled jobs, feeds, analytics, caching and external storage.
- Test responsive layouts on mobile-sized screens and check browser console errors.
- Inspect PHP, web-server and WordPress logs for fatal errors, permission failures and database warnings.
- Open Settings → Permalinks and select Save Changes once the site loads. This regenerates rewrite rules; it does not require changing the permalink structure.
- Check robots directives, canonical URLs, XML sitemaps and noindex settings so the preview does not accidentally expose or block production content.
Configure HTTPS before cutover
Issue or stage a TLS certificate for the domain on the VPS and test both HTTP and HTTPS. Confirm that the canonical scheme is correct, HTTP redirects to HTTPS as intended, and there are no mixed-content warnings. Test the certificate for the apex domain and any www or subdomains that will serve WordPress.
If certificate issuance requires public DNS, complete the necessary validation before changing traffic, or use a temporary certificate only for private testing and replace it before launch. Do not treat a browser warning as acceptable for a production login or checkout.
Best Value
- World’s First 6TB 2.5” Portable Hard Drive
- Slim durable design to help take your important files with you
- Vast capacities up to 6TB[1] to store your photos, videos, music, important documents and more
- Back up smarter with included device management software[2] with defense against ransomware
- Help secure your important files with password protection and hardware encryption
Prepare DNS and perform the cutover
Lower the TTL in advance
When the DNS provider permits it, reduce the domain’s A-record TTL to 300–600 seconds approximately 24–48 hours before the move. This helps resolvers refresh the address sooner, but it does not guarantee an exact propagation time because resolvers and networks can cache records differently.
Keep a copy of the complete DNS zone. Confirm that lowering the TTL did not remove mail, verification, TXT, CNAME or subdomain records.
Choose the correct DNS change
- Change the A record, and AAAA record if IPv6 is configured, when the existing DNS provider should remain authoritative.
- Change nameservers only when the VPS or a new DNS provider will host the entire zone. Recreate every required record before delegating the domain.
- Leave mail records pointed at the existing mail service unless email is intentionally moving as part of this project.
Switch traffic and monitor both endpoints
- Confirm the VPS acceptance checklist is complete and the final content freeze is active.
- Take a final database export and, if new files were created, a final file copy.
- Update the A/AAAA record or nameservers.
- Watch the VPS web-server logs, PHP logs, uptime checks, certificate status, form delivery and mail flow from more than one network.
- Compare the live site with the acceptance checklist, paying special attention to orders, comments and submissions created immediately before the freeze.
Keep Bluehost active during DNS propagation and verification. Some visitors may continue reaching the old server while others reach the VPS. Do not make independent content changes on both servers; if a rollback is needed, restore the DNS record and resume writes on one endpoint only.
Know when rollback is appropriate
Rollback is warranted when critical pages fail, checkout or forms lose data, HTTPS is invalid, mail is disrupted, or the VPS cannot sustain normal requests. Restore the previous DNS values, keep the Bluehost copy unchanged, identify the failure from logs, and repeat the private test before attempting another cutover. A rollback is much safer when the old site has not been modified after the final backup.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Finalize the VPS after acceptance
- Take a fresh post-cutover backup of files and the database.
- Configure automated backups with an off-site destination and periodically test restoration.
- Enable unattended security updates or a documented patch schedule.
- Set up uptime, disk, memory, certificate-expiry and error-rate monitoring.
- Verify system cron or an alternative WordPress scheduling method, especially for publishing, renewals and email queues.
- Confirm outbound email authentication and delivery from the VPS or retained mail provider.
- Review file ownership, SSH keys, firewall rules, database privileges and unused services.
- Document VPS access, DNS ownership, backup locations, restore steps and emergency contacts.
Decommission Bluehost only after the rollback window has passed and you have confirmed billing, domain registration, DNS, email and any other dependencies. Retain the final backup independently of the VPS.
Recommended Free Tools
Manual migration, guided tools or professional help?
The right method depends on how much control and operational responsibility you want. A tool can move common WordPress installations quickly, but it does not remove the need to verify DNS, mail, TLS, integrations and rollback.
| Approach | Best for | Advantages | Trade-offs |
|---|---|---|---|
| Manual files, database and DNS runbook | Administrators who need full control or have unusual server requirements | Precise control over the Linux stack, permissions, security and testing; works for large or customized sites | Requires SSH, database, web-server and DNS knowledge; you are responsible for every validation step |
| Guided migration tool | Standard WordPress sites with conventional hosting layouts | Less manual copying and a simpler workflow for common installations | Compatibility, plugin behavior, database size, DNS, email and custom integrations still need verification |
| Professional migration service | Revenue-critical sites or owners who do not want to manage shell, database and DNS work | Specialist assistance with transfer, troubleshooting and cutover planning | Cost, scheduling, access requirements and the exact scope of support must be confirmed in writing |
Bluehost describes a self-service migration option developed with InstaWP as targeting a success rate of at least 85% in collaboration with its partner team. That is a provider-reported target, not a guarantee for every site, and it does not replace your backup, private testing or rollback plan. Availability and eligibility can change, so verify the current program before relying on it.
Quick Recap
Troubleshooting after the move
| Symptom | Likely cause | What to check |
|---|---|---|
| “Error establishing a database connection” | Incorrect database name, user, password or host; database service unavailable | Compare wp-config.php with the VPS credentials, test the user from the server, and inspect database-service logs. |
| Homepage works but posts return 404 | Rewrite rules were not enabled or regenerated | Confirm the virtual host allows overrides or has the correct rewrite configuration, then save Settings → Permalinks. |
| Images or CSS return 403 | Wrong ownership, permissions or document-root path | Check the file path, web-server user access and restrictive rules in .htaccess or the server block. |
| White screen or PHP fatal error | Missing PHP extension, incompatible PHP version or plugin failure | Read PHP and WordPress logs, temporarily disable the suspected plugin, and match the known-working PHP environment before upgrading. |
| Mixed-content warnings | Database or plugin settings still reference HTTP | Check site and home URLs, serialized settings and hard-coded asset URLs; use a serialization-safe replacement for genuine domain or scheme changes. |
| Forms or orders disappear | Traffic reached two servers during propagation or the final database export preceded new submissions | Identify which endpoint received each submission, preserve the records, and establish one authoritative site before retrying. |
| Mail stops after nameserver change | MX, SPF, DKIM or DMARC records were not recreated | Compare the saved DNS zone with the active zone and restore the mail records required by the mail provider. |
| Some users still see Bluehost | DNS caches have not refreshed | Query the domain from multiple networks, keep both servers available, and avoid declaring completion until the VPS consistently serves requests. |
Migration checklist
- Inventory domains, DNS, versions, plugins, integrations, cron and mail.
- Schedule a freeze and document the rollback contact and window.
- Download the complete WordPress tree and export the SQL database.
- Verify archives and SQL contents; store local and off-site copies.
- Provision and secure the Linux VPS, web server, PHP and database.
- Create the database, least-privilege user, virtual host and document root.
- Upload files, import SQL, edit
wp-config.phpand set safe ownership. - Perform a serialization-safe URL replacement only if the domain changed.
- Preview privately, resave permalinks and test content, accounts, forms, checkout, jobs, logs and mobile layouts.
- Install and verify TLS, redirects and canonical URLs.
- Lower TTL to 300–600 seconds 24–48 hours ahead when feasible.
- Change the A/AAAA record or nameservers, monitor both endpoints and keep Bluehost active.
- Take a post-cutover backup, enable monitoring and document recovery before retiring the old account.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

