Oh, and regarding server side software, a web server is enough if you named the tiles in a logic way. You'll have to provide a callback to OpenLayers to return the name of the tile, similar to this pseudo-code:
GetTileFileName(zoom, x, y) {
return "/MonaLisa/tiles/z" + zoom + "lon" + x + "lat" + y + ".png";
}
http://www.thekremercollection.com/art/artists/Pieter-Codde/...
It's actually based on Google Maps API, which isn't open source, but OpenLayers has equivalent functionality though I find it less fluid and slower...