How to Migrate a WordPress Site to Your Breeze
Moving a WordPress site to your Breeze instance gives you full control over performance, security, and configuration. This guide walks you through a complete WordPress migration including files, database, and DNS cutover.
Prerequisites
- A Breeze instance with a LAMP or LEMP stack installed (PHP 8.x, MySQL/MariaDB, Apache or Nginx)
- SSH and SFTP access to both the old host and the new Breeze
- Your WordPress database credentials from
wp-config.php - Access to your domain's DNS settings
Step 1: Back Up WordPress Files
On the source server, create a compressed archive of the entire WordPress directory:
cd /var/www
tar czf wordpress-backup.tar.gz html/
This captures all themes, plugins, uploads, and core files. Transfer the archive to your Breeze:
scp wordpress-backup.tar.gz user@breeze-ip:/tmp/
Step 2: Export the WordPress Database
Use mysqldump to export the WordPress database from the source:
mysqldump -u wp_user -p --single-transaction wp_database > wp_database.sql
scp wp_database.sql user@breeze-ip:/tmp/
Step 3: Set Up the Web Server on Your Breeze
Install the required packages on your Breeze if not already present:
sudo apt update
sudo apt install -y nginx php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd php8.2-intl mariadb-server
Step 4: Restore Files and Database
Extract the WordPress files to the web root:
cd /var/www
sudo tar xzf /tmp/wordpress-backup.tar.gz
sudo chown -R www-data:www-data html/
Create and import the database on the Breeze:
sudo mysql -u root -p -e "CREATE DATABASE wp_database;"
sudo mysql -u root -p -e "CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'secure_password';"
sudo mysql -u root -p -e "GRANT ALL ON wp_database.* TO 'wp_user'@'localhost';"
sudo mysql -u root -p wp_database < /tmp/wp_database.sql
Step 5: Update wp-config.php
Edit /var/www/html/wp-config.php and update the database connection details to match your new Breeze server:
define('DB_NAME', 'wp_database');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'secure_password');
define('DB_HOST', 'localhost');
Step 6: Search and Replace URLs
If your site URL is changing, use WP-CLI to update all references in the database:
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables --skip-columns=guid
This updates serialized data correctly, which a simple SQL find-and-replace would break.
Step 7: Fix Permissions and Test
Ensure correct file permissions:
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
Test the site by editing your local /etc/hosts file to point the domain to your Breeze IP before updating DNS. Verify pages load, the admin dashboard works, and media files display correctly.
Step 8: Update DNS
Once everything checks out, update your domain's A record to point to your Breeze's IP address. WordPress should now be fully running on your new Breeze instance with improved performance and full root access.