Migrating a Multisite to a new Instance - sosroInSpace/wordpress_wiki GitHub Wiki
Part 1: Download the old stuff.
NOTE: Areas marked with {{DOUBLE_BRACKETS}} need to be replaced with your own fields.
- Get the
wp-contentfolder withssh {{OLD_INSTANCE}} 'cd /home/bitnami/apps/wordpress/htdocs && tar czf - wp-content' > ./wp-content.tar.gz. - Get MySQL credentials for step 3 with
ssh {{OLD_INSTANCE}} 'egrep -h "DB_NAME|DB_USER|DB_PASSWORD" /home/bitnami/apps/wordpress/htdocs/wp-config.php'. - Get the database dump for the wordpress database with
ssh {{OLD_INSTANCE}} 'mysqldump -u bn_wordpress -p bitnami_wordpress' > ./database.sql. You will be prompted for DB_PASSWORD gotten in step 2.
Part 2: Stop bitnami on the new instance.
We want to stop bitnami, as our changes will likely cause errors in the running bitnami daemons.
- Stop bitnami with
ssh {{NEW_INSTANCE}} 'sudo /opt/bitnami/ctlscript.sh stop'.
Part 3: Install wp-content to new instance.
- Upload
./wp-content.tar.gzwithscp ./wp-content.tar.gz {{NEW_INSTANCE}}:~/wp-content.tar.gz. - SSH in with
ssh {{NEW_INSTANCE}}. - Rename
wp-contenttoold-wp-content. - Install
./wp-content.tar.gzwithtar xf ./wp-content.tar.gz -C /home/bitnami/apps/wordpress/htdocs. - Give correct group to
wp-contentwithsudo chown -R bitnami:daemon /home/bitnami/apps/wordpress/htdocs/wp-content/. - Give correct permissions to
wp-contentwithsudo chmod -R u+rw,g+rw /home/bitnami/apps/wordpress/htdocs/wp-content/. - Get new MySQL credentials for step 9 with
ssh {{OLD_INSTANCE}} 'egrep -h "DB_NAME|DB_USER|DB_PASSWORD" /home/bitnami/apps/wordpress/htdocs/wp-config.php'.
Part 4: Import database.
- Upload
./database.sqlwithscp ./database.sql {{NEW_INSTANCE}}:~/database.sql. - SSH in with
ssh {{NEW_INSTANCE}}. - Get new MySQL credentials for step 4 with
egrep -h "DB_NAME|DB_USER|DB_PASSWORD" /home/bitnami/apps/wordpress/htdocs/wp-config.php. - Create a dump of the current database with
mysqldump -u bn_wordpress -p bitnami_wordpress > ~/old-database.sql. You will be prompted for DB_PASSWORD gotten in step 3. - Import new database with
mysql -u bn_wordpress -p bitnami_wordpress < ~/database.sql. You will be prompted for DB_PASSWORD gotten in step 3.
Part 5: Start bitnami again.
- Start bitnami with
ssh {{NEW_INSTANCE}} 'sudo /opt/bitnami/ctlscript.sh start'.
Part 6: Update the database if getting "ERR_TOO_MANY_REDIRECTS".
If switching from one domain to another, you might get ERR_TOO_MANY_REDIRECTS when visiting. To fix this, get into SQL using one of the following methods:
With phpmyadmin
- Run one of the following commands depending on your scenario:
ssh -N -L 8888:127.0.0.1:80 {{INSTANCE}}ssh -N -L 8888:127.0.0.1:443 {{INSTANCE_NAME}}(If instance redirects HTTP to HTTPS).
- Visit
127.0.0.1:8888/phpmyadmin/. - Login with a MySQL user. Use the credentials in Part 4 -> Step 3.
- Make sure bitnami_wordpress -> wp_site has the correct domain name.
With MySQL
- SSH in with
ssh {{NEW_INSTANCE}}. - Run
mysql -u {{DB_USER}} -p. You will be prompted for DB_PASSWORD from Part 4 -> Step 3. - In the SQL shell, run
use bitnami_wordpress;.
Once in, do the following:
- Run
select * from wp_site;If the site is different, you need to update it with:
- `UPDATE wp_site SET domain='{{DOMAIN}}' WHERE id=1;
- Run
select * from wp_blogs;If the root sitename is different (usuallyblog_id=1), you need to update it with the new domain name:
- `UPDATE wp_blogs SET domain='{{DOMAIN}}' WHERE blog_id=1;
- If there are subdomains in
wp_blogs, update each of them to{{SUBDOMAIN}}.{{NEW_DOMAIN}}with blog_id=2,3,4,5....etc. - Run
SELECT option_name,option_value FROM wp_options WHERE option_name='siteurl' OR option_name='home';. If the names are different, update them with:
UPDATE wp_options SET option_value='http://{{NEW_DOMAIN}}' WHERE option_name='siteurl' OR option_name='home';.
- Run
show tables;and look for all thewp_2_options,wp_3_options, etc. For each of these, run:
SELECT option_name,option_value FROM wp_2_options WHERE option_name='siteurl' OR option_name='home';.UPDATE wp_2_options SET option_value='http://{{NEW_DOMAIN}}' WHERE option_name='siteurl' OR option_name='home';.
Part 7: Login to the Multisite.
- Visit the
{{DOMAIN}}/wp-login.phpand login as an imported user fromdatabase.sql.
Part 8: Associating Elastic IP
- Associate Elastic IP
- Visit new IP (website will be down)
- SSH into instance and navigate to: /opt/bitnami/apps/wordpress > run sudo ./bnconfig --machine_hostname YOURELASTICIP