บทความต่อไปนี้นะครับคล้ายกับบทความการติดตั้ง Asterisk 1.6.2.0 บน CentOS 5.4 ที่ผมเคยได้แนะนำไปก่อนหน้านี้ แตกต่างกันนิดหน่อยตรงที่บทความนี้จะเป็นการติดตั้ง Asterisk เวอร์ชั่น 1.6.2.6 ซึ่งใหม่กว่า อีกทั้งโปรแกรม DAHDI ก็เป็นเวอร์ชั่น 2.3.0 ซึ่งก็ใหม่กว่าเช่นเดียวกันพร้อมทั้งดัดแปลงให้รองรับเทคนิคการกำจัดเสียงสะท้อนกลับ (Echo Canceller) แบบ Open Source Line Echo Canceller (OSLEC) ด้วยพร้อมๆกันเลย จะได้ไม่ต้องเปิดหาหลายบทความ ทำหลายขั้นตอน แต่ก็ยังคงให้ Asterisk ทำงานงานร่วมกับโปรแกรมอื่นๆได้อีกเช่นเดิมครับ ได้แก่ MySQL, RADIUS, SNMP, H.323, T.38 Fax เป็นต้น
ก่อนที่จะทำอะไรต่อไป ผมแนะนำให้ทำ 3 ขั้นตอนนี้ก่อนครับ รีสตาร์ทเครื่องแล้วค่อยเริ่มต้นติดตั้งโปรกรม
1. ปิดเซอร์วิส yum-updatesd บน CentOS
- โค้ด: เลือกทั้งหมด
chkconfig --level 2345 yum-updatesd off
เพื่อไม่ให้ CentOS อัพเดทตัวเองโดยที่เราไม่รู้เนื้อรู้ตัว อัพเดทโปรแกรมอื่นคงไม่เป็นไร แต่ถ้าอัพเดท Kernel หล่ะยุ่งแน่ครับ ถึงกับต้องคอมไพล์ DAHDI ใหม่เชียวนะครับ
2. ปิด SELinux
อีกเซอร์วิสที่ควรปิดคือ SELinux ครับ เพราะมันสร้างปัญหามากมายต่อทั้งการติดตั้งโปรแกรมและรันโปรแกรมที่จะตามมาในอนาคตใกล้ๆนี้
- โค้ด: เลือกทั้งหมด
vi /etc/selinux/config
เช็คบรรทัดนี้นะครับ ถ้าไม่เป็น disabled ก็แก้ไขให้เป็น disabled
- โค้ด: เลือกทั้งหมด
SELINUX=disabled
เซฟไฟล์ ออกจากโปรแกรม
3. อัพเดท CentOS และติดตั้ง kernel-devel, kernel-header
- โค้ด: เลือกทั้งหมด
yum –y update
- โค้ด: เลือกทั้งหมด
yum -y install kernel-devel kernel-headers
4. รีสตาร์ท CentOS
- โค้ด: เลือกทั้งหมด
reboot
ก่อนติดตั้ง (คอมไพล์) Asterisk เราควรติดตั้งโปรแกรมต่อไปนี้ก่อนครับเพื่อให้เรามีเครื่องมือที่จะคอมไพล์ Asterisk และให้ Asterisk ทำงานร่วมกับโปรแกรมเหล่านั้นด้วย วิธีการติดตั้งผมจะใช้แบบผสมคือใช้แพ็กเกจสำเร็จรูปและบางโปรแกรมก็คอมไพล์เองด้วย ดังต่อไปนี้ครับ
1. ติดตั้ง C/C++ Compiler
เราจะใช้ C/C++ Compiler ในการคอมไพล์โปรแกรมที่เขียนด้วยภาษา C/C++ ซึ่งโปรแกรมส่วนมากที่รันบน CentOS/Linux เขียนด้วย C/C++ ครับ และ Asterisk ก็เป็นหนึ่งในโปรแกรมเหล่านั้น
ติดตั้งด้วยคำสั่ง yum ดังนี้ครับ
- โค้ด: เลือกทั้งหมด
yum -y install gcc gcc-c++ bison flex patch make ncurses ncurses-devel autoconf automake libxml2-devel
2. ติดตั้ง radiusclient-ng
ก่อนติดตั้งอ่านหมายเหตุด้านล่างก่อนนะครับ
- โค้ด: เลือกทั้งหมด
wget http://download.berlios.de/radiusclient-ng/radiusclient-ng-0.5.6.tar.gz
tar xzvf radiusclient-ng-0.5.6.tar.gz -C /usr/src/
cd /usr/src/radiusclient-ng-0.5.6
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make && make install
หมายเหตุ
- Asterisk ใช้ Radius แค่เก็บข้อมูลการโทรหรือที่เรากเรียกว่า CDR (Call Detail Record) เท่านั้นนะครับ ถ้าไม่ต้องการเก็บ CDR ไว้ใน Radius Server ก็ไม่จำเป็นต้องติดตั้ง radiusclient-ng นะครับ
- ต้องมี Radius Server ด้วยนะครับ เพราะว่า radiusclient-ng มันเป็น Client มันต้องติดต่อกับ Radius Server โปรแกรมที่นิยมนำมาทำเป็น Radius Server ก็ได้แก่ FreeRadius (http://www.freeradius.org)
- สำหรับการคอนฟิกและไฟล์คอนฟิก radiusclient-ng อ่านที่บทความ radiusclient-ng นะครับ ซึ่งสาเหตุที่ผมไม่ได้เอามาเขียนรวมไว้ในบทความนี้ด้วยเป็นเพราะว่าคงมีบางท่านเท่านั้นที่ติดตั้งโปรแกรมนี้ (หรืออาจจะไม่มีเลย)
3. ติดตั้ง mysql และ mysql-devel
- โค้ด: เลือกทั้งหมด
yum -y install mysql mysql-devel mysql-server
4. ติดตั้ง libtiff และ spandsp
เพื่อให้ใช้งาน T.38 Fax ได้
4.1 ติดตั้ง libtiff, libtiff-devel
ใช้สร้างไฟล์เอกสารจากแฟกซ์ที่รับเข้ามา ติดตั้ง libtiff, libtiff-devel โดยใช้คำสั่ง yum
- โค้ด: เลือกทั้งหมด
yum -y install libtiff libtiff-devel
4.2 ติดตั้ง spandsp
- โค้ด: เลือกทั้งหมด
wget http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.6pre17.tgz
tar xzvf spandsp-0.0.6pre17.tgz -C /usr/src
cd /usr/src/spandsp-0.0.6
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make clean
make
make install
เว็บไซต์ของโปรแกรมคือ http://www.soft-switch.org/downloads/spandsp/ อาจมีเวอร์ชั่นใหม่กว่านี้
5. ติดตั้ง pwlib และ openh323
ทั้ง pwlib และ openh323 นี่จะทำให้ Asterisk รองรับ VoIP แบบ H.323 ครับ แต่ก็ใช่ว่าเราจะติดตั้ง pwlib, openh323 เวอร์ชั่นอะไรก็ได้ มันไม่ใช่แบบนั้นครับ เอาเป็นว่าใช้เวอร์ชั่นที่ผมแนะนำในนี้ก็แล้วกัน ผมลองมาแล้วว่าใช้งานได้ดีมากเลย
5.1 สร้างไฟล์ compiler.h
- โค้ด: เลือกทั้งหมด
vi /usr/include/linux/compiler.h
แล้วใส่บรรทัดเหล่านี้เข้าไป
- โค้ด: เลือกทั้งหมด
#ifndef __LINUX_COMPILER_H
#define __LINUX_COMPILER_H
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
#endif /* __LINUX_COMPILER_H */
บันทึกไฟล์
5.2 ติดตั้ง pwlib
- โค้ด: เลือกทั้งหมด
wget http://www.voxgratia.org/releases/pwlib-v1_10_3-src-tar.gz
tar xzvf pwlib-v1_10_3-src-tar.gz -C /usr/src
cd /usr/src/pwlib_v1_10_3
./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
make clean
make optshared
make install
5.3 ติดตั้ง openh323
พิมพ์ 3 บรรทัดนี้ก่อนครับ พิมพ์เสร็จแต่ละบรรทัดก็กด enter เลย หรือจะ Copy และ Paste ก็ได้
- โค้ด: เลือกทั้งหมด
export PWLIBDIR=/usr/src/pwlib_v1_10_3
export OPENH323DIR=/usr/src/openh323_v1_18_0
export LD_LIBRARY_PATH=$PWLIBDIR/lib:$OPENH323DIR/lib
- โค้ด: เลือกทั้งหมด
wget http://www.voxgratia.org/releases/openh323-v1_18_0-src-tar.gz
tar xzvf openh323-v1_18_0-src-tar.gz -C /usr/src
cd /usr/src/openh323_v1_18_0
./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
make clean
make optshared
make install
ถ้าคอมไพล์ไม่สำเร็จ มี Error ปัญหาอาจจะอยู่ที่ไฟล์ compiler.h ก็ได้นะครับ (ถ้าแน่ใจว่าได้สร้างไฟล์ compiler.h ไว้ใน /usr/include/linux แล้ว) ให้ค้นหาไฟล์ compiler.h ในเครื่อง แล้วก็อบไปแทนที่ไฟล์ compiler.h ใน /usr/include/linux แล้วจากนั้นคอมไพล์ openh323 ใหม่อีกรอบครับ
6. ติดตั้ง net-snmp
เพื่อให้ Asterisk รองรับ SNMP เราจะได้ใช้โปรแกรมประเภท SNMP Manager เช่น Cacti, MRTG, PRTG มอนิเตอร์ปริมาณการโทรใน Asterisk ด้วย
- โค้ด: เลือกทั้งหมด
yum -y install net-snmp net-snmp-libs net-snmp-devel net-snmp-utils net-snmp-perl
บทความที่เกี่ยวข้อง
ติดตั้ง Asterisk 1.6.2.6 ตอนที่ 2
ติดตั้ง CentOS 5.4
มอนิเตอร์ Asterisk ด้วย SNMP
แสดงสถานะการทำงานของ Asterisk ด้วยโปรแกรม FOP
ติดตั้งและคอนฟิก FreeRadius - Open Source Radius Server
คอนฟิก Asterisk ให้ใช้งานแบบ H.323