แม้จะมีโปรแกรม chat บนอินเตอร์เนตมากมายให้เลือกใช้ ทั้ง MSN, Google Talk, Yahoo Messenger หรือ Facebook แต่เนื่องด้วยเหตุผลทางด้านความปลอดภัยของข้อมูล ไม่ว่าจะเป็นข้อความที่คุยกัน หรือไฟล์ที่ส่งระหว่างกัน ในหลายๆ องค์กรจึงเลือกติดตั้งโปรแกรมที่อนุญาตให้พนักงานสามารถ chat สื่อสารกันภายในองค์กรเท่านั้น
เพื่อที่จะใช้โปรแกรม chat (XMPP) ภายใน จำเป็นต้องติดตั้งโปรแกรมในสองส่วน คือฝั่ง server ในที่นี้เลือกโปรแกรม Openfire และโปรแกรมฝั่ง client ในที่นี้คือโปรแกรม Spark
Server ติดตั้งโปรแกรม Openfire
ทดสอบบนเซิร์ฟเวอร์ติดตั้ง Fedora 14 (x86_64)
ดาวน์โหลดโปรแกรม Openfire เป็นไฟล์แบบ rpm (ล่าสุดที่เขียนคือเวอร์ชั่น openfire-3.6.4-1.i386.rpm)
ใช้คำสั่ง rpm เพื่อติดตั้ง
[root@fc14-64a ~]# rpm -ivh openfire-3.6.4-1.i386.rpm Preparing... ########################################### [100%] 1:openfire ########################################### [100%]
รันคำสั่ง service เพื่อรันเซอร์วิส openfire
[root@fc14-64a ~]# service openfire start Starting openfire:
การใช้คำสั่ง service เพื่อรัน openfire จะไม่ขึ้นผลลัพธ์ว่า OK หรือ FAIL เหมือนกับ service อื่นๆ ต้องใช้คำสั่ง ps เพื่อดู process
[root@fc14-64a ~]# ps -ef | grep openfire
ไม่มี process เกี่ยวกับ openfire เลย แสดงว่าต้องมีอะไรผิดพลาด
เมื่อมีปัญหาในการรัน openfire สามารถตรวจสอบได้จากไฟล์ที่อยู่ใน /opt/openfire/logs/
[root@fc14-64a ~]# ls -l /opt/openfire/logs/ total 4 -rw-r--r-- 1 daemon daemon 85 Feb 4 22:49 nohup.out
ตรวจสอบไฟล์ nohup.out เพื่อหาปัญหา
[root@fc14-64a ~]# cat /opt/openfire/logs/nohup.out
nohup: failed to run command `/opt/openfire/jre/bin/java': No such file or directory
โปรแกรม openfire ถูกพัฒนาด้วย java จำเป็นต้องใช้ jre ในการรัน ข้อความที่แสดงในไฟล์ nohup.out คือไม่สามารถเรียก java ได้
ปัญหานี้เนื่องมาจากไฟล์ rpm ที่ดาวน์โหลดมานั้น ใช้รันบนเครื่อง 32-bit (i386) รวมทั้งเวอร์ชั่น JRE ที่รวมมาในไฟล์ rpm ก็เป็น 32-bit ด้วย แต่เรานำมาติดตั้งบน OS แบบ 64-bit (x86_64)
ทดลองรัน java โดยตรง ก็ไม่ได้
[root@fc14-64a ~]# /opt/openfire/jre/bin/java
-bash: /opt/openfire/jre/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
วิธีการแก้ไขปัญหาคือ ต้องติดตั้ง glibc เวอร์ชั่น 32-bit ด้วย
สำหรับ Fedora 14 (x86_64) ต้องติดตั้งไฟล์ rpm เพิ่มเติมคือ “glibc-2.12.90-17.i686.rpm” และ “nss-softokn-freebl-3.12.7-6.fc14.i686.rpm” ทั้งสองไฟล์ดาวน์โหลดได้จาก Fedora 14 (x86_64) Everything
[root@fc14-64a ~]# rpm -ivh glibc-2.12.90-17.i686.rpm nss-softokn-freebl-3.12.7-6.fc14.i686.rpm Preparing... ########################################### [100%] 1:nss-softokn-freebl ########################################### [ 50%] 2:glibc ########################################### [100%]
ลองรัน java อีกครั้ง จะสามารถรันได้
[root@fc14-64a ~]# /opt/openfire/jre/bin/java Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file)
... ...
ใช้คำสั่ง service เพื่อรันเซอร์วิส openfire
[root@fc14-64a ~]# /etc/init.d/openfire start Starting openfire:
ใช้คำสั่ง ps เพื่อดู process ของ openfire
[root@fc14-64a ~]# ps -ef | grep openfire daemon 1138 1 9 23:02 ? 00:00:02 /opt/openfire/jre/bin/java -server -DopenfireHome=/opt/openfire -Dopenfire.lib.dir=/opt/openfire/lib -classpath/opt/openfire/lib/startup.jar -jar /opt/openfire/lib/startup.jar
ดูไฟล์ใน /opt/openfire/logs/ เพื่อดูสถานะการรันโปรแกรมในส่วนต่างๆ
[root@fc14-64a ~]# ls -l /opt/openfire/logs/ total 68 -rw-r--r-- 1 daemon daemon 0 Feb 4 23:02 debug.log -rw-r--r-- 1 daemon daemon 0 Feb 4 23:02 error.log -rw-r--r-- 1 daemon daemon 129 Feb 4 23:03 info.log -rw-r--r-- 1 daemon daemon 89 Feb 4 23:03 nohup.out -rw-r--r-- 1 daemon daemon 0 Feb 4 23:02 warn.log
[root@fc14-64a ~]# cat /opt/openfire/logs/nohup.out Openfire 3.6.4 [Feb 4, 2011 4:02:38 PM]
[root@fc14-64a ~]# cat /opt/openfire/logs/info.log 2011.02.04 16:02:38 Openfire 3.6.4 [Feb 4, 2011 4:02:38 PM] 2011.02.04 16:03:19 Admin console listening at http://127.0.0.1:9090
คอนฟิก openfire
ไฟล์คอนฟิกหลักของ Openfire คือ /opt/openfire/conf/openfire.xml
[root@fc14-64a ~]# ls -l /opt/openfire/conf/openfire.xml -rw-r--r-- 1 daemon daemon 1791 Feb 5 14:01 /opt/openfire/conf/openfire.xml
owner และ group ของไฟล์ ต้องเป็น daemon เพื่อจะสามารถคอนฟิกโปรแกรมผ่านเว็บได้
เปิด browser เพื่อเริ่มคอนฟิก openfire โดยระบุพอร์ตเป็น 9090 เช่น http://192.168.1.1:9090/
หน้า Welcome to Setup เลือก English
หน้า Server Settings
Domain: ใส่เป็นชื่อเคื่อง hostname หรือ IP Address ของเซิร์ฟเวอร์
Admin Console Port: 9090
Secure Admin Console Port: 9091
หน้า Database Settings เลือก [x] Standard Database Connection
หน้า Database Settings – Standard Connection
Database Driver Presets: MySQL
JDBC Driver Class: com.mysql.jdbc.Driver
Database URL: jdbc:mysql://[host-name]:3306/[database-name]
ระบุ [host-name] และ [database-name] ที่ใช้ ตัวอย่างเช่น
jdbc:mysql://localhost:3306/openfire
ระบุ Username, Password สำหรับเชื่อมต่อเข้า MySQL
Username: openfire
Password: secret
ก่อนที่จะกดปุ่ม [Continue] เพื่อไปขั้นต่อไป ต้องสร้างฐานข้อมูลสำหรับ openfire ก่อน
สร้างฐานข้อมูล Openfire
สร้าง database บน MySQL และ GRANT สิทธิให้โปรแกรม openfire สามารถเชื่อมต่อได้ ตามข้อมูลที่ระบุด้านบน
mysql> CREATE DATABASE openfire; Query OK, 1 row affected (0.01 sec)
mysql> GRANT ALL ON openfire.* to openfire IDENTIFIED BY 'secret'; Query OK, 0 rows affected (0.00 sec)
ใส่ข้อมูล table ลงฐานข้อมูล openfire โดยใช้ไฟล์ sql ที่อยู่ใน /opt/openfire/resources/database/
[root@fc14-64a ~]# cd /opt/openfire/resources/database/ [root@fc14-64a database]# ls -l total 116 -rw-r--r-- 1 daemon daemon 13480 May 2 2009 openfire_db2.sql -rw-r--r-- 1 daemon daemon 13763 May 2 2009 openfire_hsqldb.sql -rw-r--r-- 1 daemon daemon 12594 May 2 2009 openfire_mysql.sql -rw-r--r-- 1 daemon daemon 14024 May 2 2009 openfire_oracle.sql -rw-r--r-- 1 daemon daemon 13961 May 2 2009 openfire_postgresql.sql -rw-r--r-- 1 daemon daemon 14023 May 2 2009 openfire_sqlserver.sql -rw-r--r-- 1 daemon daemon 14097 May 2 2009 openfire_sybase.sql drwxr-xr-x 21 daemon daemon 4096 Feb 4 22:47 upgrade
[root@fc14-64a database]# cat openfire_mysql.sql | mysql -u root -p openfire Enter password:
ตรวจสอบ table ที่สร้างขึ้น
mysql> CONNECT openfire;
mysql> SHOW TABLES; +----------------------+ | Tables_in_openfire | +----------------------+ | ofExtComponentConf | | ofGroup | | ofGroupProp | | ofGroupUser | | ofID | | ofMucAffiliation | | ofMucConversationLog | | ofMucMember | | ofMucRoom | | ofMucRoomProp | | ofMucService | | ofMucServiceProp | | ofOffline | | ofPresence | | ofPrivacyList | | ofPrivate | | ofProperty | | ofPubsubAffiliation | | ofPubsubDefaultConf | | ofPubsubItem | | ofPubsubNode | | ofPubsubNodeGroups | | ofPubsubNodeJIDs | | ofPubsubSubscription | | ofRemoteServerConf | | ofRoster | | ofRosterGroups | | ofSASLAuthorized | | ofSecurityAuditLog | | ofUser | | ofUserFlag | | ofUserProp | | ofVCard | | ofVersion | +----------------------+ 34 rows in set (0.00 sec)
หน้า Profile Settings เลือก [x] Default
หน้า Administrator Account ใส่อีเมล์ และระบุที่ใช้ในการ login เข้าสู่หน้า Admin Console
หน้า Setup Complete กดปุ่ม [Login to the admin console]
หลังจากคอนฟิกผ่านหน้าเว็บเรียบร้อย ต้องรีสตาร์ตเซอร์วิส openfire
[root@fc14-64a ~]# service openfire restart Shutting down openfire: Starting openfire:
Admin Console
หลังจากคอนฟิกเรียบร้อย เปิด browser http://192.168.1.1:9090/ จะเข้าสู่หน้า Admin Console
ใส่ username เป็น “admin” และ password ตามที่ระบุไว้ตอนคอนฟิกหน้า Administrator Account
หน้าจอ Service Information แสดงสถานะของโปรแกรม openfire
ไปที่ “Users/Groups” -> “Create New User” เพื่อสร้าง user
หน้า “Client Sessions” แสดงชื่อ user ที่ใช้งานอยู่
Client: ติดตั้ง Spark
สำหรับฝั่ง client ดาวน์โหลดและติดตั้งโปรแกรม Spark
เมื่อติดตั้งเสร็จเรียบร้อย รันขึ้นมา จะเป็นหน้าจอล็อกอิน
ใส่ Username, Password ตามที่สร้างไว้ บน Admin Console
ระบุ Server เป็น IP Address ของเครื่องเซิร์ฟเวอร์ที่ติดตั้ง Openfire
หน้าจอพร้อมใช้งาน
ตัวอย่างหน้าจอการสนทนา ระหว่างผู้ใช้