This weekend I brought up a new Amazon server on my "free" account. I still haven't made any costly inadvertent purchases, even with all my experimenting. My estimated bill for February is $0.01 (for SES messaging.)
Many web servers use Ruby on Rails, so I've been learning a lot about that environment. One way to make Rails servers more convenient and reliable is to use Passenger - it's a web application server that works with Apache, the server that most of the Web uses.
It's fast, it has good logging and reduces the attack surface to help improve security. It works well with Apache virtual hosts - allowing us to easily host multiple websites on a single machine. It can detect failures, re-launch sites that may go down and has a bunch of automation features that make operations of complex web servers a bit easier.
So, this weekend I installed Passenger, Rails, etc. and brought up a Rails server with a demo app.
I use a github repository to store my Rails code and thought it would be interesting to try some of the integrations.
I also installed Jenkins -- a continuous integration tool. I connected it up with github so that whenever I publish code to github, Jenkins detects it the change, goes and gets the code and runs a test build. If the build is successful, Jenkins posts that status back to the github repository and logs the success in its database.
Next I'll integrate some testing tools for additional automated testing and then automatically update the Rails app from the repository if the testing is successful. This kind of thing supports continuous integration - the rapid creation, testing and integration of new code from a common repository, several times a day instead of the big-bang approach to enhancements.
If you're interested in learning more about Linux and web apps and services in general -- and AWS in particular, it's easy and free to sign up at aws.amazon.com.