這段時間簡單的試用了一下jira,非常滿意。準(zhǔn)備作為個人之后開發(fā)的首選缺陷管理工具,但是當(dāng)時采用的是windows的全集成安裝方式,因此考慮在linux上正式的安裝一下,同時將數(shù)據(jù)庫換成mysql。
(1) 下載
用jira官網(wǎng)下載WAR/EAR 版本,主要不要下載Standalone 版本。jira的頁面默認(rèn)給出的是Standalone 版本的下載鏈接。請注意右側(cè)的Recommended,Show all鏈接,點擊Show all之后才會顯示W(wǎng)AR/EAR 版本的下載鏈接。
(2) 安裝準(zhǔn)備工作
先安裝resin, 再安裝mysql,jdk是最新的jkd6 update19。
另外需要安裝ant,來進(jìn)行安裝前的build。
(3) build jira
解壓縮jira
gunzip atlassian-jira-enterprise-4.1.tar.gz
tar xvf atlassian-jira-enterprise-4.1.tar
打開readme.txt可以看到安裝指南。
1. 指定數(shù)據(jù)庫
打開 'edit-webapp/WEB-INF/classes/entityengine.xml',修改 field-type-name 為要使用的數(shù)據(jù)庫,目前支持的有Possible values include: cloudscape, db2, firebird, frontbase, hsql, mckoidb, mysql, mssql, oracle10g, oracle, postgres, postgres72, sapdb, sybase. 果然很強(qiáng)大,基本能看到的數(shù)據(jù)庫都支持了。默認(rèn)是hsql,修改為mysql。另外刪除schema-name="PUBLIC"這行。
2. 指定JIRA Home
打開'edit-webapp/WEB-INF/classes/jira-application.properties', 設(shè)置jira.home
jira.home = /work/soft/projectmanager/jira_home
使用ant進(jìn)行build,在jira目錄下執(zhí)行ant war
ant war
Buildfile: /windows/f/work/soft/projectmanager/jira/build.xml
init:
clean:
compile:
[mkdir] Created dir: /windows/f/work/soft/projectmanager/jira/tmp/build/war
[mkdir] Created dir: /windows/f/work/soft/projectmanager/jira/dist-generic
[mkdir] Created dir: /windows/f/work/soft/projectmanager/jira/dist-tomcat
[mkdir] Created dir: /windows/f/work/soft/projectmanager/jira/dist-tomcat/tomcat-6
[copy] Copying 7740 files to /windows/f/work/soft/projectmanager/jira/tmp/build/war
[copy] Copied 820 empty directories to 7 empty directories under /windows/f/work/soft/projectmanager/jira/tmp/build/war
[copy] Copying 2 files to /windows/f/work/soft/projectmanager/jira/tmp/build/war
[javac] /windows/f/work/soft/projectmanager/jira/build.xml:63: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
war:
[jar] Building jar: /windows/f/work/soft/projectmanager/jira/dist-generic/atlassian-jira-4.1.war
[jar] Building jar: /windows/f/work/soft/projectmanager/jira/dist-tomcat/atlassian-jira-4.1.war
[jar] Building jar: /windows/f/work/soft/projectmanager/jira/dist-tomcat/tomcat-6/atlassian-jira-4.1.war
[copy] Copying 1 file to /windows/f/work/soft/projectmanager/jira/dist-tomcat/tomcat-4
[copy] Copying 1 file to /windows/f/work/soft/projectmanager/jira/dist-tomcat/tomcat-5
[copy] Copying 1 file to /windows/f/work/soft/projectmanager/jira/dist-tomcat/tomcat-5.5
[copy] Copying 1 file to /windows/f/work/soft/projectmanager/jira/dist-tomcat/tomcat-6
[echo]
[echo] --------------------------------------------------
[echo] Deployable WARs generated:
[echo]
[echo] TOMCAT: /windows/f/work/soft/projectmanager/jira/dist-tomcat/atlassian-jira-4.1.war
[echo] GENERIC: /windows/f/work/soft/projectmanager/jira/dist-generic/atlassian-jira-4.1.war
[echo]
[echo]
[echo] See http://www.atlassian.com/software/jira/docs/latest/servers/ for install instructions
[echo] --------------------------------------------------
[echo]
BUILD SUCCESSFUL
Total time: 1 minute 31 seconds
(5) 配置resin
1. 配置JDBC driver
從mysql官網(wǎng)下載到最新的mysql connector,解壓后找到mysql-connector-java-5.1.12-bin.jar文件,復(fù)制到resin/lib下。
2. 配置數(shù)據(jù)庫的datasource
打開resin/conf/resin.xml,加入以下內(nèi)容:
<database>
<jndi-name>jdbc/JiraDS</jndi-name>
<driver type="com.mysql.jdbc.Driver">
<url>jdbc:mysql://localhost:3306/jira</url>
<user></user>
<password></password>
</driver>
<prepared-statement-cache-size>8</prepared-statement-cache-size>
<max-connections>100</max-connections>
<max-idle-time>15s</max-idle-time>
</database>
注意 jdbc:mysql://localhost:3306/jira, 這里的jira是mysql中的數(shù)據(jù)庫,需要先自行在mysql中建立。如果安裝過程出現(xiàn)問題需要重新安裝,可以刪除這個數(shù)據(jù)庫后重新創(chuàng)建,以清理上次安裝的信息。
3. 配置transaction factory
jira默認(rèn)在entityengine.xml中使用以下配置信息:
<transaction-factory class="org.ofbiz.core.entity.transaction.JNDIFactory">
<user-transaction-jndi jndi-server-name="default" jndi-name="java:comp/env/UserTransaction"/>
<transaction-manager-jndi jndi-server-name="default" jndi-name="java:comp/env/UserTransaction"/>
</transaction-factory>
這就要求java:comp/env/UserTransaction在resin下必須有效,否則會有如下的報錯:
[core.entity.transaction.JNDIFactory] NamingException while finding UserTransaction named java:comp/env/UserTransaction in JNDI.
javax.naming.NameNotFoundException: java:comp/env/UserTransaction
at com.caucho.naming.ContextImpl.lookup(ContextImpl.java:163)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.ofbiz.core.entity.transaction.JNDIFactory.getUserTransaction(JNDIFactory.java:109)
at org.ofbiz.core.entity.TransactionFactory.getUserTransaction(TransactionFactory.java:91)
翻了一下resin的資料,這里批評一下resin,resin4的版本都已經(jīng)到了4.0.5了,但是4.0系列的文件還是非常非常的不健全,基本上什么信息都找不到,我就為了找一個在resin4中如何設(shè)置jndi都google很久,全是resin3的資料。
最后找到resin默認(rèn)UserTransaction的jdni為java:comp/UserTransaction,因此需要修改jira的設(shè)置,或者在resin中進(jìn)行一下jndi link,將下面的內(nèi)容加入到resin/conf/resin.xml :
<jndi-link>
<jndi-name>java:comp/env/UserTransaction</jndi-name>
<foreign-name>java:comp/UserTransaction</foreign-name>
</jndi-link>
(6) 正式安裝
將
dist-generic/atlassian-jira-4.1.war 復(fù)制到resin/webapps/jira.war,resin會自動解壓縮。
如果前面的準(zhǔn)備工作都沒有問題,這里會順利的進(jìn)行,打開http://192.168.0.40:8080/jira可以進(jìn)入安裝設(shè)置頁面,按照要求一步一步進(jìn)行,可以完成安裝,不會報錯,最后提示安裝成功可以登錄云云。
但是很遺憾,上述的安裝工作完成之后,jira不可使用。安裝完后打開http://192.168.0.40:8080/jira,出現(xiàn)的不是期待的dashboard頁面,而是其他的一個莫名其妙的頁面,并且頁面有很多js錯誤。
很郁悶的反復(fù)重復(fù)了上面的安裝過程,期間都沒有報錯,安裝都可以完成,唯獨安裝完成之后不能用。另有發(fā)現(xiàn)就是http://192.168.0.40:8080/jira的安裝頁面,在安裝配置過程中就有點不對,頁面非常簡單,似乎是css沒有啟用的感覺。
比較頭疼的幾個問題:
1. jira官網(wǎng)沒有resin的資料,jira安裝的推薦app server中沒有resin
2. resin4 的資料非常少,如論是官網(wǎng)還是internet,很難搜索到資料。上面的安裝準(zhǔn)備過程是我參考tomcat,resin3和jira自己的文檔一點一點翻出來的,期間google無數(shù)。太耗時間了。
實在無奈,后面嘗試使用tomcat6來安裝jira,就非常順利的安裝完成。算了,不繼續(xù)在resin4上耗費時間,改用jira官方推薦的tomcat6好了。tomcat6下的war安裝,在jira官網(wǎng)有非常詳細(xì)的文檔,按照上面的步驟一步一步進(jìn)行即可,非常省力。詳細(xì)請見:http://confluence.atlassian.com/display/JIRA/Installing+JIRA+on+Tomcat+6.0#InstallingJIRAonTomcat6.0-1.UnpackJIRA。感嘆一下,有官方正式支持就是好啊。
雖然最后的結(jié)果不大好,不過上面的這個過程,已經(jīng)遠(yuǎn)比當(dāng)前google上能找到的資料要多了。如果其他朋友有打算用jira4 + resin4 + mysql的,可以稍微參考,少走彎路。如果最后能安裝成功正確使用,希望能告知正確的安裝方法,謝謝!