【发布时间】:2011-06-17 20:56:57
【问题描述】:
多年来,我一直能够使用像 Jenkins 这样的持续构建系统进行构建,然后将我的应用远程部署到各种 Unix 服务器。我可以使用ssh 和scp 命令进行竞标。
现在,我正在构建一个 .NET。我已经使用 Jenkins 完成了构建,现在想部署到远程 .NET 服务器。我需要关闭应用程序,复制文件,然后重新启动应用程序。我需要能够通过命令行工具(无 GUI 工具)远程执行此操作。我在一系列被锁定的机器上,无法随意部署东西——尤其是到生产机器上。
是否有一种机制可以让我远程关闭服务器、部署一组新文件并重新启动应用程序?
奖金问题
我知道*.cab 文件有点类似于Java *.jar 文件。也就是说,您可以将单个*.cab 文件部署到服务器,服务器会将其视为目录中的一堆文件。
- 这是正确的吗?如果是这样,我想使用 cab 文件进行部署。
- 有一个
webapp.config文件是我构建的一部分,对于每台服务器都不同。我更喜欢创建一个不包含webapp.config文件的 cab 文件,这样,我拥有的 cab 文件可以部署到每台机器而无需更改(只需更改 webapp.config 文件)。
谢谢
附录
我就是赢不了……
我在 machine02 上有一个构建,我需要部署到 machine06。 Machine06 位于 DMZ 中,因此我无法在其上添加域用户。我只能创建本地帐户。
使用sc,我可以访问远程系统,但我运行sc 的帐户也需要存在于远程系统上。由于我无法在 machine06 上创建域帐户,并且我无法将计算机本地帐户添加到另一个 Windows 系统(即,将 machine06\user 也设为 machine02 上的管理员)。我无法使用sc。
我尝试了 Sysinternals 的 lp 命令。这些允许我指定用户名和密码(我假设这是用于其他系统的。但是,我收到以下错误:
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。
【问题讨论】:
-
只是想知道您为什么不使用 powershell?
-
@Matt:我真的不知道 powershell。 Powershell 是否允许我在远程系统上运行命令?如果远程系统上没有 Powershell 怎么办?或者,Powershell 现在是否在 Windows 系统上?
-
@David-W 是的,PowerShell 是 Windows 的脚本工具。 v1 有一些可以使用远程调用的命令(下面 get-service 上的计算机名参数),v2 有远程处理(类似于 ssh)。你在盒子上运行什么操作系统?
-
您应该可以通过在运行框或命令提示符中键入“powershell”(不带引号)从构建服务器试用 powershell。
-
刚刚检查过,Powershell 在服务器上。帮助中没有关于远程命令的内容,而是在网上找到的资料。我想说你已经回答了我的问题,但你没有提供官方答案。很难将其标记为“接受”。无论如何,我需要先对其进行测试,然后才能做任何事情。谢谢。
标签: .net iis deployment web-deployment-project