Подтвердить что ты не робот

(MSDeploy) Развертывание содержимого папки на удаленном сервере IIS

Можно ли развернуть содержимое папки (простые файлы Html) на конкретное веб-приложение на удаленном сервере IIS6/7?

Следующая команда не вызывает ошибку, но также не публикует файлы на удаленном сервере:

 msdeploy.exe -verb:sync -source:dirPath="c:\myHtmlFiles" -dest:auto,ComputerName="http://deploy.mycompany.co.uk/msdeploy?site=TestSite",includeAcls="false",username="administrator",password="myPassword" -enableRule:DoNotDeleteRule -disableLink:AppPoolExtension -disableLink:ContentExtension -allowUntrusted

Примечание:

  • WebDeploy правильно установлен на целевом сервере и успешно работает с пакетами, созданными из сценариев msbuild для проектов .NET.
  • 'http://deploy.mycompany.co.uk/msdeploy' является правильным для конечной точки прослушивания.
  • Строка запроса '? site = TestSite' была предложена в другом месте, но не работает.
  • Веб-приложение "TestSite" существует на целевом сервере.
  • Файлы параметров и -setParam не работают и отображают ошибки, связанные с источником, не поддерживающим параметр "IIS Web Application Name", если вы пытаетесь установить, объявить или предоставить его.
4b9b3361

Ответ 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. Значения, которые я буду использовать, следующие:

Все эти значения можно найти в файле .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. Это даст мне краткое изложение того, какие операции будут без каких-либо изменений. Когда я это сделаю, результат будет показан на изображении ниже.

msdeploy result

После того как я проверил, что изменения все намеренно, я удалил –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$'