What is the recommended way to install the various components on the server so that one can easily update each component as new versions are released. I am thinking it would it be best to keep each component in its own directory. Then when a new version of each component is released you would rename the existing codebase directory and replace it with the new versions codebase. This way if something breaks with the new codebase you can always go back to the previous by rename the folders. Please let me know if this makes sense or whether there is a better recommended installation layout.
The way how you have described is totally valid.
There are many other possible solutions, as a structure of package and file names are not changed between releases you can just unpack new package in the same folder where the old one was unpacked, new files will overwrite the older ones. ( and if you want to revert back, you can unpack older package in the same folder )
Also, you need only codebase folder from the package, all other files and folders are not necessary for the production.