I have to deploy my zencart on my live server , when I deployed it on stage it was very painful.
I had to do everything step by step again , because of lots of customization it takes lots of time , effort and testing . Can anyone tell me better way to do this?
As John states, the purpose of a staging area is to replicate your production environment so you can get the kinks out before you deploy to your production server(s). Ideally, you'd use the same VM image to ensure the two environments are identical, but if you can't then you should at least use the same OS and software versions.
Secondly, many of the repetitive manual tasks required in deployment can be automated. CI software like Capistrano, Puppet, etc. let you script your deployment tasks, such as fetching the latest files from your revision control server, uploading them to your production servers, running database migrations, regression testing, and automatically rollback to the previous revision if the deployment fails.
If you can't get your staging server identical to your production environment, then I would just set up a staging subdomain on the production server. Your deployment script can deploy to this subdomain, and if everything tests out, use a symlink to make it live.
If your live environment is a mirror of staging area you should be able to copy your completed copy of your site from your staging area to your live server when you are done developing it. You shouldn't need to go through the steps of reassembling it piece-by-piece on the live server. That kind of defeats the purpose of having a staging area in the first place.