OpenFIRE with OpenBSD 4.3 &JAVA&PostgreSQL

来自 ChinaUnix Wiki

基于OpenBSD4.3 i386系统的JAVA编译及OpenFIRE&PostgreSQL应用

版权:没有 引用请注明出处,谢谢!作者:尘羽星翔


目录

前言

1 什么是OpenFire

Openfire 采用Java开发的开源的实时协作(RTC)服务器,基于XMPP(Jabber)协议。
您可以使用它轻易的构建高效率的即时通信服务器.
Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。
由于是采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登陆服务
简单的说是类似MSN的实时通信系统

2 什么是PostgreSQL

PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。

阅读指南:所有需要手工录入的部分都用加阴影的字符表示,需要特别注意的地方以红色字符表示.

开始编译以前,请将ports升级到最新

一、安装JAVA环境

1 开启linux支持

obsd支持原生的java运行环境,只在编译java的需要打开linux支持

sysctl kern.emul.linux=1

2 增加数据和堆栈限额(官方建议 非必须)

如果编译的时候出现类似于"Could not reserve enough space for object heap"这类的错误,就应该增加数据和堆栈的限额

ksh zsh bash环境(OB默认的就是ksh)

ulimit -dS 384*1024
ulimit -sS 8*1024

csh tcsh 环境

limit datasize 384m
limit stacksize 8m

本人在512M内存的电脑中编译的时候,没有做这一步,也很顺利的编译通过了

3 建立/etc/mk.conf

java编译的时候需要检测/etc/mk.conf下有没有ACCEPT_JRL_LICENSE=Yes这个语句,没有的话会提示错误,因此应当手工建立该文件

我的mk.conf是

DISTDIR=/files/dist 
MASTER_SITE_OVERRIDE=ftp://ftp.freebsdchina.org/pub/OpenBSD/distfiles/${DIST_SUBDIR}/
PACKAGE_REPOSITORY=/files/packages
FETCH_CMD=/usr/local/bin/wget
ACCEPT_JRL_LICENSE=Yes

其中

DISTDIR是我指定的下载文件所在位置

PACKAGE_REPOSITORY是我指定的生成pkg的位置

只有ACCEPT_JRL_LICENSE=Yes是必须的

4 进入jdk目录开始编译安装

进去jdk的ports

cd /usr/ports/devel/jdk/1.7

a 编译安装jdk

JDK是java的开发环境

make install

b 编译安装jre

JRE是java的运行环境,如果不做开发,只是运行OpenFIRE的话,jre就足够了

env SUBPACKAGE=-jre make install

c 下载java编译所需文件

编译java的所需的文件需要手动复制到DISTDIR指定的位置

默认是/usr/ports/distfiles

编译所需文件make运行以前会有提示显示编译所需java文件的位置和名称,按提示下载并复制就可以了

如果缺少文件的话会有"Error code 1"的错误提示,编译所需下载的文件列表为:

http://download.java.net/tiger/tiger_u14/jdk-1_5_0_14-fcs-src-b03-jrl-05_oct_2007.jar

编译及安装过程大概需要5个小时

5 设置JAVA环境

JAVA的环境可以通过系统变量和用户变量两种方法来设置

系统变量对整个系统中所有用户起作用,用户变量只对设置的用户起作用

文中以jre1.6为例,具体配置根据读者安装的java环境自行修改

a 设置系统变量

建立/etc/profile文件,加入

JAVA_HOME=/usr/local/jre-1.6.0
export JAVA_HOME
PATH="$PATH:$JAVA_HOME/bin"
export PATH

保存退出

b 设置系统变量

修改用户home目录里面的.profile文件,加入红色部分

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin:/usr/local/jre-1.6.0/bin
export PATH
export JAVA_HOME=/usr/local/jre-1.6.0
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
: ${HOME='/root'}
export HOME
umask 022
if [ -x /usr/bin/tset ]; then
        eval `/usr/bin/tset -sQ \?$TERM`
fi

c 测试JAVA环境

重新登陆系统令设置的环境变量生效,输入

java -version

如果显示的是java相关版本信息,说明java已经生效,可以进行取消linux的支持,并进行下一步的安装

(注:本人编译的时候是按照1.7编译的,环境设置都正确,可是java提示错误,可能是ports的问题)

二、安装PostgreSQL

1 安装数据库

进入ports中postgresql,编译安装

cd /usr/ports/databases/postgresql
make install

提示完毕以后,pgsql的客户端已经安装完毕,pgsql的数据库端,需要手动安装

pkg已经在编译pgsql客户端的时候生成了,位置由mk.conf中PACKAGE_REPOSITORY字段定义

默认位置是/usr/ports/packages/i386/all/

cd /usr/ports/packages/i386/all/
pkg_add postgres*

2 建立数据库

a 初始化数据库

su - _postgresql
mkdir /var/postgresql/data
initdb -D /var/postgresql/data -U postgres -A md5 -W

其中postgres 为pgsql的超级管理员,密码要记下,以后管理要用

b 运行数据库

postgres -D /var/postgresql/data

或者

pg_ctl -D /var/postgresql/data -l logfile start

如果没有提示错误,pgsql就已经运行了

c 建立新用户

建立超级用户

createuser -U postgres -P
Enter name of role to add: 输入超级用户名
Enter password for new role:输入密码
Enter it again:确认密码
Shall the new role be a superuser? (y/n) y
Password:超管口令

d 建立数据库

createdb -U postgres -O 超级用户名 -E UNICODE 数据库名称

3 设置自动运行和关闭

a 设置开机自动运行

在/etc/rc.local中加入

if [ -x /usr/local/bin/pg_ctl ]; then
        echo -n ' postgresql'
        su -l _postgresql -c "nohup /usr/local/bin/pg_ctl start \
            -D /var/postgresql/data -l /var/postgresql/logfile \
            -o '-D /var/postgresql/data' >/dev/null"
fi

b 设置关机自动关闭

在/etc/rc.shutdown中加入

if [ -f /var/postgresql/data/postmaster.pid ]; then
        su -l _postgresql -c "/usr/local/bin/pg_ctl stop -m fast \
             -D /var/postgresql/data"
        rm -f /var/postgresql/data/postmaster.pid
fi

4 PostgreSQL 优化

a 修改 /etc/sysctl.conf

编辑 /etc/sysctl.conf,加入以下内容

kern.seminfo.semmni=256
kern.seminfo.semmns=2048
kern.shminfo.shmmax=50331648

b 修改/etc/login.conf

编辑/etc/login.conf,加入以下内容

postgresql:\
         :openfiles-cur=768:\
         :tc=daemon:

保存退出后,输入

cap_mkdb /etc/login.conf

重建login.conf.db文件

然后使用vipw或usermod修改postgresql

usermod -L postgresql postgresql系统用户名

其中 -L 指定的是修改的用户的登陆类

c 修改postgresql.conf文件

切换成postgresql用户

su - _postgresql

修改/var/postgresql/data/postgresql.conf

将max_connections 修改成你需要的并发链接数值,默认是40

保存退出后,重启数据库,输入

pg_ctl -D /var/postgresql/data -l logfile restart

来重启整个数据库,或者输入

pg_ctl -D /var/postgresql/data -l logfile reload

来重新加载postgresql配置文件

三、 安装OpenFIRE

OpenFIRE服务器端最新版本openfire_3_5_1[1]

服务器端插件[2]

1 服务器端安装

a 添加openfire系统用户

adduser
Enter username []: openfire用户名
Enter full name []: 
Enter shell csh ksh nologin sh [ksh]:回车
Uid [1000]:回车
Login group _openfire [_openfire]:回车
Login group is ``_openfire. Invite _openfire into other groups: guest no
[no]:回车
Login class authpf daemon default postgresql staff [daemon]:回车
Enter password []:输入密码
Enter password again []:确认密码
OK? (y/n) [y]: y
Add another user? (y/n) [y]: n

b 解压openfire

tar xzvf 你的openfire压缩包位置 -C /var

c 修改 openfire权限

cd /var
chown -R openfire用户名:openfire组名 openfire/

d 运行openfire

 su - openfire用户名
/var/openfire/bin/openfire start

如果没有错误提示 top有java的进程,说明openfire启动正常

2 openfire服务配置

在浏览器中输入

http://服务器ip:9090

第一页Choose Language中选中中文(简体)

第二页服务器设置保持默认

第三页数据库设置选择标准数据库连接

第四页数据库设置 - 标准连接中需要设置以下项目

数据库驱动选项:PostgreSQL
JDBC 驱动程序类:org.postgresql.Driver
数据库 URL:jdbc:postgresql://127.0.0.1:5432/数据库名称
用户名:超级用户名
密码:超级用户密码

第五页特性设置 初使设置

第六页管理员帐户 设置管理员密码管理员账号为admin

安装完成

3 设置openfire自动运行和关闭

a 设置开机自动运行

在/etc/rc.local中启动postgresql字段后面加入

if [ -x /var/openfire/bin/openfire ]; then
   echo -n ' openfire'
   su -l _openfire -c "/var/openfire/bin/openfire start >/dev/null"
fi

b 设置关机自动关闭

在/etc/rc.shutdown中关闭postgresql字段前面加入

if [ -x /var/openfire/bin/openfire ]; then
       su -l _openfire -c "/var/openfire/bin/openfire stop"
fi

四 设置Spark

SparkWIN下客户端最新版本 2.5.8[3]

程序安装完毕后

点击帐户来申请账号

服务器中填入OpenFIRE服务器所用ip

后记:

终于写完了这篇文章,如果您发现本文有什么不对的地方,请和我联系

作者:尘羽星翔

E-mail:wosl2001@gmail.com

同时,希望欢迎有同样兴趣的朋友来一起研究

QQ群:51126069

欢迎您的加入!

个主工具