Ответ 1
Я только что написал сообщение в блоге, чтобы ответить на это http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspx. Из вашего вопроса, похоже, вы хорошо знакомы с MSDeploy, поэтому ответ может быть немного подробным, но я хотел, чтобы люди с меньшим знанием MSDeploy могли понять. Я вставил ответ ниже.
Web Deploy (также известный как MSDeploy) использует модель поставщика и есть большое количество поставщиков, доступных из коробки. Чтобы привести пример некоторых поставщиков; при синхронизации веб-приложения IIS вы будете использовать iisApp, для пакета MSDeploy вы будете использовать пакет для веб-сервера webServer и т.д. Если вы хотите синхронизировать локальную папку с удаленным IIS-каналом, вы можете использовать contentPath. Вы также можете использовать этот провайдер для синхронизации папки с одного веб-сайта на другом веб-сайте.
Общая идея того, что мы хотим сделать в этом случае, - синхронизировать папку с вашего ПК на ваш веб-сайт IIS. Вызовы в msdeploy.exe могут быть немного подробными, поэтому давайте построим команду на один шаг в момент времени. Мы будем использовать шаблон ниже.
msdeploy.exe -verb:sync -source:contentPath="" -dest:contentPath=""
Мы используем глагол sync для описания того, что мы пытаемся сделать, а затем используйте поставщик contentPath как для источника, так и для dest. Теперь давайте заполнить те значения, которые должны быть такими. Для исходного значения вам нужно будет пройти полный путь к папке, которую вы хотите синхронизировать. В моем случае файлы находятся в папке C:\temp\files-to-pub. Для значения dest вы укажете путь к папке как путь IIS. В моем случае веб-сайт, на котором синхронизируется Im, называется sayedupdemo, поэтому путь IIS, который я хочу синхронизировать, - это sayedupdemo/files-to-pub. Теперь дайте нам.
msdeploy.exe –verb:sync -source:contentPath="C:\temp\files-to-pub" -dest:contentPath='sayedupdemo/files-to-pub'
Для значения dest нам не заданы какие-либо параметры, указывающие, к какому серверу должна быть отправлена эта команда. Нам нужно будет добавить эти параметры. Параметры, которые обычно должны быть переданы, являются.
- Имя_компьютера - это имя URL-адреса или компьютера, которое будет обрабатывать операцию публикации
- Имя пользователя - имя пользователя
- Пароль - пароль
- AuthType - authType, который будет использоваться. Либо NTLM, либо Basic. Для WMSvc это обычно Basic, для службы удаленных агентов это NTLM
В моем случае Im опубликовано на веб-сайте Windows Azure. Значения, которые я буду использовать, следующие:
- Имя_компьютера: https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo
- Имя пользователя: $sayedupdemo
- Пароль: thisIsNotMyRealPassword
- AuthType: Basic
Все эти значения можно найти в файле .publishSettings(можно загрузить с панели инструментов веб-сайта из WindowsAzure.com). Для значения ComputerName вам нужно будет добавить имя своего сайта, чтобы получить полный URL. В приведенном выше примере я вручную добавил ?site=sayedupdemo
, это то же имя, что показано на портале Azure. Итак, теперь у нас есть команда.
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
ОК, мы почти там! В моем случае я хочу убедиться, что я не удаляю файлы с сервера во время этого процесса. Поэтому я также добавлю –enableRule:DoNotDeleteRule
. Итак, наша команда теперь.
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
В этот момент, прежде чем выполнить эту команду, я сначала выполнил ее, пропустив –whatif
. Это даст мне краткое изложение того, какие операции будут без каких-либо изменений. Когда я это сделаю, результат будет показан на изображении ниже.
После того как я проверил, что изменения все намеренно, я удалил –whatif
и выполнил команду. После этого локальные файлы были опубликованы на удаленном сервере. Теперь, когда я синхронизировал файлы, опубликованные после этого, это приведет к публикации только измененных файлов.
Если вы хотите научиться snyc отдельному файлу, вы можете увидеть мое предыдущее сообщение в блоге. Как отключить веб-приложение во время публикации.
Адресат: авто
В вашем случае я заметил, что вы использовали dest:auto
, вы можете использовать это, но вам нужно будет передать имя приложения IIS в качестве параметра и заменит путь к папке. Ниже приведена команда.
msdeploy.exe
-verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:auto
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
-setParam:value='sayedupdemo',kind=ProviderPath,scope=contentPath,match='^C:\\temp\\files-to-pub$'