多年来,我已经能够使用像Jenkins这样的连续构建系统进行构建,然后将我的应用程序远程部署到各种 Unix 服务器。我可以使用ssh
和scp
命令进行出价。
现在,我正在进行.NET构建。我已经使用Jenkins完成了构建,现在想要部署到远程.NET服务器。我需要关闭应用程序,复制文件,然后重新启动应用程序。我需要能够通过命令行工具远程执行此操作(无GUI工具)。我在一系列被锁定的机器上,不能无情地部署 - 特别是生产机器。
是否有一种机制可以让我远程关闭服务器,部署一组新文件,然后重启应用程序?
我理解*.cab
文件有点类似于Java *.jar
文件。也就是说,您可以将单个*.cab
文件部署到服务器,服务器会将其视为目录中的一堆文件。
webapp.config
文件,每个服务器都有所不同。我更喜欢创建一个不包含webapp.config
文件的cab文件,这样,我可以将cab文件部署到每台机器而不更改它(只需要更改webapp.config文件) 。 由于
我无法赢...
我有一台on machine02,我需要部署到machine06。 Machine06在DMZ中,因此我无法在其上添加域用户。我只能创建本地帐户。
使用sc
,我可以访问远程系统,但我正在运行sc
的帐户也需要存在于远程系统上。由于我无法在machine06上创建域帐户,并且我无法将计算机本地帐户添加到另一个Windows系统(即,使machine06 \ user也成为machine02上的管理员)。,我无法使用{{1} }。
我尝试了来自Sysinternals的lp命令。这些允许我指定用户名和密码(我假设是为其他系统。但是,我收到以下错误:
sc
由于该用户是machine02上的管理员,我确信该用户具有对Windows注册表项的读取权限,并且我确认已启用远程注册表访问。我怀疑路由器阻止了RPC调用。
所以,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>
已经出局,因为我无法指定要使用的帐户。 Sysinternals PS工具已经发布。我无法在服务器上添加sc
。
答案 0 :(得分:2)
在我使用vbscript和powershell以及老式的xcopy之前部署Web应用程序时(虽然我同意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将文件部署到Web服务器。即使有人确实理解了它,我仍然喜欢它只对跟踪安装的地方有用,可以通过多种方式实现,同时避免自动更新等...
因为它是IIS,你可以在网站关闭时删除临时的asp.net文件。
我已经假设(来自标签)这是一个Web应用程序,因此iisadmin在代码中。这同样适用于任何服务。
HTH, 马特
答案 1 :(得分:1)
您可以使用netsvc.exe来停止和启动远程计算机上的IIS服务
SYNTAX: NETSVC servicename \\computername /start (or /stop)
答案 2 :(得分:1)
我看到你已经接受了答案,但我想我会加上这个,因为这可能对其他人有用:
您也可以使用PsTools。它允许您远程执行命令,停止和启动服务,复制文件等(目标主机上无需安装)。
答案 3 :(得分:0)
也许您想尝试Windows版本的SSH服务器?例如http://mobassh.mobatek.net/。像往常一样,免费版本的功能较少,但如果您能够远程执行命令,则可以执行部署任务。