記錄hyperic-hq搭建開發環境遇到的坑

這個星期接到一個新的任務:解決HQ(一個用JAVA開發的開源的運維監控平臺)如今遇到的snmp升級到3.0後bug。公司用的HQ是4.6版本。因而,我把項目從gitlab上clone下來後,就開始了個人填坑之旅。坑了幾天坑,到目前,正常狀況,應該只有最後一個坑了,應該是關於tomcat運行環境的。閒話很少說,開始填坑之旅……java

項目maven build坑:mysql

  • 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的話,會出現一推警告,而後編譯失敗。git

  • 由於上面不編譯javadoc的緣故,因此在項目agent中,要把對hq-pdk項目的javadoc的依賴給去掉,否則這個項目也會編譯失敗,我把改後的文件對比放上來:

  assembly.xml:github

pom.xmlweb

  • 我也不知道什麼緣由,在項目編譯的時候,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過程要艱難的多,在這裏我也記錄一下,與君共勉。sql

 

hq-web 項目運行遇到的坑:apache

  • 首先是要在你的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:68tomcat

        •   

                      // ...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 插件目錄的異常,不過若是是經過我上面的那種運行方式,這兩個以上我都沒有遇到了。app

 

 後面有時間我也把官方目前最新的HQ5.8的build 成功的經驗寫上來。

相關文章
相關標籤/搜索