All-in-One WP Migration plugin can be used to perform the migration, but the plugin is not stable when uploading the files to the new server. Today I will introduce a much stable way.
If you are familiar with web hosting with WordPress, you should know that there are 2 major parts, one is the My SQL database and the other is the WordPress PHP scripts under the /var/www/html directory. So to migrate a WordPress blog is basically to migrate these 2 things.
Set up WordPress
Firstly follow either one of the following instructions to set up WordPress framework on Ubuntu 18.04 LTS.
Chinese Version: https://fenghe.us/setup-wordpress-on-ubuntu-18-04/
English Version: https://thishosting.rocks/install-wordpress-ubuntu/
Make sure that the site works when you enter the http://<the ip address of the vps>/ in the browser before the SSL Certificate installation step.
Migrate the Database
On the old server, suppose that your database name is called wordpress by default.
$ mysqldump -u root -p wordpress > wordpress.sql # fenghe.us should be replaced by your own server IP address # you will need to enter the root password $ scp -P 22 wordpress.sql [email protected]:/tmp/
On the new server,
$ mysql -u root -p wordpress < /tmp/wordpress.sql
Note that the ssh port for the new server may not be 22, so if it’s in that case, you should apply the -P option.
Apply the old PHP Configurations
On the new server
$ mv /etc/php/7.2/fpm/php.ini /etc/php/7.2/fpm/php.ini.old
On the old server
$ scp -P 22 /etc/php/7.2/fpm/php.ini root@<new server ip>:/etc/php/7.2/fpm
Migrate the Customized WordPress Framework
On the old server,
$ cd /var/www/ $ sudo apt-get install zip $ zip -r html.zip html # you will need to enter the root password again $ scp -P 22 html.zip [email protected]:/var/www/
On the new server,
$ cd /var/www/ $ sudo apt-get install unzip $ mv html html1 $ unzip html.zip
Final Steps
Now, we only need to grant the directory with the proper access rights and restart the web service to enable all the modifications we made.
$ chown -R www-data:www-data /var/www/html/ $ chmod -R 755 /var/www/html/ $ systemctl restart nginx.service $ systemctl restart php7.2-fpm.service