---
Introduction: So recently I got an iphone and while out and about, I wanted to look at the source code of a page on safari. It so happens that I can't do that. (Yes, I know, I took it for granted.) So while there are some apps out there, I refuse to buy an app that I'll use only once. As a matter of luck, it so happened that this weekend there was a "$.99 .com" sale, so I hastily grabbed "www.seesster.com", and considered building a site that "sees what your browser sees".
It so happens that I've been been reading about Scala as well as the Play framework, and Friday night started to code seesster up. I won't go into details of the Scala/Play code and what I'm doing (long story short: scala + phantomjs + pygments), but I will describe how I was able to set this up (running!) on my free amazon EC2 micro instance.
DNS and sub-domains: So when I login to my AWS management console, there are two things that need to be done:
1) I need to name my instance with the exact subdomain I am planning on redirecting the service to. In this case, I've named the instance www.seesster.com
2) I also need to jot down the Public DNS (which I'll use for the CNAME entry of my named config file). In this case, it is ec2-174-129-174-216.compute-1.amazonaws.com
I've highlighted the entries I'm talking about in red.... |
www CNAME ec2-174-129-174-216.compute-1.amazonaws.com.
At this point, when I tried "www.seesster.com" I would correctly end up on amazon's server. However, this was the easiest part of my weekend.
Play won't run: My coding environment has plenty of memory, so I never thought once on how this could impact me. That is, until I tried to run play on it... "play run", "play dist", "play start" and even "play compile" would end up with memory allocation problems. I was between a rock and a hard place.
Solving this involved:
1) Manually downloading and installing java 1.7 (jdk1.7.0_05).
2) Updating the symbolic links:
$ ll /usr/lib/jvm/jre lrwxrwxrwx 1 root root 31 Jul 2 03:09 /usr/lib/jvm/jre -> /home/ec2-user/jdk1.7.0_05/jre/
$ ll /usr/bin/java lrwxrwxrwx 1 root root 35 Jul 2 03:10 /usr/bin/java -> /home/ec2-user/jdk1.7.0_05/bin/java
3) on my dev box, running "play dist" and uploading that stand-alone file to amazon
4) updating the "start" script in the stand-alone folder to:
$ cat start #!/usr/bin/env sh exec java -Xms64M -Xmx128M -Dhttp.port=80 $* -cp "`dirname $0`/lib/*" play.core.server.NettyServer `dirname $0`
What this allows me to do is run my play application with limited memory usage on port 80. (Reminder: this is on Play 2.0.2).
Happy ending: Cool or not cool? As of today, www.seesster.com is running and working. I will be updating code during the week for sure. If you are reading this in the future (wow!), and the site doesn't work, I am probably aware of it. After all, a year from now the domain will expire. And unless it is making me money, I'll probably *not* renew it.
:)
No comments:
Post a Comment