Last week I completed (after 4 attempts) an Internet-facing TFS 2008 deployment. All the hard effort was certainly worth it as I'm now using TFS 2008 for some personal projects and I've got a demo server that will allow me to show others the benefits of Microsoft's Team Foundation Server 2008. Without further delay, let's jump right into the installation!
First, I attempted to install TFS 2008 without reading the installation guide. I wouldn't recommend anyone do this, so please learn from my mistake. I built a Windows Server 2008 (64-bit) VM from the ground up, installed SQL Server 2008 and configured IIS 7. When I went to insert the TFS DVD into the drive and go install, low-and-behold, I learned that the TFS application tier isn't currently supported on 64 bit operating systems. This was completely my goof, and I've kept the Windows Server installation configured as a sandbox for other test projects. We'll consider this attempt number 1.
For attempt #2, I decided to ditch Windows Server 2008 for this install altogether. Now that I had a 64-bit Windows 2008 sandbox server configured, I didn't have a compelling reason to try Windows Server 2008 for TFS, and apparently it only adds some additional installation steps anyway. For my second attempt, I decided to clone an existing 32-bit Windows Server 2003 installation that already had IIS 6 configured and simply install SQL Server 2005 and TFS on top. So, I did. After installing SQL Server 2005 I realized I hadn't changed the SID on the new clone, so I used NewSID to do so. As it turns out, you don't want to change the SID after installing SQL Server. I wasn't able to install Service Pack 2, or un-install SQL Server afterwards. So, I had a brick for an image, let's call this attempt number 2, and start again.
For attempt #3, I changed the SID before the SQL Server 2005 installation and was able to install the service pack. A little exhausted from all this work, I went on to make some lunch. In my hate, I hadn't set a "sa" password during my SQL installation, and forgot that this server was exposed to the Internet. Wouldn't you know in the hour and half break I took, the server had already been compromised and over 6 different worms had been installed. Pasky little buggers those worms, so I scrapped the image once again and moved on to attempt #4.
Up until now, all the TFS installation pains I had were really my fault. I didn't read the install guide, hadn't considered the implications of changing the SID after SQL installation and got careless with security. Determined to correct these silly user errors, I set out one more time to build my TFS 2008 server image. This time, I was able to complete the TFS 2008 server installation. I also installed Team Build. With security in mind, I created 2 different user accounts (TFSService and TFSReports) responsible for managing the TFS and SSRS services. Everything was going well until I checked the event log. Errors and errors were preventing me from successfully creating a Team Project using Team Explorer. Here's the rundown:
- Error messages from ASP.Net about not being able to get the private byte memory limit for the W3WP process. Turns out this is a result of the cloning process not successfully changing SIDs for all the ASP.Net keys. Thanks to "Joe unfiltered" and this post for providing a resolution.
- "Team Project Creation Failed" error message that appears when trying to create a new Team Project. This was caused as a result of the improper permissions on the folder:
%AllUsers%\Application Data\Microsoft\Crypto\RSA\MachineKeys
This folder (and it's subfolders) must have Full Control for "Everyone". Thanks to this forum post for identifying the problem/solution. - Still can't create a project? I couldn't, because I was using a fully qualified domain name (FQDN) as my server from an outside network. Turns out, everything's coded to the NetBIOS name of the server (how deliciously archaic) and you have to change these values. Thankfully, this is much easier in TFS 2008 than it was in TFS 2005. Check out this blog entry By Buck Hodges for the details.
After doing these 3 things, I could not connect to my TFS server and create a new project. Source Control works, WSS works, SSRS works! Time to install Service Pack 1. Unfortunately, I had some hang-up's there, too:
- I got a cryptic error when installing the service pack, "There is a problem with this Windows Installer package. Please refer to the setup log for more information." Ever actually read one of those .MSI installer logs? Turns out, the FQDN issue noted above was causing problems with the installation of TFS, as the TFS setup couldn't use WMI to connect to the server anymore because of it's FQDN. Time to use the TfsAdminUtil to change the server name to it's NetBIOS name, then do the install, then use the TfsAdminUtil to change it back. This procedure was sort of indicated in this forum post, which gave me the right inspiration.
- At this point I now had the SP1 installation complete, but couldn't connect to my TFS server anymore. If you're getting 403 (Forbidden) errors, read this blog post a solution.
Finally, I had my dazzling TFS server with Service Pack 1 installed (which I promptly took a snapshot of). Now I was ready to install the awesome TFS Web Access. This installation went fairly well, with one exception:
- Turns out, you can't install TFS web access as a virtual directory underneath an existing WSS 3.0 web site. This limitation stinks, and the installer won't warn you about it either. Instead, you'll get a crytic SecurityException when you attempt to access the Web Access URL. This forum post explains it all. The solution is to uninstall web access, and re-install it under a new IIS website.
And there you have it! This is a chronicle of my TFS 2008 install experience. I'm going to be doing a server upgrade from TFS 2005 to TFS 2008 next week, which I imagine will yield more interesting results, so you can expect a follow-on post. What's most important to say is, despite all these installation headaches, I'm still entirely in love with TFS as a product.
7695f06f-1ada-47e3-bf06-2bf66935754f|0|.0
Development
tfs, visual studio 2008, tips and tricks, vsts