本文介绍JForum的安装。
JForum的运行环境:
开始本文之前,我们确认一下JForum的运行环境。
- Java动态运行环境(JRE)
参考:环境篇 - 构造Java开发环境
该文介绍了怎么在Windows以及Linux下安装Java环境
- 支持J2EE Servlet标准的任何一款Web服务器 :Tomcat,JBoss,Weblogic等
参考:
篇一:Windows 环境下 Web服务器Tomcat的安装与使用入门
篇二:Linux 环境下 Web服务器Tomcat的安装与使用入门
- 下列任意一款关系数据库 :Generic,HsqlDB,MySql,Oracle,PostgreSQL。
确认了已经准备好了JForum的运行环境之后,让我们开始JForum的安装之旅吧。
本文的测试环境:
- JForum 2.1.8
- J2SE6.0
- Tomcat5.5.17
- MySQL5.0.6
JForum的安装步骤
到JForum的官方网站上下载JForum的最新版本。目前(2008年3月)的最新版本是2.1.8。
2.1 创建jforum数据库,设置为utf-8编码。 utf-8编码可以在安装时默认设置为utf-8编码,或者单独设置。
C:\mysql\bin\>mysql -u root -p
Enter password:
mysql> CREATE DATABASE jforum DEFAULT CHARACTER SET utf8;
mysql> exit
Bye
C:\mysql\bin\>
2.2 创建数据库用户分配给其足够的权限
Enter password:
GRANT ALL PRIVILEGES ON *.* TO jforum_user@localhost IDENTIFIED BY 'my_password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO jforum_user@"%" IDENTIFIED BY 'my_password' WITH GRANT OPTION;
mysql> flush privileges;
mysql> exit
Bye
C:\mysql\bin\>
用户名/密码根据自己的情况设置。
2.3 执行JForum数据库创建脚本 (/WEB-INF/config/database/mysql/mysql_db_struct.sql)
<password>为用户密码
2.4 执行JForum初始化数据脚本 (/WEB-INF/config/database/mysql/mysql_data_dump.sql)
执行方法同上。
至此,数据库的准备工作完成。
3,修改全局配置文件SystemGlobals.properties
打开WEB-INF/config/SystemGlobals.properties文件,做以下修改:
3.1 查找database字样,确认[DATABASE SETTINGS]数据库设置正确。默认设置为mysql,若使用其他数据库,则需要修改。
3.2 修改forum.link,homepage.link等配置。
根据JForum版本的不同,可能是WEB-INF/config/jforum-custom.conf。请根据实际情况修改。
4,修改数据库配置文件mysql.properties
打开/WEB-INF/config/database/mysql/mysql.properties文件,根据刚才数据库的设置情况加以修改。
5,deploy jforum.war
将jforum.war或者解压缩之后的文件夹jforum拷贝到TOMCAT_HOME/webapps/目录
解压缩后的jforum目录具有以下阶层:
jforum
\images
\templates
\upgrade
\WEB-INF
...
index.htm
...
(可以将上面的jforum文件夹下的文件(不包含jforum目录本身)打包为一个jforum.zip,然后重新命名为jforum.war也可)
(JBoss服务器的情况,可以将jforum.war拷贝到 JBOSS_HOME/server/default/deploy目录下)
6,启动TOMCAT服务器
执行$TOMCAT_HOME/bin/startup.bat
7,打开浏览器,访问:
http://localhost:8080/jforum/
进入jforum的数据库初始化页面,进行初始化。
默认显示语言选择Chinese Simplifed (zh_CN),数据库选择utf-8编码。
完成设置。
至此,JForum论坛安装完成。
http://www.lifevv.com/java/doc/20080305222405208.html
使用ms sql2005的安装方法,如果说,把它修改为ms sql2000时,数据库创建脚本会有错误,程序本身也有一些ms sql2005特有的查询语句,所有最好是不要用ms sql2000。
jforum-2.1.8 详细配置
关键字: jforum-2.1.8 详细配置初次拿到庞大的代码,不知道从何下手,详细的看了一段时间的源代码,总算能跑起来了。
由于不是采用论坛的安装,而是自己手动配置各种参数。
而jforum的初始化又非常的繁杂。
数据库:sql server 2005
IDE : eclipse Europa
server: tomcat 6.0
jdk 1.6.0
因此现总结如下:
载入log4j.xml的配置文件
调用ConfigLoader.startSystemglobals(appPath); 加载SystemGlobals.properties文件。加载数据库配置文件,此处自己手动修改SystemGlobals.properties中的database.driver.name = sqlserver,默认的为mysql。
ConfigLoader.startCacheEngine();关于net.jforum.repository包下的10个Repository类和net.jforum.SessionFacade的初始化。
设置freemarker模板引擎
ModulesRepository.init(SystemGlobals.getValue(ConfigKeys.CONFIG_DIR));加载modulesMapping.properties,该文件描述了模块名与实现该模块功能的java类的对应关系
this.loadConfigStuff(); 将 urlPattern.properties , I18n语言支持 和 templatesMapping.properties 初始化。
SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_GENERIC));
SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_DRIVER));加载操作数据库的sql 语句文件。
String filename = SystemGlobals.getValue(ConfigKeys.QUARTZ_CONFIG);
SystemGlobals.loadAdditionalDefaults(filename);载入Quartz工作任务配置
ConfigLoader.createLoginAuthenticator();用户权限的设置
ConfigLoader.loadDaoImplementation(); 在sqlserver.properties配置文件根据数据库驱动类初始化相关dao,自己安装论坛时,数据库的配置信息都写在sqlserver.properties文件中
ConfigLoader.listenForChanges(); 文件等的监控
ConfigLoader.startSearchIndexer(); lucene搜索引擎
ConfigLoader.startSummaryJob()启动论坛发帖汇总信息电子邮件发送任务
Connection conn = DBConnection.getImplementation().getConnection();得到数据库的链接
ForumStartup.startForumRepository();载入论坛相关信息到缓存中,包括论坛目录信息、用户信息、在线用户信息等
RankingRepository.loadRanks(); 用户等级信息
SmiliesRepository.loadSmilies(); 表情符号
BanlistRepository.loadBanlist(); 阻止列表
至此,初始化过程完毕。
另外,
sqlserver数据库建表时,sqlserver_db_struct.sql中的表jforum_topics缺少一个字段[topic_moved_id] [bigint] NULL DEFAULT ((0)),
把BLOB类型的字段换为text类型。
某些sql语句有问题,比如sqlserver 2005不支持limit ?,因此应当改为 top (?) 加到语句前部分。
row_number() over的几个语句有问题,PostModel.selectByUserByLimit 的sql语句中,将最后一句改为ORDER BY post_time DESC,不必硬要用post_id排序。
感觉想把jforum集成到自己的项目中,问题还真不少。
现在暂时能跑起来了,但是还有很多逻辑,技术等没有理解消化,欢迎大家一起探讨。