Migrating WordPress sites to Digital Ocean

*

Here's a rough outline of the steps I do at the moment to migrate a site based on a Duplicator backup.

1. Notes

It's all fairly laid back, until you get to the point of setting up Let's Encrypt, because you have to have the DNS pointing at the site before you can get the cert.

If you have access to it, one way to do that is with a copy of an existing LE set of certificates, and set that up in advance.

2. Steps

  • First, if not done already provision a WordPress server at Digital Ocean
  • copy latest backups to the WordPress server
    • Duplicator Pro copies these to Google Drive, and I use rclone to pull them down from there
  • set up the site in Apache
    • usually make a copy of what's in an existing .conf - should probably have a template file though
    • check that it works on port 80
      • I usually do this with an edit to /etc/hosts, so I can browse the new site without making any live DNS changes
  • setup DB
    • create database <dbname>;
      • <dbname> : <shortname>_<8randomchars>
    • create user <user>@localhost identified by '<pass>';
      • <user>: <shortname>_<8randomchars>
      • <pass>: 32 char pass from 1password
    • grant all on <dbname>.* to <user>@localhost;
  • install while on http
    • run the Duplicator installer.php
  • update the DNS
  • run certbot
  • check email settings
    • send a test email
  • readd Duplicator Pro settings
    • weirdly, of all things, I lose the Duplicator Pro storage and schedule settings, and have to set them up again

3. Automation

Would be nice to have this automated via e.g. Ansible.

4. Simple Apache .conf template

This will get amended when running certbot –apache.

<VirtualHost *:80>
	ServerAdmin {{ admin_email }}
	ServerName {{ domain }}
	ServerAlias www.{{ domain }}

	DocumentRoot /var/www/{{ domain }}

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	<Directory /var/www/{{ domain }}>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride all
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>

5. Elsewhere

5.1. In my garden

Notes that link to this note (AKA backlinks).

5.3. Mentions

This page last updated: 2023-03-17 Fri 16:15. Map. Recent changes. Source. Peer Production License.