For our production websites we install OctoPack (Octopus Deploy) into the web solution via a nuget package in Visual Studio 2013. We set up a Team City build configuration for that project to trigger a deployment with Octopus Deploy, in which we have set up a project and several machines and environments (e.g. staging, live). We use config transforms to ensure the correct config values are used for these environments.
Initially we used the free limited configurations for both Octopus and Team City but we have now switched to a paid license to enable multiple sites.
The Team City build occurs for us upon a check-in to the Staging branch in our Bitbucket git repository, which is approved via code review from a Tech QA via a pull request. This then triggers an automated deployment to the Staging environment.
We then promote the signed-off Staging release to the live environment through Octopus, which deploys the same package to the required environment. You can set up config values in Octopus for different environments and variable to use in config settings. In future we will using Feature Promotion instead of Environment Promotion for our support sites so that we can deploy Feature Branches from Staging to Live.
Once you've installed the Tentacles, Octopus is very straight-forward to use and I've had no real problems with Team City besides missing DLLs due to badly organised solutions. However, for my local environments, I would just use the built-in Visual Studio publish or even a deployment to a free Azure website for my own dev environment - again an option in VS 2013.