Friday, May 13, 2011

Learning Apache and Linux

A co-worker asked me if I knew any good books where he could read up on using Apache and Linux. I thought for a second, and quickly answered “Nope, not a one.”

“Oh!”, he said, looking somewhat dejected. Well, neither of us were looking for that response.

Then I had an idea. “Why a book? Just get a slice and just practice. It’ll probably be cheaper than a book, and you’ll learn more.”

After planting that idea, I went looking at what it would really take. I was close.

Get a slice

I checkout out what Slicehost was offering. For $20/month, you can get a linux instance with 256MB of memory, 10GB of disk. Not bad, but that seemed a little pricey to me. I kept looking.

I didn’t have to go far. Slicehost is owned by Rackspace, which offers the same instance for about $10.95/month. You’re only charged for the time your server is running, so you could bring it offline to save some dough.

Not very original

The idea of learning as you go on your own virtual instance wasn’t very original — Slicehost was promoting the same idea right on their faq:

I’m kind of new to this, will it be too hard?

Maybe. Our Slices are full distros with root access. Many people coming from shared hosting are used to a cPanel type control system and limited shell access. We’re geared for people who want to start from scratch and tune a system for their purposes. However, everyone has to start somewhere. A 256slice is a great place to cut your teeth on building production boxes from scratch. Tweak, explore, learn. If you screw up, login to SliceManager and restart the box. If you really screw up, login and reinstall ;). You’ll be a Linux guru in no time.

Now what?

So you got a slice. How do you start? This is where the options (and opportunities) are endless. The key point would be to start playing and see how far you can get. And maybe O’Reilly’s Lamp could help as an initial resource.

Some ideas:

  • Install Apache and get a static website deployed.
  • Install PHP, Perl or Python and get a dynamic website going.
  • Install a database, maybe Postgres or MySQL. Develop an deploy a small application.
  • Install Ruby and deploy a Sinatra or Rails application.
  • For the advanced — install and use another datastore, like redis or mongoDB.
  • For extra credit — deploy several applications together on the same host.