![将 Windows 服务从一台服务器迁移到另一台服务器的方法](https://linux22.com/image/589152/%E5%B0%86%20Windows%20%E6%9C%8D%E5%8A%A1%E4%BB%8E%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%81%E7%A7%BB%E5%88%B0%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%96%B9%E6%B3%95.png)
我正在设置一个临时服务器来测试某些关键软件(WebSphere 上的 IBM Rational Team Concert)的升级。我无法重新安装该应用程序,因为我没有原始安装期间使用的所有信息和配置,所以我的计划是复制必要的文件夹并复制服务。我找不到任何可以让我导出服务定义并将其导入另一台机器的东西。
Websphere 在 HKLM\CurrentControlSet\Services\Websphere 注册条目周围和下方使用了一些额外的键,但在注册表中没有使用任何其他键。
我目前的计划是
- 使用 sc create(使用相同的服务名称)在目标上创建新服务
- 从源导出 HKLM\CurrentControlSet\Services\Websphere
- 将上面的注册表项导入到目标上
- 启动服务
有人能看到这种方法的问题吗?或者推荐一种工具来解决这个问题?
答案1
以下是我将我们的实时 RTC 和 RQM 服务器克隆到暂存环境中的步骤,以防这适用于其他人:
将所有包含 RTC/RQM/WebSphere 的文件夹复制到目标计算机上,保持路径不变。在我们的例子中,路径
c:\program files\IBM
是c:\program files(x86)\IBM
创建与源计算机上的 WebSphere 服务同名的服务(我们有一个用于 RQM 的服务,一个用于 RTC 的服务。我使用了
sc create "IBMWAS70Service - SERVERNode01" binpath=c:\path\to\any\exe
从源机器导出
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\IBMWAS70Service - SERVERNode01
。您需要执行此操作每项服务你有。将这些注册表文件导入到目标机器上
我们的源服务器已设置了一个名为 的系统环境变量,
ORACLE_JDBC
该变量指向包含 的文件夹ojdbc14.jar
。在目标上重新创建此变量。此路径也在系统PATH
环境变量中,因此我也将其添加到那里。删除
c:\windows\temp\_jazz*
和c:\windows\temp\_.com_ibm*
文件夹。我们将所有数据库合并为一个具有不同架构的数据库。当我们尝试启动 RTC 和 RQM 时,这会导致锁定错误。这是因为两个程序共享同一个临时文件夹。我编辑了 server.xml (at
\WebSphere\AppServer1\profiles\AppSrv01\config\cells\SERVERNode02Cell\nodes\SERVERNode02\servers\server1
)。我将其添加到 java 属性部分,靠近server.xml
<systemProperties xmi:id="olm_stage1" name="java.io.tmpdir" value="c:/temp" required="false"/>
编辑
c:\windows\system32\drivers\etc\hosts
并创建 DB 服务器的条目(指向暂存 DB 服务器)以及 rtc 和 rqm 地址(指向暂存机器本身)启动服务