Удаленное развертывание в.NET Box
В течение многих лет я мог выполнять сборку с использованием системы непрерывной сборки, такой как Jenkins, а затем удаленно развертывать свои приложения на различных серверах Unix. Я могу использовать ssh
а также scp
команды, чтобы сделать мой торг.
Теперь у меня есть сборка.NET, которую я делаю. Я выполнил сборку с использованием Jenkins и теперь хочу развернуть ее на удаленном сервере.NET. Мне нужно закрыть приложение, скопировать файлы, а затем перезапустить приложение. Я должен быть в состоянии сделать это удаленно и с помощью инструментов командной строки (без инструментов с графическим интерфейсом). Я нахожусь на серии машин, которые заблокированы и не могут развернуть вещи, особенно на производственных машинах.
Существует ли механизм, который позволит мне удаленно завершить работу сервера, развернуть новый набор файлов и перезапустить приложение?
БОНУСНЫЙ ВОПРОС
Я понимаю что *.cab
файл чем-то похож на Java *.jar
файл. То есть вы можете развернуть один *.cab
файл на сервер, и сервер будет обрабатывать его, как если бы это был набор файлов в каталоге.
- Это правильно? Если это так, я бы хотел развернуть вещи, используя файл cab.
- E сть
webapp.config
файл, который является частью моей сборки, который отличается для каждого сервера. Я бы предпочел создать файл CAB, который не содержитwebapp.config
Таким образом, файл CAB-файла, который у меня есть, может быть развернут на любой машине без его изменения (необходимо изменить только файл webapp.config).
Спасибо
добавление
Я просто не могу победить...
У меня есть сборка на machine02, и мне нужно развернуть на machine06. Machine06 находится в демилитаризованной зоне, поэтому я не могу добавить в нее пользователя домена. Я могу создавать только локальные учетные записи.
С sc
Я могу получить доступ к удаленным системам, но у меня есть аккаунт sc
from также должен существовать в удаленной системе. Поскольку я не могу создать учетную запись домена на machine06 и не могу добавить локальную учетную запись компьютера в другую систему Windows (т. Е. Сделать machine06\user администратором на machine02), я не могу использовать sc
,
Я попробовал команды lp от Sysinternals. Они позволяют мне указать имя пользователя и пароль (который я предполагаю, что для другой системы. Однако, я получаю следующую ошибку:
C:\Windows\system32>pslist \\machine02 -user remuser02 -password Swordfish
pslist v1.29 - Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals
Cannot connect to remote registry on MACHINE02:
Access is denied.
Failed to take process snapshot on MACHINE02.
Make sure that the Remote Registry service is running on the remote system,
that you havefirewall ports allow RPC access, and your account has read
access the following key on the remote system:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Perflib
C:\Windows\system32>
Поскольку этот пользователь является администратором на machine02, я уверен, что у него есть доступ на чтение к разделу реестра Windows, и я проверил, что удаленный доступ к реестру включен. Я подозреваю, что маршрутизатор блокирует вызовы RPC.
Так, sc
отсутствует, поскольку я не могу указать учетную запись для использования. Инструменты Sysinternals PS отсутствуют. Я не могу добавить sshd
на сервере.
4 ответа
При развертывании веб-приложений до того, как я использовал vbscript и powershell плюс старый добрый xcopy (хотя я бы согласился, что robocopy, вероятно, является лучшей заменой копии).
Итак, пройдемся по требованиям - я думаю, что это то, что вы хотите сделать (это должно быть сделано из командной строки PowerShell):
get-service iisadmin -ComputerName TARGETMACHINE | Stop-Service -force
xcopy source dest
get-service iisadmin -ComputerName TARGETMACHINE | Start-Service
Я бы не использовал *.cab, если бы вы не хотели сжатия для передачи файлов, тогда я бы использовал *.zip файл. Я не верю, что между ними есть какая-то реальная разница, но в общем случае *.cab файлы используются в развертываниях MSI.
Лично, если у вас нет кого-то, кто хорошо разбирается в версиях MSI, я не думаю, что MSI следует использовать для развертывания файлов на веб-сервере. И даже если кто-то это понял, мне все равно нравится, что он полезен только для отслеживания того, что установлено, где можно добиться разными способами, избегая автообновления и т. Д.
Поскольку это IIS, вы можете удалить временные файлы asp.net, пока веб-сайт не работает.
Я сделал предположение (из тегов), что это веб-приложение, следовательно, iisadmin в коде. Это будет одинаково работать с любым сервисом.
HTH, Мэтт
Я вижу, вы уже приняли ответ, но я подумал, что добавлю это, потому что, возможно, это будет полезно для кого-то еще:
Вы также можете использовать PsTools. Он позволяет удаленно выполнять команды, останавливать и запускать службы, копировать файлы и т. Д. (Установка на целевом хосте не требуется).
Вы можете использовать netsvc.exe для остановки и запуска службы IIS на удаленной машине.
SYNTAX: NETSVC servicename \\computername /start (or /stop)
Возможно, вы хотите попробовать версию SSH-сервера для Windows? Например, http://mobassh.mobatek.net/. Как обычно, бесплатная версия имеет меньше функций, но если вы можете выполнять команды удаленно, вы можете выполнять задачи по развертыванию.