(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", если вы пытаетесь установить, объявить или предоставить его.

1 ответ

Я только что написал сообщение в блоге, чтобы ответить на это в http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspx. Судя по вашему вопросу, вы, похоже, довольно хорошо знакомы с MSDeploy, поэтому ответ может быть немного многословным, но я хотел, чтобы люди с меньшими знаниями MSDeploy могли его понять. Я вставил ответ ниже.

Web Deploy (также известный как MSDeploy) использует модель провайдера, и существует множество доступных провайдеров из коробки. Чтобы дать вам пример некоторых из поставщиков; при синхронизации веб-приложения IIS вы будете использовать iisApp, для пакета MSDeploy вы будете использовать пакет, для веб-сервера веб-сервера и т. д. Если вы хотите синхронизировать локальную папку с удаленным путем IIS, то вы можете использовать поставщика contentPath. Вы также можете использовать этот поставщик для синхронизации папки с одного сайта на другой сайт.

Общая идея того, что мы хотим сделать в этом случае, заключается в синхронизации папки с вашего компьютера с вашим веб-сайтом IIS. Вызов msdeploy.exe может быть немного многословным, поэтому давайте создадим команду по одному шагу за раз. Мы будем использовать шаблон ниже.

msdeploy.exe -verb:sync -source:contentPath="" -dest:contentPath=""

Мы используем глагол sync для описания того, что мы пытаемся сделать, а затем используем провайдера contentPath для источника и назначения. Теперь давайте заполним, какими должны быть эти значения. Для исходного значения вам нужно будет указать полный путь к папке, которую вы хотите синхронизировать. В моем случае файлы находятся в C: \ temp \ files-to-pub. Для значения dest вы укажите путь к папке в виде пути IIS. В моем случае веб-сайт, с которым я синхронизируюсь, называется sayedupdemo, поэтому я хочу синхронизировать путь IIS ' sayedupdemo / files-to-pub '. Теперь это даст нам.

msdeploy.exe –verb:sync -source:contentPath="C:\temp\files-to-pub" -dest:contentPath='sayedupdemo/files-to-pub'

Для значения dest мы не указали никаких параметров, указывающих, на какой сервер эти команды должны быть отправлены. Нам нужно будет добавить эти параметры. Параметры, которые обычно должны быть переданы:

  • ComputerName - это URL или имя компьютера, которые будут обрабатывать операцию публикации
  • Имя пользователя - имя пользователя
  • Пароль - пароль
  • AuthType - тип authType, который будет использоваться. Либо NTLM, либо Basic. Для WMSvc это обычно Basic, для Remote Agent Service это NTLM

В моем случае я публикую на веб-сайте 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 результат

После того как я убедился, что все изменения сделаны преднамеренно, я удалил –whatif и выполнил команду. После этого локальные файлы были опубликованы на удаленном сервере. Теперь, когда я синхронизировал файлы, которые публикуются после публикации, это приведет к публикации только измененных файлов.

Если вы хотите узнать, как записать отдельный файл, вы можете посмотреть мой предыдущий пост в блоге Как отключить ваше веб-приложение во время публикации.

Адресат: авто

В вашем случае я отметил, что вы используете 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$'
Другие вопросы по тегам