基本概念
域 Domain:
域是作为单元进行管理的一组相关的 WebLogic Server 资源。一个域包含一个或多个 WebLogic Server 实例,这些实例可以是集群实例、非群集实例,或者是集群与非群集实例的组合。一个域可以包含多个集群。域还包含部署在域中的应用程序组件、此域中的这些应用程序组件和服务器实例所需的资源和服务。应用程序和服务器实例使用的资源和服务示例包括计算机定义、可选网络通道、连接器和启动类。
Domain 中包含一个特殊的 WebLogic 服务器实例,叫做管理服务器(Administration Server),这是我们配置管理 Domain 中所有资源的核心。通常,我们称加入 Domain 中的其他实例为受管服务器(Managed Server),所有的 Web 应用、EJB、Web Services 和其他资源都部署在这些服务器上。
管理服务器 Administration Server :
管理服务器是控制整个域配置的中心操作节点,管理服务器维护着整个域 的配置并将配置分配到每个被管理服务器 Managed Server 中。我们可以通过三个渠道访问管理服务器:Admin Server console、Oracle WebLogic Scripting Tool WLST、JMX 客户端(通过 WebLogic 提供的 API 来实现),最后我们还可以通过 SNMP 协议来监控 Admin Server 的状态。
被管理服务器 Managed Server :
被管理服务器是一个 WebLogic Server 的实例,他从 Admin Server 那里获取配置信息。通常在 Managed Server 上部署自己的服务、组件或应用。基于性能考虑,Managed Server 维护着一份只读的域配置文件,当服务启动的时候,会从 Admin Server 上同步配置文件信息,如果配置文件发生了改变,Admin Server也会将改变推送到Managed Server 上。
Weblogic 有两种部署方式,单点模式和集群模式,单点模式直接创建一个域,在控制台进行程序部署即可;而集群模式分为 Admin(管理)节点和 Managed(被管理)节点,管理节点通过控制台对被管节点进行管理,程序部署在被管节点的集群上。不论是单点模式,还是集群模式,常见的报错基本一致。
Weblogic 域目录结构
autodeploy:在开发模式下,WLS 自动部署您放置在此目录中的所有应用程序或模块。该目录提供了一种在开发服务器中部署应用程序的快速方法。当 Oracle WebLogic Server 实例在开发模式下运行时,它将自动部署该目录中放置的所有应用程序或模块。
bin:此目录包含用于启动和停止域中的管理服务器和受管服务器的脚本。这些脚本通常以 UNIX 的 .sh
文件和Windows 的 .cmd
文件的形式提供。bin 目录可以选择包含域范围内的其他脚本,例如用于启动和停止数据库管理系统的脚本,全文本搜索引擎进程等。
config:域的当前配置和部署状态存储在配置库中,表示为 config.xml
。WebLogic 中的所有配置都作为 xml 文件存储在此目录中。Admin Server 启动时,它将读取该文件并知道其域的配置方式。受管服务器还将其用于域中的角色。
console-ext:此目录包含管理控制台的扩展,使您可以将内容添加到 Oracle WebLogic Server 管理控制台,替换内容以及更改徽标,样式和颜色,而无需修改与 Oracle WebLogic Server 一起安装的文件。 例如,可以添加为应用程序提供自定义监视和管理功能的内容。
init-info:此目录包含用于 WebLogic 域置备的文件。不应修改此目录中的任何文件。
lib:启动服务器的 Java 虚拟机时,放置在此目录中的所有 JAR 文件都会添加到域中每个服务器实例的 Java 系统 CLASSPATH 中。
pending:此目录包含域配置文件,这些域配置文件表示已请求但尚未激活的配置更改。激活配置更改后,将从该目录中删除配置文件。可以在运行时在 Administration Server 控制台中更改配置。在域中实现它们之前,它们会临时存储在此目录中。
security:此目录保存与域中的每个 Oracle WebLogic Server 实例相同的安全相关文件:SerializedSystemIni.dat
。它还保存仅域的管理服务器所需的与安全相关的文件:DefaultAuthorizerInit.ldift
、DefaultAuthenticatorInit.ldift
、DefaultRoleMapperInit.ldift
。
server:包含服务器和受管服务器子目录的服务器目录是在首次启动服务器时创建的。该目录为域中的每个Oracle WebLogic Server 实例包含一个子目录。子目录包含特定于每个服务器实例的数据。
tmp:此目录用于临时存储文件。您不应修改此目录中的任何文件。
stage/nostage 部署模式
Weblogic 应用部署是指让应用或模块能够处理 Weblogic Server 域的客户端请求的过程,这个过程包含了很多过程,既有准备过程,又有部署应用使应用的生效过程,主要有下面的过程:
- 为部署准备应用和模块,即准备 e ar存档文件或目录
- 配置应用,对应用的部署描述符,如web.xml、weblogic.xml进行配置
- 用 weblogic.deployer、管理控制台等工具部署应用和模块
- 应用启动时文件的加载过程
- 在生产环境下重新部署应用(redeployment)
应用部署中最重要的部分,就是加载应用的文件,使其生效能响应用户请求的过程,这就需要谈到 Stage 模式。Stage 模式决定部署文件怎样对需要部署应用或独立模块的目标服务器是可用的,即应用部署文件是否从管理服务器的来源拷贝到被管服务器的 stage 目录下。
Stage,简单说是应用文件的加载目录,缺省为服务器的根目录下的 stage 目录,应用部署过程中,从 stage 目录中复制一份应用文件的备份到临时目录,然后加载这些文件资源。
Stage 模式分为三种情况:stage 模式、nostage 模式和外部 stage 模式,下表是他们间的区别:
部署 Staging 模式 | 行为 | 何时使用 |
---|---|---|
stage | 管理 server 将应用的部署单元文件复制到目标 server 的 stage 目录下(缺省目录名为 stage,在目标 server 的根目录下);目标 server 使用本地部署文件的拷贝进行部署 | 部署中、小应用到多 Weblogic server 实例;部署中小应用到cluster |
nostage | 管理单元不复制部署单元的文件,所有server 使用相同的部署文件的物理拷贝进行部署(但必须能存取到)。使用这种模式,Weblogic server 可以自动检测 jsp 或servlet 的变化并刷新部署信息(这个行为可以被 disabled) | 部署到单 server domain;部署到一个有多个 home 目录机器上的 cluster上;部署一个大应用到多目标 server或 Cluster;部署文件在共享目录中;部署一个ear目录,并准备改变内容并重新部署需要通过控制台动态更新所选的部署描述符 |
external_stage | 主管 server 不复制部署文件,但部署前要保证部署文件发布到正确的 stage 目录中(如通过手工copy)。 主管 server 需要一个部署文件的拷贝来进行验证。 | 你打算手工控制目标 server 上部署文件的发布使用第三方应用或脚本负责复制部署文件到正确的 staging 目录不需要通过控制台动态改变部署描述符(该模式不支持)不需要重新部署(redeploy)部分应用组件 |
总结:
可以看出,stage 模式对部署应用更为方便,部署时给主管服务器指定 ear 的位置,主管服务器会自动将应用部署到所有被管服务器的 stage 目录中;但由于复制文件耗费资源,只适合中小应用。
对于大应用,用 nostage 模式和 external_stage 模式比较合适,不需要拷贝文件,但需要指定应用的部署文件目录就可以。external_stage 需要手工复制文件到 stage 目录,或通过第三方工具(如 ant)复制文件。
使用 nostage 的好处在于,server 可以自动检测 web 应用的 jsp 或 Servlet 的变化,并重新加载,使更新生效。
应用程序部署
在 Weblogic 中部署项目通常有三种方式:第一,在控制台中安装部署;第二,将部署包放在 domain 域中autodeploy 目录下部署;第三,使用域中配置文件 config.xml 进行项目的部署。
- 控制台部署:这个一般的正式生产环境或测试环境可以采用这种方式。这时需要将 Weblogic 的运行模式修改为生产模式,将部署包放到统一的地方进行管理,安装,更新,删除部署直接在控制台进行,方便监测。
- autodeploy:这个开发时用的多一点,方便管理。开发时候,直接将项目拷贝到 autodeploy 下面,然后启动Weblogic 服务,比较方便。考虑到 Weblogic 服务不会自动解压 war 包(这点不如tomcat好),所以项目中通过一些绝对路径获取文件可能不能很好的取到,这时可以将 war 包解压为文件夹的形式,方便文件的读取。在开发时,可以通过 ant 或其它工具直接将修改的文件复制到 autodeploy 目录下面,比较方便。
- config.xml 配置部署:config.xml 配置部署和 autodeploy 类似,不同的是 autodeploy 自动部署必须将项目的部署包放到 autodeploy 目录下面,但是 config.xml 配置部署的部署包可以放到任何地方。这种方式也是用在开发环境中,不推荐这种方式,因为每次有新项目部署的时候,都得去 domain 域里面找 config.xml 配置,然后修改,出错的风险太大,不如直接使用 autodeploy 的方式。
控制台部署图解
点击“环境” - “服务器” - “新建”,开始新建服务器:
配置服务器名称、端口等信息:
完成并激活更改,即创建了服务器。
点击“部署” - “安装”:
选择要部署的程序,可以是 war 包、文件夹等。
选择安装类型和范围
选择要部署到的服务器:
设置应用程序信息:
为应用新增 JNDI 数据源
点击“部署” - “数据源” - “新建” - “一般数据源”:
配置数据源的名称、类型等:
设置数据源驱动程序:
配置使用的事务处理选项:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRyAKV3w-1623213738942)(https://cdn.jsdelivr.net/gh/fatfoo/pictures/img/20210608140319.png)]
配置数据库连接属性:
确认数据库配置,并测试:
新建数据源完成,并激活更改:
配置数据源到目标服务器上,并激活更改:
踩坑总结
1. 服务器 mSrv1 没有与之相关联的计算机
在上一篇文章中,我创建域时选择的域模式是生产模式,在启动服务器过程中报“服务器 mSrv1 没有与之相关联的计算机”。解决方案是新建计算机,并与之关联。
点击“环境” - “计算机” - “新建”:
设置计算机名称、操作系统等:
设置节点管理器属性:
创建计算机成功并激活更改:
点击“环境” - “服务器” - “一般信息”,关联服务器到刚刚新建的计算机:
2. Weblogic 与计算机 Machine-0 相关联的节点管理器无法访问。
因为节点管理器没有启动导致,运行域目录下的 bin/startNodeManager.cmd 启动节点管理后解决。
参考文档
对于服务器AdminServer, 与计算机Machine-0相关联的节点管理器无法访问
WebLogic使用总结(三)——WebLogic配置JNDI数据源
weblogic报:服务器Server-0没有与之相关联的计算机。
欢迎关注公众号:「可燃人物」