使用Ansible进行项目的自动部署,Weblogic部署项目三种方式

亚洲城真人娱乐,先说下境遇的标题,在SSHWeb项目中选取JDK自带的jar发布WebService(Endpoint.publish),在tomcat下能够正常发表,可是在Weblogic报奇葩错误,如Struts2-core.xml深入分析出错,还大概有weblogic实例重名错误等;用了一天英特网也找不到消除方案,就改为Axis2宣布WebService,开采也会出题目,可是能够在英特网找到消除办法

1、Tomcat

(1)直接放到Webapps目录下
汤姆cat的Webapps目录是汤姆cat暗中认可的运用目录,当服务器运转时,会加载全体那一个目录下的行使。
也足以将JSP程序打包成叁个war包放在目录下,服务器会自动解开这么些war包,并在那些目录下转移
二个同名的文件夹。叁个war包正是有特色格式的jar包,它是将一个Web程序的全部内容打开压缩获得。也可以用cmd
命令,先切换成品种路径,然后施行:jar -cvf applicationname.war 项目名

(2)在server.xml中指定
在汤姆cat的配置文件中,贰个Web应用就是三个特定的Context,能够透过在server.xml中新建Context里布署三个JSP应用程序。张开server.xml文件,在Host标签内建一个Context,内容如下。
<Context path=”/myapp” reloadable=”true” docBase=”D:\myapp”
workDir=”D:\myapp\work”/>
中间path是编造路径,docBase是JSP应用程序的轮廓路线,workDir是以此应用的专门的学业目录,存放运营是生成的于那个利用相关的文件。

3、创立二个Context文件
如上三种办法,Web应用棉被和衣服务器加载后都会在汤姆cat的conf\catalina\localhost目录下生成二个XML文件,其剧情如下:
<Context path=”/admin”
docBase=”${catalina.home}/server/webapps/admin” debug=”0″
privileged=”true”></Context>
能够看到,文件中描述三个应用程序的Context音讯,其内容和server.xml中的Context音讯格式是大同小异的,文件名正是杜撰目录名。您能够直接创立那样的叁个xml文件,放在汤姆cat的conf\catalina\localhost目录下。例子如下:
小心:删除三个Web应用还要也要删减webapps下相应的文书夹祸server.xml中相应的Context,还要将Tomcat的conf
\catalina\localhost目录下相应的xml文件删除。不然汤姆cat仍会岸配置去加载。。。

别的,为了让tomcat只运行conf/server.xml中钦点的web应用,能够有以下二种艺术:
实现一:
1)将在安插的WEB应用放在webapps以外的路线,
并在server.xml相应的context中的docBase钦命.
2)删除webapps中的全部文件夹, 以及conf/catalina/localhost下具备xml文件.
注: webapps是server.xml中的Host成分的appBase属性的值.
实现二:
1) 修改server.xml中Host成分的属性, 增多或涂改: deployXML=”false”
deployOnStartup=”false” autoDeploy=”false”
2) 含义:
deployXML=”false”: 不配备conf/catalina/localhost下的xml相应的WEB应用
deployOnStartup=”false” : tomcat运行时, 不陈设webapps下的具备web应用
autoDeploy=”false”: 防止tomcat在围观改动时,
再度把webapps下的web应用给安顿进来.

问题:
Weblogic/汤姆cat
通过JAVA直接远程调用也许调用本地Shell依旧通过Ansible来配置新程序 +
运维截至服务 如何保管?供给什么样安排消息?

在weblogic中配备项目一般有三种办法:第一,在调整新竹安装配置;第二,将配备包放在domain域中autodeploy目录下安顿;第三,使用域中配置文件config.xml
进行项目标配置。

一、非Maven的Axis2方式

2、weblogic

推荐第一种,每一回发版只必要转移目录下的war包

(1)登入weblogic,在调整桃园装置配置;
1、运转weblogic服务,登陆到weblogic调控台页面,输入用户名和密码,登陆到调整台里面
2、点击左侧安顿可能deployment(依据weblogic分裂版本)

使用Ansible进行项目的自动部署,Weblogic部署项目三种方式。3、在点击安装

亚洲城真人娱乐 1

wls1.PNG

4、选取你的war包,下一步,直接到形成,保存

亚洲城真人娱乐 2

wls2.PNG

5、测验版本是或不是揭橥成功

(2)将配备包放在domain域中autodeploy目录下布署;
机动计划时不须求报到调控台,在domain域的主目录下边有个autodeploy目录,间接将品种war包拷贝到autodeploy目录下边就足以了。

(3)使用域中布置文件config.xml 举行项指标布局。
config.xml文件在domain域的config目录上边,config.xml首要安插了domain域的局地荣辱与共消息
笔者们的品类安插新闻增加在configuration-version 和 admin-server-name
之间,路线下的是花色war包解压缩之后的文本夹,将
<module-type>war</module-type> 里面的war 修改为 dir :

<app-deployment>    
    <name>servletDemo</name>    
    <target>AdminServer</target>    
    <module-type>dir</module-type>    
    <source-path>C:\ZZ</source-path>  
    <security-dd-model>DDOnly</security-dd-model>  
    <staging-mode>nostage</staging-mode>  
  </app-deployment>  

选拔方案:
通过Ansible来布局新程序+运维截止服务;

决定台安插

1
运营weblogic服务,登入到weblogic调整台页面,输入用户名和密码,登入到调整台里面

亚洲城真人娱乐 3

 

2 点击侧面的配备

亚洲城真人娱乐 4

 

3 在侧边点击安装按键,希图打开项目安装

亚洲城真人娱乐 5

 

4 看到路线输入框,能够在上边选取要配备的门类的职责

亚洲城真人娱乐 6

 

5 也能够间接输入要布局的包的岗位,敲回车

亚洲城真人娱乐 7

6 点击下一步就可以

亚洲城真人娱乐 8

7 继续下一步

亚洲城真人娱乐 9

8 点击达成按键

亚洲城真人娱乐 10

9 保存前边各步的安装

亚洲城真人娱乐 11

10 保存达成后,拜会到激活更动的晋升,且不必要重启。

亚洲城真人娱乐 12

11
那时便得以开始展览测量试验了,输入项目名称,看到了项指标应接页面,即项目布局成功。

亚洲城真人娱乐 13

一经前方的步子操作达成了,但还是无法访谈项目以来,能够参谋下边的补充步骤

增加补充步骤

补1 点击布置,勾选上系列,点击运转

亚洲城真人娱乐 14

补2 待运营后,项目意况为活动,健康情况为OK时,继续测量检验。

亚洲城真人娱乐 15

1、官方网站下载Axis2的war包,解压后将conf、lib、modules拷贝到Web项目webapp的WEB-INF下,然后再新建services文件-》webservices-》META-INF文件夹,META-INF下创办services.xml文件;将解压的axis2文件夹下axis2-web拷贝到webapp下,访谈该站点能够看看通知的劳动,结果如下右图

Java代码应用介绍:
1.AnsibleHelper.java是二个工具类,接收外部传过来的参数,替换hosts配置,施行playbook剧本,部分代码如下:

autodeploy自动陈设

自动安插时没有要求登入调控台,在domain域的主目录下边有个autodeploy目录,直接将项目包拷贝到autodeploy目录下边就足以了。

autodeploy目录里面有个readme.txt 文书档案,展开看一下,这里摘第一段出来

This autodeploy directory provides a quick way to deploy applications
to a development server. When the WebLogic Server instance is running
in development mode, applications and modules in this directory are 
automatically deployed.

首要说怎么吗,正是付出情势上边,当weblogic运营时,会自行陈设autodeploy目录下边包车型客车类型。

将计划包servlet德姆o.war 丢到autodeploy目录上面,运营startWeblogic.cmd
,实行servlet德姆o的拜见,依然能够见见

亚洲城真人娱乐 16

接待页面。

亚洲城真人娱乐 17       
                   
亚洲城真人娱乐 18

/**
     * 完成Tomcat或weblogic的项目自动部署(tomcat支持多个项目同时部署,weblogic一次只能部署一个项目)
     * 
     * @param ansibleSettingsMap
     *            该参数需要提供如下几个键值对:
     *            ansibleSettingsMap.put("ansible_ssh_hosts_path"
     *            ,"本机hosts文件路径,带hosts文件名");
     *            ansibleSettingsMap.put("ansible_ssh_host", "目标主机ip地址");
     *            ansibleSettingsMap.put("ansible_ssh_user", "目标主机用户名");
     *            ansibleSettingsMap.put("ansible_ssh_pass", "目标主机用户密码");
     * @param playbookParamMap
     *            若为tomcat部署,该参数需要提供如下几个键值对:
     *            playbookParamMap.put("local_war_path", "本机要部署的war包路径,不带文件名");
     *            playbookParamMap.put("project_name_arr",
     *            字符串数组格式的项目(war包)名,不带.war后缀});
     *            playbookParamMap.put("tomcat","目标主机tomcat路径,到tomcat/主目录为止");
     *            -----------------------------------------------------------------
     *            若为weblogic部署,该参数需要提供如下几个键值对:
     *            playbookParamMap.put("user_name","目标主机weblogic用户名");
     *            playbookParamMap.put("password", "目标主机weblogic密码");
     *            playbookParamMap.put("weblogic_path",
     *            "目标主机weblogic路径,到Oracle_Home/为止");
     *            playbookParamMap.put("local_war_file", "本机要部署的war包路径,带文件名");
     *            playbookParamMap.put("domain_name", "weblogic域名");
     *            playbookParamMap.put("server_name", "weblogic服务名称");
     *            playbookParamMap.put("admin_url", "weblogic服务的地址,需使用iiop协议" );
     *            playbookParamMap.put("war_file_path", "目标主机war包的存储路径" );
     *            playbookParamMap.put("project_name",
     *            "项目名称(即war包名称,不带.war后缀)");
     * @param playbookPath
     *            ansible tomcat或weblogic的playbook路径,带文件名
     */
    public static void doDeploy(Map<String, Object> ansibleSettingsMap, Map<String, Object> playbookParamMap, String playbookPath) {
        setAnisbleHosts(ansibleSettingsMap);
        String res = doAnisblePlaybook(playbookParamMap, playbookPath);
        System.out.println("==========输出=============");
        System.out.println(res);
    }

config.xml配置文件布署

config.xml文件在domain域的config目录上面,config.xml首要配置了domain域的一部分有关音讯

大家要配备项目,该在哪个地方配置呢

  base_domain
  12.1.3.0.0

    base_domain


        DefaultAuthenticator


        SystemPasswordValidator
        8
        1


    myrealm
    {AES}xLPXh4gcT6JErTB+toxRZ1pQpAS+MGMuqnnXzu/OsxWMQTB8152ggdbUlhkSXUGC9f959oL7tIzyZiu9XdeajlkK9vAu9cQlCKLLUaUMyl5Ty4C0uuJA99b14eR7oIu4
    weblogic
    {AES}n3LLdgmAsocPRoYUrFfR2waWOlEz6KDFsp7+gByNeo8=


    AdminServer



    base_domain
    {AES}21z8vCiCbuaYqsSj5t5+y6qvEY8dE3NdNr0zDG+K3EdwWEubzk9Vmx79Di43oxqX

  12.1.3.0.0
  AdminServer

咱俩的品类安顿消息增多在configuration-version 和 admin-server-name 之间

12.1.3.0.0

    servletDemo  
    AdminServer  
    war  
    C:\Users\ZhangQi\Desktop\servletDemo  
    DDOnly  

  AdminServer

刚开头展开config.xml 配置文件安顿的时候,出现了404,修改了下安排就可以了

将配备的war包解压为文件夹的款型,然后

将 war 里面的war 修改为 dir 即可

 

    servletDemo  
    AdminServer  
    dir  
    C:\Users\ZhangQi\Desktop\servletDemo
    DDOnly
    nostage

下一场运维weblogic服务就能够。

二种配备格局都能达成布局项目标目标,至于二种配备格局的得失,请往下看:

 

2、services.xml配置文件内容如下

2.AnsibleController.java是调用以上中国人民解放军海军事工业程大学业具类的测量检验示例,里面饱含了施行playbook所需的参数(部分参数定义在application-development.properties)

支配台陈设

本条一般的正式生产情状或测试遇到能够使用这种办法。那时急需将weblogic的运转形式修改为生育格局,将配备包放到联合的地点开始展览田间处理,安装,更新,删除布署直接在调整台进行,方便监测。

<?xml version="1.0" encoding="UTF-8" ?>
<service name="tongweiws">
    <description>
        publish webservice
    </description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
    <!--不使用Spring注解-->
    <!--<parameter name="ServiceClass">com.epoch.planning.projects.tongwei.SyncUser</parameter>-->

    <!--使用Spring注解,@Component注解的类,beanName如果不指定,默认是类名首字母小写-->
    <parameter name="SpringBeanName">syncUser</parameter>
    <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
</service>

3.FileContentReplaceHelper.java和ExecLinuxCMD.java独家是替换文件文本内容和领会您给Linux命令的三个工具类。

autodeploy

本条开发时用的多或多或少,方便管理。开拓时候,直接将项目拷贝到autodeploy上面,然后运维weblogic服务,相比方便。思索到weblogic服务不会活动解压war包(那一点不比tomcat好),所以项目中经过某些相对路线获取文件大概不能够很好的取到,这时能够将war包解压为文件夹的花样,方便文件的读取。在支付时,能够通过ant
或 另外工具直接将修改的文本拷贝到autodeploy目录上面,比较方便。

3、weblogic.xml配置文件内容如下

现实贯彻步骤:
1.希图专业:
两台Linux服务器:
主服务器(本系统须要配备该服务器上),要求的软件条件:
Python 、Ansible、Jdk

config.xml配置布置

config.xml配置安插和autodeploy类似,不一样的是autodeploy自动计划必须将品种的布局包放到autodeploy目录上面,但是config.xml配置计划的安插包可以放置任啥地点方。这种格局也是用在付出蒙受中,个人不引入这种方法,因为老是有新类型布局的时候,都得去domain域里面找config.xml配置,然后修改,出错的高风险太大,不比直接选取autodeploy的主意。

透过地点的剖判,生产中使用支配台布置开发中使用autodeploy或config.xml配置安插。开拓中一旦使用myeclipse实行支付来讲,能够集成weblogic插件,直接在myeclipse中开始展览weblogic的起步,甘休,详细情况请参照他事他说加以考察上篇博客