Deploy Grails Apps in 3 simple steps to Amazon Beanstalk
We can easy deploy the Grails WAR file to Amazon Beanstalk in 3 simple steps:
- We have to create an Amazon Web Services Account (this part is not described is this post)
- We have to make a MySQL database. We use Amazon RDS
- We have to make the Amazon Elastic Beanstalk and deploy the WAR
Important note before you start!
We need security groups, to connect local client tools and Amazon Elastic Beanstalk to the MySQL Database Instance. To succeed to make this connection it is important to install Amazon RDS and Amazon Elastic Beanstalk in the same region. At this moment you can choose only select one region for setting up Amazon Elastic Beanstalk (US East) so your region for Amazon RDS must be ‘US East’.
Make MySQL Database Instance with Amazon RDS
1) Sign in to the AWS Management Console and choose for the RDS tab
2) Press the Launch DB Instance Button
You see the first screen. In our case we fill in the following:
Allocated Storage: 5
DB Instance Identifier: db
Master User Name: root
Master User Password: mysql
The other fields will have the default value
3) In the second screen you can enter some additional configuration
Database name: database
The other fields will have the default value
4) In the other screen you can enter some management options like backup scedule etc.
5) After you review all the info and pressing the Launch button you get an available MySQL Database Instance!
Fill in the DB security group to authorize access from local client tools and elastic beanstalk
Enter in the default security group:
1) a CIDR/IP connection type with IP/32 of the machine with client tools. Fill in your IP, to haven direct access with your own client tools
2) a EC2 Security Group type with Security Group:elasticbeanstalk-default and enter your AWS Account ID
Make the elastic beanstalk and deploy the Grails WAR
1) We use the production evironment option in the datasource.groovy to put in the Amazon information. Use the endpoint of the Amazon RDS / MySQL Database Instance as the machinename and the Amazon Beanstalk environment in the jdbc connection.
production { dataSource { pooled = true driverClassName = "com.mysql.jdbc.Driver" dbCreate = "update" // one of 'create', 'create-drop','update' username = 'root' password = 'mysql' url = 'jdbc:mysql://'endpoint':3306/'environment'' dialect = org.hibernate.dialect.MySQL5InnoDBDialect properties { validationQuery = "SELECT 1" testOnBorrow = true testOnReturn = true testWhileIdle = true timeBetweenEvictionRunsMillis = 1000 * 60 * 30 numTestsPerEvictionRun = 3 minEvictableIdleTimeMillis = 1000 * 60 * 30 } } }
2) Create the Grails WAR with the correct datasource.groovy file.
Enter an environment is our case : environment
Upload a Grails WAR file: appname.war
You can edit your environment. See the manual Elastic Beanstalk guide
After successfully upload en deploy of the Grails WAR file you see a little green square!
At this point you have successfully upload and deploy your Grails App to the Amazon Cloud!!!
Look at http://environment.elasticbeanstalk.com/ and enjoy!!!
Note that you’ll be charged quite a bit for your RDS instance! I followed this and deployed a small Grails app less than 10 days ago, with very low bandwidth and actual storage used, and my cost is currently up over $21 USD. I’ve undeployed my app until I can find a cheaper way to make this work without using RDS.
Hi Eric,
Thx for your comment. I noticed that RDS take a big part of the costs. In our project we use MySQL as database, so RDS is the best fit for now. We have a lot of customers and we can configure Grails as a multi-tenant environment (one instance and one scheme). This is the cheapest way in our case, because we can share those costs with al lot of customers.
Greets,
Maikel
Hi, we are planning to deploy our app as a multitenant environment using beanstalk, and we need no sharing (one instance per tenant), please guide me how you have deployed and how you used RDS for cost effective? appreciate your help..
thnx – Venu
Hi Eric,
Have you found any way to use Amazon Beanstalk without RDS?
Thanks,
Chee Kin
Hi, I’m afraid I’m still unclear about how to setup the database URL. How do I map ‘endpoint’ and ‘environment’ to my RDS mysql instance?
OK, I’m up and working now. I guess things have changed a little since this page was written. For what is effectively an updated set of these instructions please go here,
http://www.bobbywarner.com/2011/10/14/grails-on-aws/
Greetings from Ohio! I’m bored to death at work so I decided to browse your website on my iphone during lunch break. I love the knowledge you present here and can’t wait
to take a look when I get home. I’m amazed at how fast your blog loaded on my mobile .. I’m not even using
WIFI, just 3G .. Anyways, very good blog!
Hello There. I found your blog using msn. This is an extremely well written article.
I will be sure to bookmark it and come back to read
more of your useful info. Thanks for the post.
I will certainly return.
MB6-502 exam is about configuring multiple business related items ,working with
route related switch nodes, creating and setting up product builder
form ,product model and price combination. Nowadays all are aware about the
web forms visible in various sites. There is not any real proof that training can benefit from protein
supplements.
However, there are several online interfaces available where one needs to click
on different types of options to send HTML code in email or to generate HTML code.
For professional web site builders extra complex laptop software program for net design is needed.
Net’s builder has been out for a little more than a year, yet it already helped more than 5,000 webmasters to create their online forms.
Routes at minibus stations are usually in Chinese or not clearly stated.
Application virtualization saves on hardware costs as well as licensing
costs required for OS and software. Ten One Design Pogo Sketch Stylus Green for Apple i – Phone 4, i – Pod Touch, i – Pad and Blackberry 9300 9530 Strom 9550 Strom2 9800 Bold
Motorola Droid x.