Проблемы синхронизации msdeploy
У меня 4 сервера Windows 2008 R2. 3 веб-сервера IIS 7.5 и 1 сервер sql / общий файловый сервер. Я настроил первый веб-сервер в точности так, как хотел, а затем использовал эту команду msdeploy для синхронизации конфигурации с двумя другими веб-серверами.
msdeploy -verb:sync -source:webserver,computername=http://www1.server.com:8080/MSDeploy -dest:webserver,computername=http://www2.server.com:8080/MSDeploy
msdeploy -verb:sync -source:webserver,computername=http://www1.server.com:8080/MSDeploy -dest:webserver,computername=http://www3.server.com:8080/MSDeploy
Это успешно подтолкнуло конфиг на другие веб-серверы. Они работают, за исключением того, что они не могут подключиться к виртуальным каталогам, которые я настроил. Если я запустил синхронизацию во второй раз, вы увидите, что он пропускает виртуальные каталоги (даже если он действительно создает их на целевой машине)
Info: Using ID 'd9baab2a-4798-4760-8e09-24558cf6edd4' for connections to the remote server.
Info: Using ID 'e5389a2a-6925-425a-8d2c-fa8d8ae00727' for connections to the remote server.
Warning: Skipping source dirPath (\\server\Upload) because of rule SkipInvalidSource.
Could not find directory '\\server\Upload'.
Warning: Skipping source dirPath (\\server\FileSystem) because of rule SkipInvalidSource.
Could not find directory '\\server\FileSystem'.
Warning: Skipping source dirPath (\\server\Configuration) because of rule SkipInvalidSource.
Could not find directory '\\server\Configuration'.
Warning: Skipping source dirPath (\\server\SharedContent) because of rule SkipInvalidSource.
Could not find directory '\\server\SharedContent'.
Info: Object configProtectedData (MSDeploy.webServer/webServer/appHostConfig[@path='']/location[@path='']/section[@name='configProtectedData']/configProtectedData) skipped due to skip directive 'ConfigProtectedData'.
Info: Object configProtectedData (MSDeploy.webServer/webServer/machineConfig32[@path='/']/location[@path='']/configProtectedData) skipped due to skip directive 'ConfigProtectedData'.
Info: Object configProtectedData (MSDeploy.webServer/webServer/machineConfig64[@path='/']/location[@path='']/configProtectedData) skipped due to skip directive 'ConfigProtectedData'.
Info: Using ID '231d358c-292f-435d-8026-3158d8ed5c6b' for connections to the remote server.
Warning: Skipping source dirPath (\\server\Upload) because of rule SkipInvalidSource.
Could not find directory '\\serverl\Upload'.
Warning: Skipping source dirPath (\\server\FileSystem) because of rule SkipInvalidSource.
Could not find directory '\\serverl\FileSystem'.
Warning: Skipping source dirPath (\\server\Configuration) because of rule SkipInvalidSource.
Could not find directory '\\server\Configuration'.
Warning: Skipping source dirPath (\\server\SharedContent) because of rule SkipInvalidSource.
Could not find directory '\\server\SharedContent'.
Info: Object configProtectedData (MSDeploy.webServer/webServer/appHostConfig[@path='']/location[@path='']/section[@name='configProtectedData']/configProtectedData) skipped due to skip directive 'ConfigProtectedData'.
Info: Object configProtectedData (MSDeploy.webServer/webServer/machineConfig32[@path='/']/location[@path='']/configProtectedData) skipped due to skip directive 'ConfigProtectedData'.
Info: Object configProtectedData (MSDeploy.webServer/webServer/machineConfig64[@path='/']/location[@path='']/configProtectedData) skipped due to skip directive 'ConfigProtectedData'.
Total changes: 0 (0 added, 0 deleted, 0 updated, 0 parameters changed, 0 bytes copied)
Мне нужно получить два других сервера, чтобы они могли подключаться к виртуальным каталогам. Я попытался повторно ввести учетные данные для виртуального каталога, удалив виртуальный каталог и настроив его вручную, удалив весь сайт и настроив его вручную. Все эти вещи терпят неудачу. Это почти как msdeploy сломал мою установку IIS. Я провел сравнение в каталоге сайта в системах, и они идентичны. Я сравнил c:\Windows\System32\inetsrv\config\applicationHost.config, и они идентичны, за исключением хешированных паролей для виртуальных каталогов.
Установки IIS говорят, что у них установлены одинаковые службы ролей.
Самая большая подсказка для решения этой проблемы - журнал ошибок приложения. Два неработающих сервера выдают это предупреждающее сообщение при компиляции сайта. Он ищет файл web.config в виртуальном каталоге. Это наводит меня на мысль, что виртуальный каталог на самом деле является приложением. Нигде не вижу этого в настройках конфигурации.
Event code: 3008
Event message: A configuration error has occurred.
Event time: 1/21/2013 4:28:46 PM
Event time (UTC): 1/21/2013 9:28:46 PM
Event ID: 036c3591338f4f84aaac84e68c4f7753
Event sequence: 35
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-2-130032773103912852
Trust level: Full
Application Virtual Path: /
Application Path: D:\sites\server.com\
Machine name: S615516NJ3VW02
Process information:
Process ID: 4136
Process name: w3wp.exe
Account name: IIS APPPOOL\server.com
Exception information:
Exception type: ConfigurationErrorsException
Exception message: An error occurred loading a configuration file: Failed to start monitoring changes to '\\server\Upload' because access is denied. (\\server\Upload\web.config)
Request information:
Request URL: http://www2.server.com/Upload/Flash/history.swf
Request path: /Upload/Flash/history.swf
User host address: xxx.xxx.xx.35
User:
Is authenticated: False
Authentication Type:
Thread account name: IIS APPPOOL\server.com
Thread information:
Thread ID: 6
Thread account name: IIS APPPOOL\server.com
Is impersonating: False
Stack trace: at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey, Boolean getLkg, Boolean checkPermission)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Web.Configuration.RuntimeConfig.GetSectionObject(String sectionName)
at System.Web.Configuration.RuntimeConfig.GetSection(String sectionName, Type type, ResultsIndex index)
at System.Web.Configuration.RuntimeConfig.get_Identity()
at System.Web.HttpContext.SetImpersonationEnabled()
at System.Web.HttpApplication.AssignContext(HttpContext context)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
Спасибо за вашу помощь в устранении неполадок.
2 ответа
Мой случай, возможно, проще: я поместил команду msdeploy в неправильное окно RDP, и приложение попыталось передать данные себе.
Это тяжелая пятница тяжелой недели.
Я исправил это сам. MSDeploy полностью испортил целевую установку IIS. Я провел сравнение файлов, и все было идентично между источником и целью, но у меня все еще была проблема. Я удалил и переустановил IIS. Это заставило IIS работать снова. Затем я нашел статью ниже о опции -disableLink. -disableLink:ContentExtension говорит ему не синхронизировать виртуальные каталоги. Этот переключатель выигрывает "неочевидную" награду...