To deploy an Ember application simply transfer the output from ember build
to a web server. This can be done with standard Unix file transfer tools such as rsync
or scp
. There are also services that will let you deploy easily.
You can deploy your application to any web server by copying the output from ember build
to any web server:
ember build scp -r dist/* myserver.com:/var/www/public/
Surge.sh allows you to publish any folder to the web for free. To deploy an Ember application you can simply deploy the folder produced by ember build
.
You will need to have the surge cli tool installed:
npm install -g surge
Then you can use the surge
command to deploy your application. Note you will also need to rename index.html to 200.html to enable Ember's client-side routing.
ember build --environment=development mv dist/index.html dist/200.html surge dist funny-name.surge.sh
We chose funny-name.surge.sh but you may use any unclaimed subdomain you like or use a custom domain that you own and have pointed the DNS to one of surges servers. If the second argument is left blank surge will prompt you with a suggested subdomain.
To deploy to the same URL after making changes, perform the same steps, reusing the same domain as before.
rm -rf dist ember build --environment=development mv dist/index.html dist/200.html surge dist funny-name.surge.sh
We use --environment=development
here so that Mirage will continue to mock fake data. However, normally we would use ember build --environment=production
which optimizes your application for production.
On an Apache server, the rewrite engine (mod-rewrite) must be enabled in order for Ember routing to work properly. If you upload your dist folder, going to your main URL works, but when you try to go to a route such as '{main URL}/example' and it returns 404, your server has not been configured for "friendly" URLs.
To fix this add a file called '.htaccess' to the root folder of your website. Add these lines:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.html [L] </IfModule>
Your server's configuration may be different so you may need different options. Please see the Apache URL Rewriting Guide for more information.
© 2017 Yehuda Katz, Tom Dale and Ember.js contributors
Licensed under the MIT License.
https://guides.emberjs.com/v2.15.0/tutorial/deploying