Did a full setup of TrinityCore 6.x now a few times and I feel like there are easy ways and hard ways to do things. Knowing what I know now, here is how I would do it in the future:
Linux server with a virtualized guest application system and a separate virtualized guest mysql server. This has been good for performance and tweaks and makes it much easier to scrap and rebuild sections of the system without having to redo the whole thing. Backups are a cinch. One lesson learned is not to declare the number of processors on the virtual server while compiling (make). Virtualizing the application system means I can also just leave it at the TC prompt and access it through Xen console as necessary.
Set aside an old laptop that can run the client at bare minimum with a matching architecture to my game machine. Compile Trinity there for the tools and create the patcher locally and patch locally. I had a TON of problems trying to build and apply the patch on my main games machine. Missing and unregistered dll’s, patch errors (0xc7000…), file permissions… I also do not want my main games machine to be bloated out with all the prereqs for compiling. I originally virtualized a win7 system to do this but you can’t install the client there because it cannot properly detect an acceptable graphics processor to do it.
Share out the client directory on the laptop and mount it on the application server for easy access to the maps, etc.