Merge pull request #2357 from techAPJ/master

Update MIGRATION.md
This commit is contained in:
Jeff Atwood 2014-05-18 23:39:53 -07:00
commit b352f70c5c

View File

@ -1,59 +1,93 @@
Deploying [Discourse on Docker][1] is currently our recommended setup. It avoids many pitfalls installations have, such as misconfigured nginx, sub-optimal Ruby defaults and so on.
So you want to move your existing Discourse instance to a new server?
The Docker based setup ensures we are all on the same page when diagnosing installation issues and completely eradicates a class of support calls.
In this guide we'll move an existing Discourse instance on [Linode][linode] to a new Discourse instance on [Digital Ocean][do], although these steps will work on other cloud providers that also support Docker. Let's start!
Today, all sites hosted by Discourse are on Docker.
## Log In as Admin on Existing Server
This is a basic guide on how to move your current Discourse setup to a Docker based setup.
Only admins can perform backups, so sign in as an account with admin access on your existing Discourse instance on Linode.
## Getting started
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5075/0900269482193379.png" width="690" height="367">
First, get a blank site with working email installed. Follow the guide at https://github.com/discourse/discourse_docker and install a new, empty Discourse instance.
## Update Existing Install
**Tips:**
Both the new and old Discourses **MUST BE ON THE EXACT SAME VERSION** to ensure proper backup/export. So the first thing we'll do is update our existing Discourse instance on Linode to the absolute latest version.
- Bind the web to a different port than port 80, if you are on the same box. Eg:
Visit `/admin/docker` to upgrade.
expose:
- "81:80"
(If you are running the [deprecated Ubuntu install][dep_ubuntu] you may need to follow [these update instructions][ubuntu_update].)
- Be sure to enter your email in the developer email section, so you get admin:
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5089/057a025f63a3f5fd.png" width="690" height="440">
env:
# your email here
DISCOURSE_DEVELOPER_EMAILS: 'my_email@email.com'
After successfully upgrading, you should see *You're up to date!*
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5077/e70d99317685541d.png" width="487" height="127">
## Download Your Backup
Visit `/admin/backups` and click **Backup** button.
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5078/95678045bffdcd37.png" width="690" height="199">
You will be prompted for confirmation, press **Yes**.
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5047/936eb2559f183fa2.png" width="690" height="180">
Once confirmed, you will be able to see the log of backup processing. Once the processing is finished, switch back to **Backups** tab.
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5079/bbf134699e31579d.png" width="690" height="441">
Now you will see the newly created backup file. Click **Download** button and save the file, we will need it later for restoration on the new server.
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5080/7acf53c2ee777b0c.png" width="690" height="229">
## Log In as Admin on New Server
Sign up and login on your new Discourse instance at Digital Ocean.
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5081/d4c0d02f8e7c1922.png" width="689" height="288">
## Enable Restore
Under site settings search for `restore`:
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5082/67dfcfca4c13d6fc.png" width="690" height="243">
Enable the `allow_restore` setting, and refresh the page for changes to take effect.
## Restore Backup
Browse to `/admin/backups` and click **Upload** button, select the backup file you downloaded previously from your existing Discourse instance (file name ends with `.tar.gz`):
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5083/8077d61bf31be508.png" width="690" height="224">
Once the file gets uploaded it will be listed as shown below, click **Restore** button:
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5084/01443ed902f43d4a.png" width="689" height="225">
Press **Yes** when prompted for confirmation:
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5061/87202e56a402eb58.png" width="690" height="166">
You will see restore process log, it may take some time but it's automagically importing all your existing Discourse instance (Linode server) data.
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5085/c397f8218cae2fc9.png" width="690" height="447">
Once the Restore process finishes, you will be logged out.
## Log In and You're Done
Once the restore process finishes, all the data from your previous Discourse instance on Linode server will be imported in your new Discourse instance on Digital Ocean, sign in with your Admin account and you are good to go!
<img src="https://meta-discourse.r.worldssl.net/uploads/default/5087/557688e5922a1ce4.png" width="690" height="375">
If anything needs to be improved in this guide, feel free to ask on [meta.discourse.org][meta].
- Make sure email is setup and working by visiting `/admin/email` and sending a test email.
- Make sure you have ssh access to your container `./launcher ssh my_container` must work.
**If any of the above is skipped your migration will fail.**
At the end of this process you will have a working website. Carry on.
## Exporting and importing the old site
- Ensure you are running the absolute latest version of Discourse. We had bugs in the export code in the past, make sure you are on latest before attempting an export.
- On your current instance
- go to `/admin/backups` and click on the ![Backup](https://meta-discourse.r.worldssl.net/uploads/default/3418/083f92873b96625c.png) button.
- once the backup is done, you will be able to ![Download](https://meta-discourse.r.worldssl.net/uploads/default/3420/fd77ea7e700101cd.png) it.
- On your newly installed docker instance
- enable the `allow_restore` site setting
- refresh your browser for the change to be taken into account
- go to `/admin/backups` and ![Upload](https://meta-discourse.r.worldssl.net/uploads/default/3419/21e172a1f1059364.png) your backup.
- once your upload is done, click on the ![Restore](https://meta-discourse.r.worldssl.net/uploads/default/3421/2946f976f3bea2bb.png) button
- Destroy old container `./launcher destroy web`
- Change port binding so its on 80
- Start a new container
Yay. You are done.
[1]: INSTALL-digital-ocean.md
[do]: https://www.digitalocean.com/?refcode=5fa48ac82415
[dep_ubuntu]: https://github.com/discourse/discourse/blob/master/docs/INSTALL-ubuntu.md
[ubuntu_update]: https://github.com/discourse/discourse/blob/master/docs/INSTALL-ubuntu.md#updating-discourse
[official_install]: https://github.com/discourse/discourse/blob/master/docs/INSTALL.md
[do_install]: https://github.com/discourse/discourse/blob/master/docs/INSTALL-digital-ocean.md
[linode]: https://www.linode.com/
[namecheap]: https://www.namecheap.com/
[meta]: https://meta.discourse.org/t/move-your-discourse-instance-to-a-different-server/15721