zoukankan      html  css  js  c++  java
  • 记录hyperic-hq搭建开发环境遇到的坑

    这个星期接到一个新的任务:解决HQ(一个用JAVA开发的开源的运维监控平台)现在遇到的snmp升级到3.0后bug。公司用的HQ是4.6版本。于是,我把项目从gitlab上clone下来后,就开始了我的填坑之旅。坑了几天坑,到目前,正常情况,应该只有最后一个坑了,应该是关于tomcat运行环境的。闲话不多说,开始填坑之旅……

    项目maven build坑:

    • maven版本必须为2.X版本的,3.X版本的maven,是绝对不会build成功的
    • 切换到2.2版本的maven后,直接运行mvn clean install也是编译失败,各种尝试后,最终能够编译的命令为:
      clean compile install -Dmaven.javadoc.skip=true -DCI-build -Dall-installers -Dmaven.test.skip=true -e

      解释一下吧,用maven.javadoc.skip=true是因为项目中的注释,有太多太多是不符合javadoc规范的,所以如果编译javadoc的话,会出现一推警告,然后编译失败。

    • 因为上面不编译javadoc的缘故,所以在项目agent中,要把对hq-pdk项目的javadoc的依赖给去掉,不然这个项目也会编译失败,我把改后的文件对比放上来:

      assembly.xml:

    pom.xml

    • 我也不知道什么原因,在项目编译的时候,hq-pdk/src/main/java/org/hyperic/hq/product/validation/PluginXmlValidator.java 这个类总是会报异常,说代码异常出现在185行,是无法找到apache的log4j的一个类方法,如是我就把它给注释了,这块就不报异常了。

    • 可能跟我用的是IDEA或者我用的是公司内网的maven库有关吧,项目hq-rendit的pom文件中的maven-eclipse-plugin插件也会编译不通过,于是我也把它给注释了:

    • 在hq-server项目的pom文件,我加了一个plugin:
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<configuration>
    					<source>1.6</source>
    					<target>1.6</target>
    				</configuration>
    			</plugin>

    OK,到现在为止,我遇到的maven的build坑基本差不多了。经过上面的改造后,我的hq项目能够install成功了。不过,install成功后,本地运行hq-web项目时,遇到的坑,深坑,比build过程要艰难的多,在这里我也记录一下,与君共勉。

    hq-web 项目运行遇到的坑:

    • 首先是要在你的user.home目录下新建一个文件,路径为:{user.home}/.hq/build.properties。关于这个,官方的github上的BUILD.txt也有说明:
        	Add the following properties to ~/.hq/build.properties to connect the schema installer, hq-web app, or integration tests to your DB:
            	server.database-url=jdbc:mysql://localhost:3306/hqdb
            	server.database-driver=com.mysql.jdbc.Driver
            	server.database=MySQL
            	server.database-user=hq
            	server.database-password=hq
            	server.admin.username=hqadmin
            	server.admin.password=hqadmin
    • 运行web有两种方式,第一种是直接用tomcat-maven-plugin方式(tomcat:run)运行,这种方式运行我最后还是因为运行的tomcat内存不足而抛出内存溢出而失败。所以下面我介绍怎样用自己下载的tomcat运行web。
      • 首先从官方下载tomcat,并在IDEA中配置这个tomcat。这个就不用介绍了
      • 运行tomcat:deploy maven命令,这个将会在hq-web项目的target目录下生成一个hq-web-4.6的目录
      • 打开IDEA的项目配置界面,切换到Artifacts界面,新建一个hq-web项目的Web Application:Exploded。并将output directory目录指向上面生成的目录。如:
      • 将配置的hq-web:war exploded 配置到tomcat运行中
      • 在运行之前,还是要做几件事,起码我这里要做这些事情
        • 将mysql的驱动包(如果你用其他的驱动包应该也差不多),复制到tomcat服务器目录的lib目录下。因为我的tomcat (tomcat7)运行时,项目总会报找不到mysql驱动的异常,把驱动jar包拷贝到lib目录后就好了
        • 生成hyperic.keystore 证书的密码为:hyperic(记住,这个证书密码必须是这个,不然会出错),因为我是想进行项目的debug,所以我修改了源码中对证书路径的校验代码,让我可以指定证书的文件路径,通过jvm的运行参数:文件为:org.hyperic.hq.security.ServerKeystoreConfig:68

          •   

                        // ...make sure this exists
                        if (!keystoreFile.exists()) {
                            /**
                             * 添加keystore path的自定义参数路径
                             */
                            String keystorePath = System.getProperty("yiji.hq.keystore.path");
                            if(keystorePath != null){
                                keystoreFile = new File(keystorePath);
                                if(!keystoreFile.exists()){
                                    throw new ConfigPropertyException("The keystore path [" + keystoreFile.getPath() + "] does not exist. If setting a relative path, it must be relative to the server's hq-server directory.");
                                }
                            }
            //                throw new ConfigPropertyException("The keystore path [" + keystoreFile.getPath() + "] does not exist. If setting a relative path, it must be relative to the server's hq-server directory.");
                        }
          • 可以使用这个命令进行证书的生成
          • keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"

          • 配置tomcat的运行jvm参数,主要是指定证书路径以及tomcat的运行参数。都是必须的
          • -Dyiji.hq.keystore.path=/Users/QianL/Desktop/hyperic.keystore -server -Xms1024m -Xmx2048m -XX:PermSize=512M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m

    我经过上面的折腾后,项目就可以通过IDEA进行tomcat debug运行调试了。

    其实项目的坑远不止这些,不如如果使用tomcat插件运行的,还会报 sigar包找不到本地的动态库文件 和 找不到 hq-plugins 插件目录的异常,不过如果是通过我上面的那种运行方式,这两个以上我都没有遇到了。

     后面有时间我也把官方目前最新的HQ5.8的build 成功的经验写上来。

    
    
  • 相关阅读:
    p1373【奶牛的卧室】
    p1248【交错匹配】(DP)
    QBXT模拟赛T3
    NOIP冲刺班的考试总结
    欧拉回路的一些东西
    一道dp题目
    Blocks
    玩具取名
    Y的积木
    游荡的奶牛
  • 原文地址:https://www.cnblogs.com/qianlong2016/p/5347021.html
Copyright © 2011-2022 走看看