locked
Migrate intranet website from iis6/2003 to iis6/2008 RRS feed

  • Question

  • User1721307638 posted

    Hello,

    I recently purchased a new server running Windows 2008 and IIS 7.  I bought this server to replace our aging 2003/IIS6 box.  We have a large intranet site that I need to move over to the new box.  I am not an IIS expert by any means.  Is there a painless or semi-painless approach to doing this? 

     Thanks

    Tuesday, November 3, 2009 3:20 PM

Answers

  • User1912363967 posted

    One very simple step that would carry over all your settings, sites, content etc from the old server to the new one is given below. From the location where you have msdeploy installed run the following:

    msdeploy -verb:sync -source:webserver60 -dest:webserver60,computername=yournewiis7server  -whatif -verbose

    This command you have to run from your old w2k3 box. -whatif will make it NOT sync and It will show you the changes it will carry out when you actually sync. This way you can know what all will happen. When you are all set to go then you can run the command without the whatif switch and it should do the job for you. For this you need to have msdeploy installed on the destination server as well as the source. [If you dont have it on the destination then you can use tempAgent]

    Let us know if you need more information

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Tuesday, November 3, 2009 4:11 PM
  • User1912363967 posted

    webserver60 is a provider and not the computer name. You can read more about providers here. So if you are syncing from COMP1 to COMP2 and you are running this command from some other system (not one of these) then you would do it as follows:

    msdeploy -verb:sync -source:webserver60,computername=COMP1,username=<yourusername>,password=<yourpassword> -dest:auto,computername=COMP2,username=<yourusername>,password=<yourpassword>

    If you are logged in a user that has admin permissions on COMP1 and COMP2 then you dont need to specify the username and password.

    You either have to install msdeploy on all those servers and start the msdepsvc agent or if you dont have msdeploy installed on those servers then you dont need to and you can use tempAgent switch as follows: [As long as you have WMI allowed thru the firewall on those boxes]

    msdeploy -verb:sync -source:webserver60,computername=COMP1,tempAgent=true -dest:auto,computername=COMP2,tempAgent=true

    Let us know if you need more information.

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Wednesday, November 4, 2009 12:30 PM
  • User669824928 posted

    Hi Mike,

    On your IIS7 server, please check application pool used by your destination site and verify the .net framework version. By default, it's .net fx 2.0 on IIS7 Windows 2008.

     

     

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Monday, November 9, 2009 5:37 AM
  • User1912363967 posted

    This might be an issue with ACLS of the folders that the files reside in.

    By default we dont carry over the ACLS for you when you do a sync. But you can ask for the ACLS to be carried over as:

    msdeploy -verb:sync -source:webserver60,includeALCS=true -dest:auto,computername=name -verbose

    The includeACLS switch instructs that the ACLS of the files and fodlers be carried to the destination system.

    Let me know how this goes.

     

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Wednesday, November 11, 2009 2:21 PM

All replies

  • User1912363967 posted

    One very simple step that would carry over all your settings, sites, content etc from the old server to the new one is given below. From the location where you have msdeploy installed run the following:

    msdeploy -verb:sync -source:webserver60 -dest:webserver60,computername=yournewiis7server  -whatif -verbose

    This command you have to run from your old w2k3 box. -whatif will make it NOT sync and It will show you the changes it will carry out when you actually sync. This way you can know what all will happen. When you are all set to go then you can run the command without the whatif switch and it should do the job for you. For this you need to have msdeploy installed on the destination server as well as the source. [If you dont have it on the destination then you can use tempAgent]

    Let us know if you need more information

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Tuesday, November 3, 2009 4:11 PM
  • User1721307638 posted

    Moshaikh,

     Thanks for the quick reply.  Would I plugin the names of my servers under -source: and -dest: instead of webserver 60?  I know this seems pretty obvious, I just want to get it right.  I'm also concerned about some of the programs the website uses like a datepicker and spellchecker.  I guess I'll have to double-check the program to see where the references point.  I would also like to fine tune it once the swap is complete and working.  Any tips would be greatly appreciated.

     Thanks,

    Mike

    Wednesday, November 4, 2009 9:51 AM
  • User1912363967 posted

    webserver60 is a provider and not the computer name. You can read more about providers here. So if you are syncing from COMP1 to COMP2 and you are running this command from some other system (not one of these) then you would do it as follows:

    msdeploy -verb:sync -source:webserver60,computername=COMP1,username=<yourusername>,password=<yourpassword> -dest:auto,computername=COMP2,username=<yourusername>,password=<yourpassword>

    If you are logged in a user that has admin permissions on COMP1 and COMP2 then you dont need to specify the username and password.

    You either have to install msdeploy on all those servers and start the msdepsvc agent or if you dont have msdeploy installed on those servers then you dont need to and you can use tempAgent switch as follows: [As long as you have WMI allowed thru the firewall on those boxes]

    msdeploy -verb:sync -source:webserver60,computername=COMP1,tempAgent=true -dest:auto,computername=COMP2,tempAgent=true

    Let us know if you need more information.

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Wednesday, November 4, 2009 12:30 PM
  • User1721307638 posted

    Moshaikh,

    Once again, thanks for the great information!  I noticed you went from the "webserver60" provider to the "auto" provider for the destination server on this latest post.  We are going from a 2003/IIS6 box to a 2008/IIS7 box.  I read that you cannot use the "webserver60" provider going the other way, but it doesn't say anything about going this way.  Is there any significance to this provider change?

    Thanks,

    Mike

    Wednesday, November 4, 2009 12:51 PM
  • User1912363967 posted

    All auto does is it tells msdeploy to get the right provider for the destination based on the source provider. SO in this case it knows the source is a webserver60 so it will resolve to webserver60 for destination automatically.

    webserver60 is the provider you use from syncing from win2k3/WinXP to IIS07 or iis 7.5 and  for win2k3 to win2k3.

    For iis7 to iis7 (or 7.5 to 7.5) you use webserver provider.

     

    Wednesday, November 4, 2009 1:04 PM
  • User1721307638 posted

    Moshaikh,

    What would the command be to go from a 2003/IIS6 box to a Vista Ultimate 64/IIS7 box?

    Thanks,

    Mike

    Wednesday, November 4, 2009 1:05 PM
  • User1912363967 posted

    Same command as above. No difference. 

    msdeploy -verb:sync -source:webserver60,computername=COMP1,username=<yourusername>,password=<yourpassword> -dest:auto,computername=COMP2,username=<yourusername>,password=<yourpassword>

     The only time you will use webserver is when BOTH servers are iis7 or higher.

     

    Wednesday, November 4, 2009 2:56 PM
  • User1721307638 posted

    Moshaikh,

     Actually, the last post was asking about a migration from iis6/2003 to a iis7/Vista Ultimate 64 bit machine.  I don't know where the iis6/2003 to iis6/2008 came from.  I greatly appreciate the correspondence though.  This is valuable information.

    Anyway, when I perform this migration, does the IIS service need to be stopped on both servers or anything?  Can this be done while the source server is serving up web pages (live)?  Once again, I really appreciate your knowledge.

    Thanks,

    Mike

    Thursday, November 5, 2009 11:49 AM
  • User1721307638 posted

    Where do I find the msdepsvc agent to start?

    Thursday, November 5, 2009 1:58 PM
  • User1721307638 posted

    Okay, it is the Web Deployment Agent Service.  Sorry!

    Thursday, November 5, 2009 2:01 PM
  • User1721307638 posted

    Mashaikh,

     I ran the command with the whatif verbose switches and everything seems fine.  I have a couple of warnings though.

     Warning: The DependencyCheckInUse rule handler detected HttpRedirect. Use Windows Setup to install the component.

    Warning: The Dependency Check In Use Rule detected ASP.NET version v1.1. Make sure that ASP.NET is installed and configured with IIS on the destination.

    Any tips and/or thoughts on these warnings?

     Thanks,

    Mike

    Thursday, November 5, 2009 2:44 PM
  • User1912363967 posted

    MSDeploy does not install IIS components or dependencies for you. So the message is trying to tell you that you can go ahead with the sync but make sure that you install and / or configure the required components, modules etc on the target server

     

    Thursday, November 5, 2009 2:54 PM
  • User1721307638 posted

    Moshaikh,

    The only warning I'm not able to get rid of is the second one:

    Warning: The Dependency Check In Use Rule detected ASP.NET version v1.1. Make sure that ASP.NET is installed and configured with IIS on the destination.

    Exactly how do I check this one?  As far as I can see, ASP.NET is installed.  In Server Manager under Web Server (IIS) and Role Services directly under Application Development it is definitely installed.

    Thanks,

    Mike

    Thursday, November 5, 2009 3:45 PM
  • User-2064283741 posted

    You may have other issues going from Windows 2003 server/IIS6 to non-server Vista OS and IIS7. Vista the desktop OS is not designed as a server for websites.

    Thursday, November 5, 2009 8:32 PM
  • User669824928 posted

    Hi Mike,

    On your IIS7 server, please check application pool used by your destination site and verify the .net framework version. By default, it's .net fx 2.0 on IIS7 Windows 2008.

     

     

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Monday, November 9, 2009 5:37 AM
  • User1721307638 posted

    WenJun Zhang and/or Moshaikh,

     Okay, I have moved on to the real task at hand and migrating from 2003/iis6 to 2008/iis7.  I ran the web deployment tool successfully over the weekend.  I went through the file permissions and duplicated them on the new server.  I am getting a 500.19 error when I attempt to runt he website locally.  It references the web.config file as missing a 'name' attribute.  Here is the complete error message.

    HTTP Error 500.19 - Internal Server Error

    Calling LoadLibraryEx on ISAPI filter "C:\PHP\php5isapi.dll" failed

    Detailed Error Information:

    Module - IIS Web Core

    Notification - BeginRequest

    Handler - Not yet determined

    Error Code - 0x8007000d

    Config Error - Missing required attribute 'name'

    Config file - \\?       \C:\inetpub\wwwroot\DynaSystems\web.config

    Requested URL - http://localhost:80/Dynasystems

    Physical Path - C:\inetpub\wwwroot\Dynasystems

    Logon Method - Not yet determined

    Logon User - Not yet determined

    The error page goes on to reference the line in the web.config file where the error is.  This website runs fine on the original server.  Any ideas?

    Thanks,

    Mike

     

    Monday, November 9, 2009 1:38 PM
  • User1912363967 posted

    1. Do you have php installed and configured on the destination server? ( http://php.iis.net/ )

    2. Have you compared the web.config and other configs under DynaSystems are same on the source and destination?

     

    Monday, November 9, 2009 1:44 PM
  • User1721307638 posted

    Moshaikh,

    First of all, I'd like to thank you once again for the continued help on this migration.  I fixed the php error.  We have several sites that I migrated all at once.  I forgot that one of them uses php.  I simply copied the php directory over and the php error went away.  However, I am still gettting the web.config error for the attribute 'name.'  I'll take another look at the two web.config files and go from there.

    Thanks,

    Mike

    Monday, November 9, 2009 2:34 PM
  • User1721307638 posted

    Moshaikh,

    I have printed the two web.config files from the source and destination servers.  They are identical.  IIS7 is having an issue with a line of code under the <handlers> tag.  There is a line of code that starts with

     <add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler"/>

    All of the other lines under the handlers tag start with <add name> or <remove name>.  Here is the code for the handlers tag.

    <handlers>
       <remove name="WebServiceHandlerFactory-Integrated"/>
       <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
       <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
       <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                           <add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler"/>

      </handlers>

    The last line that begins with <add verb> is the issue.  Does IIS7 have a different requirement for this tag or something?  Because it works just fine on the old server.

    Thanks,

    Mike

    Monday, November 9, 2009 3:20 PM
  • User1721307638 posted

    Moshaikh,

    I removed the lines of code causing the problems after making a copy of it.  Now I am getting redirected to the old server when I type in the path to the local website on the server.  Here is the path that I type in:

    http://759-Gigantis/dynasystems

    It is then changed to http://759-Kumonga/dynasystems/dynasystems and bombs out of course.

    This must be a DNS issue here?  How can I run/test this thing locally without having to go live and screw up everything?

    Thanks,

    Mike

    Monday, November 9, 2009 3:39 PM
  • User-2064283741 posted

    Set up new dns/hosts entry and binding for the site and test it from there.

    Monday, November 9, 2009 4:49 PM
  • User1721307638 posted

    Rovastar,

    Hmmm, okay.  Like I said, I don't want this site live yet, so I am very hesitant to make any dns changes yet.  The bindings are set to the same as the original server with type = http, host name = blank, port = 80, ip address = *, binding information = blank.  I have never set bindings on a website before.  It seems pretty straightforward though.  I suppose I could change the host name until testing is finished though.  Any suggestions?

    Thanks,

    Mike

    Monday, November 9, 2009 5:32 PM
  • User1721307638 posted

    Moshaikh,

    I am getting real close to making this work.  The website is up and running.  Just a few little snafus left and I think we'll be good.  First of all, I have to type in the default home page (login.aspx) in the url to get the login page.  Also, when I try to access a file within the application in a directory, I get this error message:

    System.Runtime.InteropServices.COMException (0x800A13E9): There is insufficient memory. Save the document now. at Word.Documents.Add(Object& Template, Object& NewTemplate, Object& DocumentType, Object& Visible) at DataLayerClass.createRFILetter1(Boolean insertToFile, String RFINumber, String projectID, String rfiid, String Attention, String Company, String CostImpact, String DelayingJob, String DetailDesign, String DetailDesignRequired, String DiscussedWith, String DiscussedDate, String InformationRequested, String JobName, String JobNumber, String Response, String ResponseBy, String ResponseDate, String RfiBy, String RfiDate, String RfiNumber, String Subject, String ToName)

    I know the default home page will be easy, but I cannot figure out this file access problem.

    Thanks,

    Mike

     

    Wednesday, November 11, 2009 12:29 PM
  • User1721307638 posted

    Moshaikh,

    I fixed the default home page issue.  I'm just having the directory file access problem now.

    Thanks,

    Mike

    Wednesday, November 11, 2009 1:08 PM
  • User1912363967 posted

    This might be an issue with ACLS of the folders that the files reside in.

    By default we dont carry over the ACLS for you when you do a sync. But you can ask for the ACLS to be carried over as:

    msdeploy -verb:sync -source:webserver60,includeALCS=true -dest:auto,computername=name -verbose

    The includeACLS switch instructs that the ACLS of the files and fodlers be carried to the destination system.

    Let me know how this goes.

     

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Wednesday, November 11, 2009 2:21 PM
  • User1721307638 posted

    Moshaikh,

    I don't mean to be rude, but that would have been nice to have known beforehand.  I have already sync'd the sites.  If I run this again with the includeACLS switch, will the web deployment program just overwrite the existing files?  Thank you so much for the valuable information you've provided to date.

    Thanks,

    Mike

    Wednesday, November 11, 2009 3:59 PM
  • User-2064283741 posted

    Rovastar,

    Hmmm, okay.  Like I said, I don't want this site live yet, so I am very hesitant to make any dns changes yet.  The bindings are set to the same as the original server with type = http, host name = blank, port = 80, ip address = *, binding information = blank.  I have never set bindings on a website before.  It seems pretty straightforward though.  I suppose I could change the host name until testing is finished though.  Any suggestions?

    Thanks,

    Mike

    When depolying a site to a new box where an the site is already live you can setup additional host headers, etc or change you own host file on your local machien to force it to point to the new box.

    If you do the local host file only you will see the changes no other users are effected. Then you can test it to see what the issues are and tweak easily rather than waiting to go live changeover and when problems occur.

    Thursday, November 12, 2009 5:40 AM
  • User1721307638 posted

    Moshaikh and/or Rovastar,

    Thanks for the information.  Can I run the web deployment tool again with the ACLS switch without any problems, seeing as how I've already ran it without it?

    Thanks,

    Mike

    Thursday, November 12, 2009 1:57 PM
  • User1912363967 posted

    Yes you can run the tool again with the includeACLS switch but it will undo any changes that you might have done to your destination after the earlier sync.

    I would suggest syncing just the content folder in question with the includeACLS switch as this is the minimum risk and also run with whatif  for the first time to see what its doing without actually making any changes. Then when you see the changes are what you want run it again without the whatif switch

    For e.g if the offending application is in c:\inetpub\wwwroot\WebApps\OffendingApp I would :

    msdeploy -verb:sync -source:dirPath=C:\inetpub\wwwroot\webapps\offendingapp,includeACLS=true -dest:auto,computername=yourserver -whatif -verbose

    Let us know how this goes. Sorry for the inconvenience caused to you.

    Thursday, November 12, 2009 5:22 PM
  • User1549964609 posted

    Moshaikh,

    There is absolutely no need to apologize for anything.  You're expertise on this subject is greatly appreciated.  You have helped me out a lot and I am very grateful.  Thanks for the outstanding information and I'll let you know how i goes.

    Thanks,

    Mike

    Thursday, November 12, 2009 7:38 PM
  • User1549964609 posted

    Moshaikh,

    Once again, I thank you for all of your help on this topic.  I am this (" ") close to turning this new server over to the masses.  However, I cannot get my alias to work.  I deleted the old alias to the old server in DNS and created a new one to the new server and it is not working.  I flushed the dns cache on the DNS server and the workstation I'm using to test the website with and it is not working.  Any ideas?

    Thanks,

    Mike

    Saturday, November 28, 2009 1:49 PM
  • User1721307638 posted

    Moshaikh,

    Almost there.  When I try to run the application in Visual Studio on the new server to debug it, I get this error message in IE.  It appears VS is automatically generating a port number and it bombs with the 401.2 error.  If I take out the port number generated randomly by VS, it works.  How can I get around this problem?

    URL:  http://localhost:49732/DynaSystems/Admin/ChangeOrders

    Error message in IE:

    Access is denied.

    Server Error in '/DynaSystems' Application.

    Access is denied.

    Description: An error occurred while accessing the resources required to serve this request.  The server may not be configured for access to the requested URL.

    Error message 401.2: Unauthorized Logon failed due to server configuration. Verify that you have permission to view this directory or page based on the credentials you supplied and the authentication methods enabled on the web server. Contact the Web server's administrator for additional assistance.

    Version information: Micrososft .NET Framework Version 2.0.50727.3603; ASP.NET Version 2.0.50727.3601.

    Is something configured wrong in IIS?

     

    Thanks,

    Mike  

    Friday, December 4, 2009 2:47 PM