B/S系统远程部署项目的方法和装置
技术领域
[0001] 本发明涉及计算机通信技术,尤其涉及B/S系统的远程安装部署的方法和装置。 背景技术
[0002] 一些大型企业或公司因为业务需要,如ISP(Internet service Provider, ^ternet服务提供商)等,拥有大量成批购置的计算机节点或机群系统。这些节点或系统分别布置在物理上完全独立的机房内,一般通过广域网连接。用户对这些计算机设备在采购之后使用周期内主要做的是维护工作,包括在计算机设备上进行系统安装、应用部署、系统升级、故障恢复以及日常管理等。如果这些工作由人工完成,多台系统的逐一部署需要人员现场解决问题,需要高昂的人力保障和时间代价。因此,为了减少机群系统的维护开支, 实现了一个远程部署系统,从而在广域网环境下管理大规模的计算机应用系统。
[0003] 在现有技术中,远程安装部署通常有两种做法:
[0004] 一是通过操作系统的远程桌面进行本地安装部署。通过远程桌面,部署人员相当于直接操作远程计算机进行部署操作。这种方法虽然不需要人员现场解决问题,但是维护人员需要通过远程桌面逐一对远程的每个计算机进行安装、维护工作,仍然会耗费大量的人工和时间,效率低,并且一些系统安装或软件包升级的人工操作容易出现失误,导致系统性故障。
[0005] 另一种方法则是通过编写应用服务器中间件的安装脚本进行远程部署,该方法利用应用服务器中间件提供的安装部署功能,通过脚本将B/S (Browser/Server,浏览器/服务器)应用系统远程部署到应用服务器中间件。
[0006] 例如,通过脚本将B/S应用系统远程部署到应用服务器中间件WAS的具体方法如下,对于其他应用服务器中间件,如WebL0gic(—种用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器)>Tomcat等,方法与功能都基本一致:
[0007] WAS提供了一个名为wsadmin的命令行管理工具,可以使用它以交互方式或 fflili^ffl Jacl (Java Application Control Language, Java ^ffi® η" ) HP^ Jython (它是一个Python语言在Java中的实现)脚本来运行管理命令,实现远程部署。项目中实际采用Jython脚本。
[0008] 如图1所示,计算机A和计算机B分别布置在物理上完全独立的机房内,并通过广域网连接。要将计算机A中的“待安装项目(或应用)”远程部署到计算机B中。在计算机A上装有的应用服务器中间件WAS (记为WAS-A),计算机B上装有的应用服务器中间件 WAS (记为WAS-B)。通过WAS-A和WAS-B的现有技术的远程部署的方法为:通过WAS-A提供的wsadmin运行远程部署脚本,将计算机A的“待部署项目(或应用),,传输到计算机B的 WAS-B上,由WAS-B在计算机B上对传输过来的“待部署项目(或应用),,进行部署。
[0009] 以脚本语言Jython为例,具体的脚本可以是:
[0010] wsadmin-lang jython—user % USERNAME % -password % PASSWORD % -port %PORT % -host % HOST % -f wsadminlib. py-profile init. py-tracefile installlnfo. log % CER_NAME % % WAR_NAME % % DBHOST % % DBPORT % % DBINSTANCE % % DBUSER % % DBPASSffORD % % DEPL0Y_SUPERI0R_DEPT % % EXCEPTIONINGEAR % % USER_ EXCEPTIONINGEAR % % USER_NO_ACCORD_DATA % % NCI_SSO_CLIENT_APP_SIGN % % IS_ APP %% P0INT_H0ST%% P0INT_P0RT% % GR0UP_H0ST% % GR0UP_P0RT% % H0ST%% WEB_ P0RT%% INSTALL_TYPE% % SERVERNAME%
[0011] 在这个部署过程中能实现的功能主要依赖WAS提供的工具wsadmin。wsadmin工具支持两种脚本语言Jacl和Jython。脚本语言有五个对象可用AdminControl,用于运行操作命令;AdminConfig,用于运行配置命令以创建或修改WebSphere Application Server 配置元素;AdminApp,用于管理应用程序;AdminTask,用于运行管理命令;Help,用于获取一般帮助。应用服务器中间件(WAS)厂商基于安全以及责任等多种因素,提供的wsadmin 工具只能作用于应用服务器中间件WAS,无法操作WAS以外的东西,比如“数据库的创建及初始化,修改某些文件属性或者第三方软件配置等。
[0012] 因此,编写应用服务器中间件的用于远程部署的脚本的方法能够将B/S系统部署到应用服务器中间件,可以避免人工操作的失误以及效率低的问题,但是编写应用服务器中间件的安装脚本的方法只能够远程部署一些简单的B/S系统项目,对于一些具有复杂的安装过程的项目,仅依靠运行用于远程部署的脚本是无法完成的。这是由于基于脚本部署的方法选用的脚本语言只能是应用服务器中间件WAS支持的脚本语言(如Jacl、Jyth0n), 因此能够实现的功能受限于脚本语言支持的功能,而通常脚本语言支持的功能十分有限, 无法支持一些复杂的功能,如无法完成诸如数据初始化、修改操作系统配置环境、修改文件属性或第三方软件的配置等工作。因此,编写应用服务器中间件的用于远程部署的脚本的方法无法远程部署、安装一些较复杂的项目或应用,例如需要跟别的系统或软件交互,或需要改变操作系统配置环境等的项目或应用。
发明内容
[0013] 本发明实施例提供了一种B/S系统远程部署项目的方法及装置,用以使得B/S系统远程部署较复杂的项目或应用得以实现。
[0014] 根据本发明的一个方面,提供了一种B/S系统远程部署项目的方法,包括:第一计算机将运输程序远程部署到第二计算机,所述运输程序中携带有非脚本语言编写的代理程序;所述运输程序在第二计算机中释放、并启动所述代理程序;所述代理程序将所述项目从第一计算机传输到第二计算机后,在第二计算机上安装所述项目。
[0015] 其中,所述方法在所述运输程序在第二计算机中释放、并启动所述代理程序之前还包括:第一计算机中的部署管理程序向所述运输程序发送启动命令;以及,所述运输程序在第二计算机中释放、并启动所述代理程序为:所述运输程序根据所述启动命令,在第二计算机中释放、并启动所述代理程序。
[0016] 其中,所述方法在所述运输程序启动所述代理程序后还包括:所述部署管理程序在确认所述运输程序启动所述代理程序后,从第二计算机远程卸载所述运输程序。
[0017] 其中,所述方法在第二计算机上安装所述项目后还包括:第一计算机的部署管理程序向所述代理程序发送卸载命令,所述代理程序根据所述卸载命令进行自身卸载。[0018] 根据本发明的另一个方面,提供了一种B/S系统远程部署项目的方法,包括:确定待部署项目与部署点之间的部署对应关系;对于每个部署对应关系,分别进行远程部署; 其中,对于任意一个部署对应关系、进行远程部署包括步骤:本地计算机将运输程序远程部署到该部署对应关系中的部署点,所述运输程序中携带有非脚本语言编写的代理程序;所述运输程序在该部署对应关系中的部署点中释放、并启动所述代理程序;所述代理程序将该部署对应关系中的待部署项目从所述本地计算机传输到该部署对应关系中的部署点,并在该部署对应关系中的部署点上安装该部署对应关系中的待部署项目。
[0019] 根据本发明的又一个方面,提供了一种B/S系统远程部署项目的装置,包括:远程部署模块和运输程序模块;所述远程部署模块,用于将所述运输程序模块从第一计算机远程部署到第二计算机;所述运输程序模块,用于在第二计算机中释放,并启动自身所携带的代理程序模块;所述代理程序模块被以非脚本语言编写,用于将所述项目从第一计算机传输到第二计算机,并在第二计算机上安装所述项目。
[0020] 根据本发明的再一个方面,提供了一种B/S系统远程部署项目的装置,包括:部署对应关系确定模块,用于确定待部署项目与部署点之间的部署对应关系;批量远程部署模块,包括与各部署对应关系分别对应的部署集成模块;每个部署集成模块用于根据与之对应的部署对应关系进行远程部署,每个部署集成模块包括远程部署子模块和运输程序子模块:所述远程部署子模块,用于将所述运输程序子模块远程部署到该部署集成模块所对应的部署对应关系中的部署点;所述运输子程序模块,用于在该部署点释放,并启动自身所携带的代理程序子模块;所述代理程序子模块被以脚本语言编写,用于将该部署集成模块所对应的部署对应关系中的待部署项目从所述本地计算机传输到该部署点。
[0021 ] 本发明实施例由于在将运输程序远程部署到远程计算机后,该运输程序启动了自身携带的、非脚本语言编写的代理程序,而非脚本语言编写的代理程序不受脚本语言所支持的功能的限制,从而可以在远程计算机上实现一些较复杂的项目(或应用)的安装,即使得B/S系统远程部署较复杂的项目或应用得以实现。
[0022] 进一步,本发明实施例通过部署管理程序对运输程序或者代理程序进行控制操作 (如启动程序、卸载程序等),增强系统的可控、可靠性。
[0023] 此外,本发明实施例由于还采用了一种批量远程部署的方法,对较复杂的项目或应用进行批量的远程部署,节约人力、时间,提高系统效率。
附图说明
[0024] 图1为现有技术的B/S系统远程部署示意图;
[0025] 图2为本发明实施例的B/S系统远程部署示意图;
[0026] 图3a为本发明实施例的B/S系统远程部署方法流程图;
[0027] 图北为本发明实施例的计算机C的部署管理程序通过特殊http访问 DeployAgent的示意图;
[0028] 图3c为本发明实施例的运输程序释放Agent的示意图;
[0029] 图3d为本发明实施例的远程部署较复杂项目的示意图;
[0030] 图4为本发明实施例的代理程序部署安装项目的方法流程图;
[0031] 图fe为本发明实施例的批量远程部署方法流程图;[0032] 图恥为本发明实施例的批量远程部署的示意图;
[0033] 图6为本发明实施例的B/S系统远程部署项目的装置结构示意图;
[0034] 图7为本发明实施例的批量远程部署项目的装置结构示意图。
具体实施方式
[0035] 由于现有技术的编写应用服务器中间件的安装脚本的方法只支持远程部署一些简单的B/S项目,所以一些较复杂的项目无法通过现有技术的方法进行远程部署。而本发明实施例通过在本地计算机上运行一个用于远程部署的脚本,远程部署一个简单的B/ S系统项目即一个简单的运输程序(由于该运输程序不需要执行复杂的安装部署操作, 诸如数据初始化、修改操作系统配置环境、修改文件属性或第三方软件的配置等安装部署操作,因此通过在本地计算机运行脚本的方式即可将该运输程序远程部署到远程计算机上)到远程计算机,在该运输程序中携带了可以实现较复杂的安装功能的代理程序。代理程序为非脚本计算机语言(例如Java、c等非脚本语言)编写的,因此实现的功能不受脚本语言所支持的功能的限制;将运输程序远程部署到远程计算机上后,运输程序释放、并启动代理程序;代理程序在远程计算机上运行,由于代理程序实现的功能不受脚本语言所支持的功能的限制,从而在远程计算机上可以实现一些较复杂的项目(或应用)的安装。 具体地,例如,本地计算机可以通过应用服务器中间件,如WAS (Websphere Application Server)、Tomcat (Apache开发的Web应用服务器),运行远程部署脚本,远程部署携带代理程序的运输程序,运输程序在远程计算机中释放、启动代理程序后,代理程序通过JMX(Java Management Extensions, Java管理扩展)、SOCKET(套接字)或者应用服务器中间件安装脚本等多种技术手段,与本地计算机通信,将待部署的B/S系统项目从本地计算机上传输到远程计算机,并实现B/S系统项目的安装与部署。待部署的B/S系统项目可以是具有复杂的安装过程的项目,由于代理程序为非脚本语言编写的程序,其功能不受脚本语言所支持的功能的限制,因此可以完成该项目的安装。显然,对于不论是复杂的,还是简单的项目 (或应用)的远程部署、安装都可以采用本发明实施例的方法。
[0036] 进一步,为了使得本发明实施例的技术方案更加完善,使得远程部署的过程更具有可控性,在实际使用中具有更高的可靠性、实用性,上述的本地计算机中还可以运行一个部署管理程序(RDMC),在将运输程序远程部署到远程计算机后,RDMC还可以与运输程序或者代理程序进行通信,进而对远程部署的过程进行管理操作,如:
[0037] A、控制运输程序释放、启动代理程序的时机。例如,可以是确认运输程序已经远程部署到了远程计算机后,RDMC立即控制运输程序释放、启动代理程序;也可以是根据系统、 或者客户、或者业务的某种需要,RDMC确定通知运输程序释放、启动代理程序的时机。
[0038] B、卸载运输程序和/或代理程序。具体卸载方法将在后续介绍。
[0039] 下面以应用服务器中间件WAS为例详细讲述本发明实施例的具体实现方法,本领域技术人员可以根据本发明实施例公开的技术方案,实现该方法在其它类型的应用服务器中间件的应用。
[0040] 如图2所示,计算机C和计算机D分别布置在物理上完全独立的机房内,并通过广域网连接。需要将计算机C上的待部署的项目W在计算机D上进行部署(安装),从而实现通过计算机C对计算机D远程部署项目W。具体实现方法的步骤如图3a所示。[0041] 在步骤S301,将运输程序从计算机C远程部署到计算机D。具体地,假设计算机 C和计算机D都装有应用服务器中间件WAS,在计算机C上通过运行脚本,将运输程序从计算机C远程部署到计算机D。该脚本可以是通过某种脚本语言如Jacl、Jython被编写,用于远程安装、部署运输程序。运输程序是一个简单的B/S系统项目,其可以是通过Java等计算机语言编写。编写运输程序的语言需要WAS支持,WAS是JavaEE服务器,支持Java语言。由于运输程序仅需要实现上述几个功能,且已经将上述几个功能的代码编写进了运输程序,不需要与第三方软件交互,实现的功能简单,对WAS以外的环境无要求,因此能够通过“脚本的方式”进行远程部署。WAS支持的运输程序是一个普通的B/S系统项目,技术上与一般网站等B/S系统没有区别,其为本领域技术人员经常用到。在本发明实施例中,主要将运输程序用于:远程部署到计算机D时携带一代理程序;在计算机D上释放、并启动代理程序。
[0042] 此外,为了使技术方案更具有可控性、可靠性,运输程序还可具有一些功能。如,与计算机C的RDMC通信,接收RDMC的相关命令进行一些操作如释放、并启动代理程序等。
[0043] 在本发明实施例中,采用一个B/S系统项目即D印IoyAgent作为运输程序。显然, 本领域技术人员还可以采用其它B/S系统项目来作为运输程序,只要该B/S系统项目可以完成上述运输程序所具有的功能。本发明实施例提供的一种较优方式为:计算机C的RDMC 负责调用计算机C的WAS的wsadmin命令部署运输程序,运行脚本将D印IoyAgent远程部署到计算机D的WAS。
[0044] 如何远程部署一个简单的B/S系统项目为本领域技术人员所熟知,此处不再赘述。换言之,如何编写用于远程部署运输程序的脚本,与编写用于远程部署其它的简单的B/ S系统项目的脚本类似,为本领域技术人员所熟知,不再赘述。
[0045] 在步骤S302,计算机C的RDMC向运输程序发送启动命令。
[0046] 为了使远程部署的过程更具有可控性、可靠性,计算机C中可以运行一个部署管理程序(RDMC)。RDMC在运输程序远程部署到计算机D后,通过向运输程序发送启动命令的方式来控制运输程序启动代理程序的时机。例如,RDMC在确定运输程序已经远程部署到了远程计算机后,即发送启动命令,用以通知运输程序释放、启动代理程序;或者设定某个条件,当条件满足时,RDMC发送启动命令。需要指出的是,该步骤并非为实现本发明的目的的必要步骤;也就是说,运输程序在被部署到计算机D后,也可不等待任何RDMC的命令,而自行释放、启动代理程序。
[0047] 运输程序与RDMC之间的通信为现有技术。例如,运输程序提供一个特定的http 访问地址,RDMC通过HTTP方式访问该地址实现与运输程序的通信,向其发送命令(如图北所示)。基于安全考虑,该特定的http访问地址可以设置得较复杂,避免人为误操作输入访问地址触发命令。
[0048] 在步骤S303,运输程序根据接收到的启动命令,释放、并启动代理程序。具体地, 运输程序在接收到RDMC的启动命令后,将代理程序释放出来,复制到计算机D中(如图3c 所示)。此时,代理程序从运输程序中脱离。运输程序将释放后的代理程序注册为计算机D 的操作系统服务并启动。操作系统可以是Windows、Linux、Unix或者其他操作系统。根据本发明,尽管代理程序(Agent)由于不符合WAS的相关规范而不能通过“脚本方式”直接进行远程部署,但是通过运输程序的携带,代理程序可以计算机D上运行。[0049] 接下来,代理程序启动后访问计算机C,将项目W传输到计算机D (步骤S304)。
[0050] Agent的编写语言为非脚本语言,根据计算机D的操作系统类型进行选择,可以是 Java或C,也可根据实际需要选用其它常见语言。同时,Agent的开发语言还根据应用服务器中间件不同而不同。支持JavaEE的应用服务器中间件选用Java ;微软系的服务器中间件,如IISanternet Information Services,互联网信息服务)则选用C#或VB。WAS是支持JavaEE的应用服务器中间件,因此,Agent可以采用Java开发,是一个普通的Java应用程序,以jar包形式存在,主要功能包括运行安装脚本实现本地安装B/S系统项目,还可以包括运行数据库脚本创建或初始化数据库,开放服务器端口、更改文件属性等,并提供扩展能力,可以由程序员编写添加新功能。
[0051] Agent启动后,可以通过多种方法将项目W从计算机C传输到计算机D。Agent与计算机C之间的通信、传输可以采用socket方式,也可以通过一些基于socket的其他协议来进行。如果在同一个域中,可以采用操作系统命令进行传输,如COpy、xCOpy,从而实现将项目W从计算机C传输到计算机D。Agent与计算机C之间的通信、传输方法为本领域技术人员熟知,此处不再赘述。
[0052] 作为一种较优方式,Agent可以与RDMC进行通信,而不用直接去访问、获取项目W。 也就是说,Agent与RDMC进行通信,Agent向RDMC发送请求命令后,RDMC将项目W向计算机D发送。
[0053] 在步骤S305,项目W传送到计算机D后,代理程序在计算机D上进行项目W的安装。
[0054] 由于Agent是采用非脚本语言例如Java语言编写的程序,不再受限于脚本语言支持的功能,可以实现一些复杂的操作,如跟别的系统或软件交互,数据初始化、修改操作系统配置环境、修改文件属性或第三方软件的配置等工作,从而完成一些较复杂的项目或应用的安装。而采用非脚本语言编写Agent来实现一些复杂的操作,如跟别的系统或软件交互,数据初始化、修改操作系统配置环境、修改文件属性或第三方软件的配置等工作为本领域技术人员所熟知的技术,本领域技术人员可以根据实际的具体需求编写程序。
[0055] 例如,如图3d所示的一个远程部署的场景,有E、F、G三台机器。现在要将E机上的“待部署项目”部署到F机,该项目需要的数据库(也可能是其他第三方软件)部署在G 机。基于安全等因素的考虑,E机无法直接访问到G机的数据库。
[0056] 采用现有技术的基于脚本部署的方法,能够将“待部署项目,,传输到F机,但是由于E机无法访问G机的数据库,项目需要的数据库表的创建和初始数据导入工作无法在E 机完成。如果想实施远程部署,必须在“待部署项目”中编写相关的代码。显然,这涉及到对“待部署项目”这项工作是相当占用时间和人力成本的。
[0057] 而采用本发明实施例的方法,首先将创建数据库的文件通过Agent传输到F机,再由代理程序Agent在F机对G机的数据库进行初始化等操作。从而完成数据库表的创建和初始数据导入、跟别的系统或软件交互的功能,实现较复杂的项目或应用的安装。
[0058] 在安装项目W的过程中,RDMC可根据具体项目的具体需要,采用通过JMX技术的手段向Agent发送指令,完成一些控制操作。
[0059] 另一种Agent在计算机D上执行安装较复杂的B/S系统项目的具体流程步骤如图 4所示,将在后续进行介绍。在安装较复杂的B/S系统项目中,需要修改项目配置文件,或者修改操作系统配置环境。
[0060] 进一步,还可以通过RDMC卸载运输程序和/或代理程序(步骤S306)。在步骤 S306中,RDMC通过计算机D的WAS卸载运输程序。运输程序完成Agent的释放和启动后, 还可以将运输程序从计算机D上卸载掉,以避免浪费计算机D的资源。远程卸载运输程序的方法为本领域技术人员熟知,由计算机C的RDMC自动通过运输程序提供的地址访问运输程序,计算机C的RDMC在确认运输程序已经启动Agent后,调用wsadmin命令卸载运输程序,运行以某种脚本语言如Jacl、Jython编写的脚本,通过计算机D的WAS卸载运输程序。
[0061] 在步骤S307,RDMC在确认项目W安装完毕后,向代理程序发送卸载命令,通知代理程序进行自身卸载。RDMC与Agent通信,在确认Agent安装完毕后或者确认Agent安装异常后,向代理程序发送卸载命令,通知代理程序进行自身卸载。
[0062] 在步骤S308,代理程序完成自身卸载。Agent自身卸载过程以Windows操作系统为例:首先,Agent调用Windows卸载服务命令sc delete “服务名” (sc delete Agent), 取消之前注册的Agent服务;然后,Agent停止运行并调用Windows删除文件命令将Agent 的所有文件删除。
[0063] 通过计算机C的RDMC来控制代理程序的卸载是一种较优方式。显然,代理程序在完成项目的安装后也可以不必等待RDMC的命令而进行自身卸载。
[0064] 上述提到运输程序在计算机D中启动代理程序Agent,Agent启动后,完成项目W 的远程部署安装。假设项目W为一较复杂的安装项目,需要修改项目配置文件,或者修改操作系统配置环境,则Agent具体在计算机D上执行的安装流程步骤如图4所示。
[0065] 在步骤S401,Agent收集计算机D的参数,如操作系统配置环境参数,例如CPU型号、内存大小、开放端口等。在步骤S402,判断是否满足安装条件。Agent判断收集的计算机 D的参数是否满足项目W的安装要求。如果满足,则执行步骤S404 ;否则,执行步骤S403。
[0066] 在步骤S403中,Agent在确定收集的计算机D的参数不满足项目W的安装要求后, 对计算机D的参数进行相应调整,使得计算机D的参数满足项目W的安装要求。比如,设置操作系统环境变量、开放特定端口等。如果要求比较特殊,Agent不支持就需要进行开发, 扩展Agent功能。
[0067] 在步骤S404,Agent在确定收集的计算机D的参数满足项目W的安装要求后,修改项目W的相关配置文件,如修改配置文件中的数据库地址、最大连接数等。
[0068] 在步骤S405,Agent把项目W从计算机C传输到计算机D。具体地,Agent与计算机C的RDMC采用JMX技术进行通信,通过计算机C的RDMC将项目W传输到计算机D。Agent 与计算机C的RDMC的通信、传输可以采用socket方式,也可以通过一些基于socket的其他协议。如果在同一个域中,也可以采用操作系统命令进行传输,如copy、xcopy。具体的通信、传输方法为本领域技术人员熟知,此处不再赘述。
[0069] 在步骤S406,Agent在计算机D上安装项目W。具体地,Agent可以通过运行以某种脚本语言如Jacl、Jython编写的脚本将项目W部署到计算机D的应用服务器中间件中, 从而完成在计算机D上安装项目W。
[0070] 在步骤S407,判断项目W是否安装成功。如果成功,执行步骤S409 ;如果安装项目 W不成功,则进行步骤S408的操作。在步骤S408中,如果安装项目W不成功,则Agent将 S403步骤中修改、调整的计算机D的参数进行恢复,从而将计算机D恢复到执行Agent之前的机器环境。此外,还可以进行错误排查。
[0071] 进一步,在Agent完成项目W安装后或者执行了步骤S408后,为节省系统资源, 还可以包括卸载Agent的步骤(步骤S409)。在步骤S409,从计算机D上远程卸载Agent。 RDMC与Agent通信,发出卸载Agent命令,Agent完成自身的卸载操作。
[0072] 图如示出了根据本发明的批量远程安装部署的方法的实施例。在步骤S501,确定待部署项目与部署点之间的部署对应关系。如图恥所示,在本地计算机上有至少两个待部署项目,需要远程部署到不同的部署点。首先要确定哪个部署点具体需要部署哪个部署项目,即确定待部署项目与部署点之间的部署对应关系。例如可以确定如下部署对应关系:
[0073] 部署对应关系1 :待部署项目A需要部署到部署点A ;
[0074] 部署对应关系2 :待部署项目B需要部署到部署点A ;
[0075] 部署对应关系3 :待部署项目A需要部署到部署点B ;
[0076] 部署对应关系4 :待部署项目B需要部署到部署点B。
[0077] 在步骤S502,对于每个确定的部署对对应关系,分别采用上述的远程部署方法将该部署对对应关系中的待部署项目部署到该待部署项目所对应的部署点。例如,对于部署对应关系3,则可采用上述的方法将待部署项目A从本地计算机远程部署到部署点B :
[0078] 本地计算机将运输程序远程部署到部署对应关系3中的部署点B,所述运输程序中携带有代理程序,所述代理程序为非脚本语言编写的;运输程序在部署点B中释放、并启动代理程序;代理程序将待部署项目A从本地计算机传输到部署点B,并在部署点B上安装待部署项目A。具体的实施方式与上述如图3所示的方法相同,此处不再赘述。
[0079] 进一步,还可以从每个部署点获取部署结果,进行一些后续处理。具体地,在步骤 S503,本地计算机从每个部署点获取部署结果进行汇总。接下来,在步骤S504,本地计算机根据汇总的结果,判断整个批量部署工作是否都成功完成,确定是否进入异常处理流程。若存在某些项目部署失败,即部署异常,则进入异常处理流程。若所有项目部署成功,完成批量部署(步骤S505)。
[0080] 上面仅只是给出一种较佳的方法,显然对于不同的应用服务器中间件,本领域技术人员还可以有多种其它的技术手段来实现B/S系统较复杂的项目或应用的远程部署。
[0081] 本发明实施例提供的一种B/S系统远程部署项目的装置,该装置的一种具体结构如图6所示,包括:远程部署模块601和运输程序模块602。
[0082] 远程部署模块601,用于将运输程序模块602从第一计算机远程部署到第二计算机,运输程序模块602中包含有代理程序模块603。远程部署的方法同上述步骤S301中所述,此处不再赘述。
[0083] 运输程序模块602,用于在第二计算机中释放,并启动代理程序模块603 ;代理程序模块603,为非脚本语言编写的,用于将第一计算机中的待部署项目从第一计算机传输到第二计算机,并在所述第二计算机上安装该项目。运输程序模块602释放,并启动代理程序模块603的方法同上述步骤S302中所述,此处不再赘述。代理程序模块603将第一计算机中的待部署项目从第一计算机传输到第二计算机,并在所述第二计算机上安装该项目。代理程序模块603,还用于在将所述项目从第一计算机传输到第二计算机之前,收集第二计算机的参数;根据收集的参数,修改所述项目的相关配置文件;根据所述相关配置文件安装项目。代理程序模块603将第一计算机中的待部署项目从第一计算机传输到第二计算机,并在所述第二计算机上安装该项目的方法同上述步骤S302中所述,此处不再赘述。
[0084] 进一步,远程部署模块601,还用于在确认代理程序模块603启动后,从第二计算机远程卸载运输程序模块602;在确定第二计算机上安装所述项目后,从第二计算机远程卸载代理程序模块603。
[0085] 本发明实施例提供的一种B/S系统远程部署项目的装置,该装置的一种具体结构如图7所示,包括:部署对应关系确定模块701、批量远程部署模块702。
[0086] 部署对应关系确定模块701,用于确定待部署项目与部署点之间的部署对应关系。
[0087] 批量远程部署模块702,用于对于每个部署对应关系,分别进行远程部署。具体的, 批量远程部署模块702中包含若干个部署集成模块703,每个部署集成模块703分别与部署对应关系确定模块701中确定的部署对应关系相对应。每个部署集成模块703根据与之相对应的部署对应关系进行远程部署,其远程部署方法与前述述的远程部署方法相同。具体为:每个部署集成模块703包括:一个远程部署子模块和一个运输程序子模块。单个部署集成模块703完成项目的远程部署为:
[0088] 远程部署子模块,用于将该部署集成模块703中的运输程序子模块远程部署到该部署集成模块703所对应的部署对应关系中的部署点;该运输子程序模块,用于在该部署点释放,并启动自身所携带的代理程序子模块;所述代理程序子模块,为非脚本语言编写的,用于将该部署集成模块703的待部署项目从所述本地计算机传输到该部署点。
[0089] 进一步,图7所示的装置还可以包括:部署结果汇总模块704。
[0090] 批量远程部署模块702还用于从每个部署点获取部署结果。具体通过每个部署集成模块703获得部署结果:每个部署集成模块,还用于从与之对应的各部署点获取部署结
:^ ο
[0091] 部署结果汇总模块704,用于根据批量远程部署模块702获取的部署结果得到汇总结果,即根据各部署集成模块获取的部署结果得到汇总结果;若根据所述汇总结果确定部署异常,则进入异常处理流程;若正常则结束该次部署任务。
[0092] 本发明实施例由于在将运输程序远程部署到远程计算机后,该运输程序启动了携带在其中的非脚本语言编写的代理程序,而非脚本语言编写的代理程序不受脚本语言所支持的功能的限制,从而可以在远程计算机上实现一些较复杂的项目(或应用)的安装,即使得B/S系统远程部署较复杂的项目或应用得以实现。
[0093] 进一步,本发明实施例通过部署管理程序对运输程序或者代理程序进行控制操作 (如启动程序、卸载程序等),增强系统的可控、可靠性。
[0094] 此外,本发明实施例由于还采用了一种批量远程部署的方法,对较复杂的项目或应用进行批量的远程部署,节约人力、时间,提高系统效率。
[0095] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如: ROM/RAM、磁碟、光盘等。
[0096] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。