服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jive2.6.4安装配置不完全手册


  jive2.6.4安装配置不完全手册

作者:ant21

摘要:介绍jive2.6.4在windows2000中文版+resin+mysql平台下的安装,配置,修改以及完全中文化,增加插件的关键步骤和方法。

    jive2.6.4是jivesoftware推出jive3之前的最后一个jive2版本,包括国际化,搜索,附件(pro和ent版本)等几乎所有基本功能都已经完全具备了,而且它的扩展接口也使自己开发相应的插件变得非常简单。因此,我们选择安装jive2.6.4而不是它的更高版本。

1. 安装


(1) 平台选择
我使用windows2000sp4,resin2.1.4,mysql3.23.51-nt,jive2.6.4pro,j2sdk1.4.1-rc,mm.mysql-2.0.14.jar。

为什么不选择tomcat?我的经验是,jive2包括以前的版本,比较适合运行在resin平台上,它对于中文的支持处理非常好;但这种情况到了jive3就不同了,jive3用tomcat运行,对中文的支持显得更好一些。如果有兴趣,你可以用jive的同一版本在resin和tomcat上都运行一下试试,马上就能体会到。所以,这里我们选择resin平台,我用的版本可能老一些,你也可以下载新的版本,没有问题。

数据库用mysql,我想没有多大问题,它已经非常普及了。你可以用更新一点的版本。

windows2000sp4,呵呵,如果你用linux,那我也不知道这些方法还管不管用了。

java的版本我想还是用1.4以上的吧,因为有正则表达式的支持。或许自己写插件的时候用得到。

jdbc选用mm.mysql-2.0.14.jar,现在mysql有了connector,但我没有试用过,你可以试一试。

(2) 阅读jive自带的文档
文档内容包括安装指导,升级指导,数据库安装指导,管理指导,开发指导等等。建议你能够仔细阅读一下,非常有用的。

(3) 安装设置resin
解压以后就可以直接使用了。下面的设置是可选的:
假设你把resin装在d:esin下面,那么先修改conf目录下的resin.conf,至少把端口改为80,在恰当的位置(文件里有足够的注释让你知道该在哪里下手)加上这么一句就可以:<http port='80'/>。
你还可以把不需要的服务都注释掉,比如一些示例。

(4) 安装jive2.6.4pro
要使用pro版本,你得有一个合法的jive.license文件,可以从网上申请一个30天试用期的,或者自己crack。其实jive几乎就是开源的,它的所有class文件都没有经过混淆,这样只要我们用jad反编译一下就可以得到源文件了。关于jive的crack,这里不讨论,但我想说是非常简单的,你只要修改licensemanager这一个文件就可以,没错,就是一个,包括后来的jive3。

假设你把jive解压到d:jive以后,有两种方法可以安装,一是用war文件,还有一种是手动安装。这里我们使用手动安装的方式。

第一步:拷贝application目录
先在d:esinwebapps下面新建一个forum目录,然后把你d:jiveapplication目录下的所有内容拷贝到d:esinwebappsforum目录下面。

第二步:拷贝jivehome目录
把d:jive下面的jivehome目录拷贝到你硬盘上的任何角落都可以,但不要把它直接放在resinwebapps目录下面,因为这样别人就会从浏览器里面看到你的配置情况。我把jivehome放在d:esinwebappsforumweb-infjivehome,这样对于以后打包整个站点会比较方便。

第三步:设置jivehome位置
这一步很重要。在你的d:esinwebappsforumweb-infclasses下面,你会看到一个jive_init.properties文件,这个文件是用来告诉jive它的jivehome的安装位置的。用文本编辑器打开它,看看它的说明,然后把你自己的jivehome写进去,注意文件分隔符要使用“/”,比如:d:/resin/webapps/forum/web-inf/jivehome。指定jivehome的位置还有一种方法,但是稍微复杂一点,你可以去看文档。

第四步:拷贝jive.license文件(如果你crack了jive,这一步也许就不需要了)
把你的jive.license文件也放到jivehome里面。

(5) 为jive建立一个数据库
安装好mysql以后,假设装到d:mysql目录下。

第一步:新建数据库
从开始菜单运行控制台工具cmd,从cmd里面转到d:mysqlin目录下,输入:

mysqladmin create 数据库名称

这个命令用来在mysql里面创建一个新数据库。名称随便,但我建议你尽量用含义清晰的命名,比如我的是jive264p_resin,这样以后如果要用tomcat的化,就可以取名为jive264p_tomcat,对于进行不同平台的测试是非常有用的。

第二步:导入schema文件
先在你的d:jivedatabase目录下面找到jive_mysql.sql,然后你可以把它拷贝到d:mysqlin目录下(为了方便)。好了,现在重新调出cmd,如果刚才你把它关掉了,那么重新打开它,并转到d:mysqlin目录下,输入:

type jive_mysql.sql | mysql 数据库名称

这里的名称就是你刚才创建的数据库名称。
如果没有出错的话,好了,现在jive数据库已经完全安装成功了。

(6) 安装jdbc
如果你已经得到mm.mysql-2.0.14.jar或者其它支持mysql的jdbc,那么,

第一步:把它拷贝到d:esinwebappsforumweb-inflib目录下,建议最好改一下名称,比如mm.mysql.jar就可以了。

第二步:加入类路径(classpath)
在windows的属性里面加入jdbc的类路径,比如classpath=.,d:esinwebappsforumweb-inflibmm.mysql.jar
当然,如果你是第一次安装java,那还有其它类路径需要设置,你可以参考其它的资料,比如《java2 核心技术 卷i》。

如果以后要增加插件或其它类库,也把它们放在这个目录下面。

(7) 运行jive自带的安装工具
好了,经过刚才的一系列安装,jive现在只要再在它的管理台工具下面进行最后的一些设置,就完全可以运行了。打开你的服务器(resin),在浏览器的地址栏输入以下地址http://your_host_name/forum/admin/setup,看到jive的安装界面了吗?

第一步:安装自检
jive会检查它所需要的所有东西。经过我们前面6个步骤的安装,这里肯定是完全成功的(当然,或许你的jive.license有点问题)。如果不是这样,那么请再仔细检查前面6个步骤你是否有哪里做的不对。

第二步:用户系统(pro版)
一个是标准用户系统(默认),另一个是自定义用户系统。选择标准用户系统就可以了。如果你选择自定义,那么下一步jive将会要求你提供你自己编写的用户类和组管理类等等,这个我想以后自己修改jive的时候用得上。

第三步:数据库设置
这也是最最容易出错的地方,一定要仔细。不过pro版本已经内置了好几个常见数据库的jdbc,只要你选择相应的数据库,然后填入用户名,密码,主机名,数据库名称等等就可以了。

不过我还是建议你使用第三个选项--第三方数据库驱动,让我们自己来填写各种数据,这样就可以使用最新的驱动程序。(basic版本没有内置驱动程序,必须自己指定jdbc)

这时候可以看到要填写6个项目,这里只说最容易出错的前两个:jdbc driver和server。
如果你用mysql和mm.mysql.jar,那么
jdbc driver应该填写:org.gjt.mm.mysql.driver
server应该填写:jdbc:mysql://localhost:port/数据库名

注意:
不要在driver里面加入各种参数。
这里最好填写localhost,因为换作ip或是主机名我还没有连接成功过。


剩下要填写的内容就很简单了,完成后,点击continue,这时候jive会尝试和数据库建立连接,如果连接成功,会显示数据库和jdbc等等的信息,如果出错了,请检查上面的步骤哪一步没有做对,修改后继续,直到连接成功。

第四步:admin帐户设置
输入email,密码等等,很简单,不说了。不过要注意,用户名是admin,不能修改,只能修改密码。

恭喜你,到这里,jive已经完完全全安装成功了,下一步要做的,就是用admin帐户登陆管理台,进行各项设置了。


2. 修改配置以支持中文


总的原则是:完全使用utf-8,不要在任何地方出现gb2312。

(1) 管理台设置
用你的admin帐户登陆管理台以后,在global settings选项卡的locale settings下面,设置:

locale:中文(中国)
time zone:(gmt+08:00)asia/shanghai cst
character set:unicode(utf-8)

这里字符集一定要设置为utf-8,因为jive本身是被设计为一个i18n的网络应用,而不单单是针对某种字符集,因此要从utf-8的角度去思考,会得到意想不到简单的方法。

在search settings下面设置:

indexer type: double-byte(asian lanuages)

这是为了让jive能够支持中文搜索。

好了,管理台里面要做的就这两步,没别的了,怎么样,简单吧?

(2) 修改web.xml文件
在d:esinwebappsforumweb-inf目录下有一个叫做web.xml的文件,用文本编辑器打开它。

第一步:你会在文件开头发现jive使用的是servlet 2.2的dtd,而下面servlet 2.3的dtd是被注释掉的,你要做的就是把servlet 2.3 dtd的注释打开,而把servlet 2.2 dtd注释掉。

第二步:从文件的50行到59行可以看到一段注释掉的<filter>和<filter- mapping>,现在把这些注释打开,在<filter-name>set character encoding</filter-name>里面填入utf-8,修改后看起来是这样的:

<filter>
        <filter-name>utf-8</filter-name>
        <filter-class>com.jivesoftware.forum.util.setcharacterencodingfilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>utf-8</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

(3) 修改jive_config.xml文件
在你的jivehome文件夹下面,什么?哪里是jivehome文件夹?好吧,如果你不记得了,那么请回顾一下“安装jive2.6.4pro”部分的第二步和第三步。

找到<database>标签,在里面加入<mysql>标签,就像这样:
  1. <mysql>
  2.     <useunicode>true</useunicode>
  3. </mysql>

好了,让我想想,还有什么要做的吗?嗯,好像没有了,当你完成以上三步的时候,你已经得到一个完全支持中文的jive了,包括搜索。


3. 中文化jive


这里的中文化不包括管理台在内。

(1) 文字部分
第一步:翻译
在web-inflib目录下找到jive.jar文件,用winrar打开,解压jive_i18n_en_properties文件,然后把它移动到web-infclasses目录下面,用文本编辑器打开它,把里面所有等号右边的内容翻译成中文。

第二步:用native2ascii进行转换
调用cmd,转到web-infclasses目录下,输入:

native2ascii jive_i18n_en_properties jive_i18n_zh_properties

这里没有指定编码是因为它会使用平台默认编码,即gbk。
注意使用native2ascii时,输出目录下不能存在与目标文件同名的文件,否则将会报错。这意味着如果你要再次输出jive_i18n_zh_properties时,必须先把已经存在的那个删除或者更名。

(2) "community forums" 图片
如果想把那个有"community forums"字样的图片换掉,除了在管理台指定其它图片之外,你还可以在forumimages目录下放入一个名为logo_zh.gif的图片,这样jive会自动调用这个图片。


4. 修改几个bug


(1) 搜索结果显示
当搜索结果超过1页的时候,后面的搜索结果页面你是无法看到的,永远只能看到第一页。这个问题是由于在构造url的时候编码不当造成的。

解决方法:
修改search.jsp第302行,把原来的
encodedquerytext = stringutils.encodehex(querytext.getbytes("utf-8"));
改为
encodedquerytext = stringutils.encodehex(querytext.getbytes());

(2) 用户名字符数
由于使用了utf-8,不管是一个汉字还是一个英文字母,jive都认为是一个字符。所以在用户注册的时候,如果使用中文名,会出现必须使用4个汉字的情况。

解决方法:
修改account.jsp第62行,把原来的
username.length() < 4 改为 username.length() < 2
修改第124行,把原来的int minusernamelength = 4;
改为int minusernamelength = 2;

(3) 附件中文名显示
同样由于编码的原因,上传附件如果是中文名称,则会显示乱码。

记住,原则是使用utf-8。

解决方法:

第一步:修改attach.jsp

在getcanonicalname方法中(第31行),返回filename之前,加入以下几句:
  1. try {
  2.     filename = new string(filename.getbytes("iso-8859-1"),"utf-8");
  3. catch (unsupportedencodingexception e) {
  4.     e.printstacktrace();
  5. }

目的是使中文名重新用utf-8编码,这样在页面中使用utf-8进行浏览时才能正确显示。

然后将第517行的> <a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname()) %>"
改为
> <a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname(), "utf-8") %>"


第二步:修改threadmode2.jsp

第680行,将<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname()) %>"
改为
<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname(), "utf-8") %>"

第687行,将<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname()) %>"
改为
<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname(), "utf-8") %>"


第三步:修改threadmode1.jsp

第616行,将<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname()) %>"
改为
<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname(), "utf-8") %>"

第623行,将<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname()) %>"
改为
<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname(), "utf-8") %>"

第724行,将<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname()) %>"
改为
<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname(), "utf-8") %>"

第731行,将<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname()) %>"
改为
<a href=><%= path %>/servlet/jiveservlet/download/<%= forumid %>-<%= threadid %>-<%= message.getid() %>-<%= attachment.getid() %>/<%= urlencoder.encode(attachment.getname(), "utf-8") %>"

(4) forum / category name无法中文化
这也许是由于jive开发者的一个小小疏忽造成的。

解决方法:修改index.jsp
把第164-166行的注释去掉,同时注释掉第167行。

对于上面几个比较典型的bug,或许你有更好的解决方法,一定告诉我。


5. 增添插件


很简单,这是在管理台完成的。
在global settings选项卡下面点击global filters,你会看到jive已经安装的所有filter,要安装新的filter,就在最下面填写class name,然后add filter就可以了。

要注意的是filters的排列顺序,原则是:
html filter永远第一位。
在没有安装javacodehighlighter filter的情况下,newline filter永远最后一位。
在安装了javacodehighlighter filter的情况下,javacodehighlighter filter永远最后一位,newline filter倒数第二位。

还有,我建议你不要安装word break filter,它会在正文中莫名其妙的插入空格,非常讨厌。不要安装text stylizer filter,因为它会将"i"转义,这会导致我们添加的java代码中使用了int i变量的时候,完全变为斜体字,很难看。(其实可以自己重新写一个插件的,不是吗?)

如果想要自己写插件的话,请参考我的另一篇文章《为jive2.x写imagefilter》。


嗯,好了好了,花了3天时间,把我在jive上的一些心得详详细细的回忆并记录了下来,也算对自己有个交代,更重要的是,这样就可以抵抗遗忘之神的光临了。也希望对大家有点帮助。

扫描关注微信公众号