Hi @anshuldixit
Since I don’t know how much you know or tools you have available, I’ll try to list most.
First, you need to stop using (meaning updating/editing D1’s WP).
Then I would highly recommend that you take a snapshot of both D1 and D2 via the DigitalOcean control panel, so you can revert completely in case of total failure.
Then let’s take a backup of the WordPress database of D1. If you have phpMyAdmin, then use that, otherwise I would recommend that you use https://www.adminer.org/
Login to D1 via SSH. I’m guessing you have setup both servers with password and not keys, if you are using keys, then let me know.
Now let’s copy all files from D1 to D2, but since I don’t know your exact web-root paths, you will need to adjust those. I’m expecting that D1’s web-root is /var/www/html
:
#D1
scp -pr /var/www/html root@THE-IP-OF-D2:/var/www/DOMAIN-NAME-OF-D1-WEBSITE
# Example
# scp -pr /var/www/html root@123.45.67.89:/var/www/my-website.com
It’s going to take a little time to copy the data depending on how many media files you’ve uploaded to D1’s WordPress.
We will copy the Nginx configuration as well:
#D1
scp -p /etc/nginx/sites-available/NAME-OF-CONFIGURATION root@THE-IP-OF-D2:/etc/nginx/sites-available/DOMAIN-NAME-OF-D1-WEBSITE
# Example
# scp -p /etc/nginx/sites-available/default root@123.45.67.89:/etc/nginx/sites-available/my-website.com
Log out of D1. We’re done with that server.
The rest is done only on D2.
Now let’s upload the D1 database to D2. Again, install Adminer to D2 unless you already have phpMyAdmin. If the D1 database name is already in use on D2, then you might need to modify the database name before uploading it. I need more information from you to assist here.
And now let’s update the /var/www/my-website.com/wp-config.php
file, so the database configuration matches the login on D2 - and in case you have renamed the database, then change that too.
Let’s also make sure it’s owned by www-data
, which I guess is your Nginx+PHP user:
chown -R www-data:www-data /var/www/my-website.com
Adjust the Nginx configuration /etc/nginx/sites-available/my-website.com
so it uses the root
of /var/www/my-website.com
.
And then activate the configuration:
ln -s /etc/nginx/sites-available/my-website.com /etc/nginx/sites-enabled/
Test the configuration - if it returns “OK”, then restart Nginx too:
sudo service nginx configtest
sudo service nginx restart
Now we should be ready to change the DNS to point the D1-domain to the IP of D2. There’s way to test this before changing the DNS, by modifying your computers hosts
file. If you want to be totally sure, we can do that before changing the DNS.