最近公司要做一個藥師在線諮詢功能,也就是在手機上做一個類似與QQ的IM聊天功能.以前沒有做過類似的功能,只有去網上看看,聽說Openfire不錯,所以就去閱讀相關資料,在2近一個星期的努力下,終於搭建起來了自己的Openfire服務器和自己的Spark客戶端,其實要搭建其環境相當簡單,只是以前沒有做過類似的功能,走了不少彎路,在此寫出來,沒有多少技術含量,只是希望幫助有類似需要的童鞋少走一些彎路
我用的Ubuntu系統,其實Windows上也相似,不過沒有去試過.
1.環境,需要安裝Java環境和Mysql數據庫.
在Ubuntu下安裝環境相當簡單,只需要將相應的Java環境下載下來放到本地,然後設置環境變量即可,網上很多,也可以看我安裝Java環境的一篇博客.
安裝Mysql更簡單,只需要一句簡單的install語句即可.sudo apt-get isntall mysql-server;
2.下載Openfire和Spark,我下載的是Openfire_3.8.2和Spart_2_6_8.
2.1下載Openfire後解壓,然後放到/opt下.
2.2 建數據庫.
連接數據庫mysql -u root -p mysql;
查看數據庫:show databases;
創建數據庫openfire:create database openfire;
進入數據庫openfire: usr openfire;
初始化數據庫,用openfire數據庫語句來初始化數據庫.source /opt/openfire/resources/database/openfire_mysql.sql;
3.設置OPenfire,進入http://127.0.0.1:9090/進行設置,只是在數據庫的時候設置成自己的數據名就OK.
4.啓動Spark,由於Spark與Openfire是同一個公司開發的,所以很容易設置,啓動後設置服務器就OK了.
但是在Ubuntu下可能會報錯
spark cannot access Spark/lib/windows: No such file or dir
解決如下:http://community.igniterealtime.org/thread/31623You just need to change windows to linux in the Spark startup file.
There was this:
for i in `ls "$app_home/lib/windows" | egrep "\.(jar$|zip$)"`
to
for i in `ls "$app_home/lib/linux" | egrep "\.(jar$|zip$)"`
and it is running for me. Although, now that I look at the file, right under it, I see this:
_path "$app_home/lib/windows/$i"
如果出現亂碼,有2個可能,1.數據庫編碼不對,2.OPenfire編碼不對,
創建數據庫的時候設置utf8編碼
create database openfire default character set utf8 default collate utf8_general_ci
如果已經建好數據庫,則修改其編碼:
mysql> alter database openfire default character set utf8 default collate utf8_general_ci;
在初始化openfire數據庫,即第一次配置openfire服務器時,在連接數據庫那裏的連接串要加入字符編碼格式,必須在連接裏增加UTF8的編碼要求,連接字符串設置如下: jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8 如果已經安裝完成,這個配置也是可以改動的,直接到openfire的安裝目錄下,找到conf/openfire.xml這樣一個文件,打開找到如下的XML節,修改其中的serverURL即可 <database> <defaultProvider>
<driver>com.mysql.jdbc.Driver</driver>
<serverURL>jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8</serverURL>
注意:由於&具有特殊含義,因此原&符號必須被轉義爲&(在xml中使用:“jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8”這個字符串。)
Spare界面不支持中文的解決辦法:
Linux下Java圖形界面中文顯示亂碼問題往往是所合適的jre/fonts裏面沒有合適的字體。
1,找到jre路徑,創建fallback文件夾
代碼:cd /home/gaoyibo/comodo/openfire/Spark/jre/lib/fonts
sudo mkdir fallback
2,進入fallback文件夾,鏈接中文字體(我選的是文泉驛正黑)
代碼:cd fallback
sudo ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc
sudo mkfontdir
sudo mkfontscale