Yummy pazole
And Virat in a colorful dress
It looks like I was able to accomplish writing the application that I wanted to on the App Engine in 2 days!! at least in it’s basic form. After some help from Google, I updated the application I created yesterday (http://samurai-apps.appspot.com/) to display the User Agent string being sent by the client.
The code has been updated to github at https://github.com/kudithipudi/google-app-engine/
Lessons from day 2?
Next, I will try to pretty it up a bit.
Isn’t it amazing that I was able to create a simple app in a matter of 2 days and host it on an “infinitely” scalable platform without even taking our my credit card.
Following up on my public resolution for his month..I started playing with Google App engine. I think a lot has been written about what it is and how it works, but in a nutshell, think of it as an environment to deploy your applications and not have to worry about underlying system capacity. It provides support for Java, Python and more recently Google’s own Go programming languages.
I chose Python, since I have been meaning to dabble in it for a while now. So without further adieu, here is a link to my first application on Google App Engine
http://samurai-apps.appspot.com/
And obviously it has to be hello world :).
How did I get here?
Pretty simple eh.. 🙂
Now the challenge is to program something more useful than print hellworld :).
Continuing on my project/month theme.. here is what I want to accomplish in May 2012
Why am I doing this? I understand the IaaS area pretty well, but am not well versed in the PaaS arena. Hoping this adventure will teach me some new things. And yes, I do plan on documenting my journey :).
Wish me luck 🙂
Phew.. that was a long title :). Was running into an issue with the setup shown in the picture below
When we try to access the web site using https, the html content being served back was showing the app server name as the reference, rather than the web site.
So in this example, let’s say the web address was kudithipudi.org and the app server was app-server-kudithipudi, the HTML content was showing https://app-server-kudithipudi:8080 as the source.
Here’s how, we fixed it.
Edit the server.xml file found in $JBOSS_HOME/server/$JBOSS_PROFILE/deploy/jboss-web.deployer and update the HTTPS connector to use the web address (kudithipudi.org) as the proxyName.
BEFORE
[code]<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="250" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/opt/jboss/jboss-as/server/kudithipudi/conf/ssl/kudithipudi.keystore"
keystorePass="xxxxxx" />
[/code]
AFTER
[code]<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="250" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
proxyName="kudithipudi.org" proxyPort="443"
keystoreFile="/opt/jboss/jboss-as/server/kudithipudi/conf/ssl/kudithipudi.keystore"
keystorePass="xxxxxx" />
[/code]
For my own notes.. if you are using grep to parse through the contents of a file and want to see the preceding or proceeding content than the line that matched your query, you can use the following options
preceding content [code]grep -B NUMBER_OF_LINES_TO_DISPLAY query filename[/code]
for example, if I was searching for kudithipudi in a file names access.log and want to see 2 lines prior to the match, I would use [code]grep -B 2 kudithipudi access.log[/code]
proceeding content[code]grep -A NUMBER_OF_LINES_TO_DISPLAY query filename[/code]
for example, if I was searching for kudithipudi in a file names access.log and want to see 2 lines after the match, I would use [code]grep -A 2 kudithipudi access.log[/code]
preceding and proceeding content[code]grep -C NUMBER_OF_LINES_TO_DISPLAY query filename[/code]
for example, if I was searching for kudithipudi in a file names access.log and want to see 2 lines before and after the match, I would use [code]grep -C 2 kudithipudi access.log[/code]
Guest speaking about food at a restaurant featured on Guy Fieri’s Diners, Drive-ins and Dives program
It is just like nothing!!
puppet, is a configuration management framework that can be used to perform several different things to validate/configure your infrastructure. We have been using puppet for sometime at my work and have just started moving into some of the advanced uses of the tool.
One of the features offered by puppet is the capability to use templates to configure different servers.
For example, say you want to configure an application on server ABCD, XYZ and 123. And the configuration file for all these servers is the same, other than the hostname of the server. The configuration file has to reside in /opt/application/config.conf . The config.xml file looks like this
[code]
db.name=blah
db.user=blahblah
db.hostname=XYZ
log.level=ERROR
log.location=/var/log/application
[/code]
Here is how you can do it in puppet.
Define a module which uses a template and then configure the template to put the host specific entry in the template. Let’s name our module test_config
The next time the puppet client runs on host ABCD, it would create the file /opt/application/config.conf with the right hostname in the config file.
If you use the default logging options for Jboss, it has a nasty habit of overwriting log files on a restart. So, if you were in the middle of troubleshooting an issue and had to restart Jboss, you will end up loosing all the historic data. You can change this default behavior by changing one option in the log4j config file
with [code]<param name="Append" value="true"/>[/code]
Final post on Project Uptime. Before I go into the details of how well I fared against the original goals, here is a screenshot of the uptime of the site for the last two weeks.. Hope I can keep that number for the rest of this year :). Recap of the original goals and their status
GOAL : Move to a fresh VM with the latest kernel
GOAL : Upgrade to the latest version of Apache.
GOAL : Upgrade to latest version of MySQL and tune it for memory usage
GOAL : Configure cloudflare to serve a static version of front page, in case the server goes down. Design the static page to point people to my other digital presences (Google+, LinkedIn, Flickr etc)
All in all.. not bad 🙂