วิธีการคอมไพล์ Asterisk 1.6.2.0 บน Linux CentOS 5.4 ให้รองรับฟีเจอร์ DAHDI, SNMP, Radius, H.323, MySQL, T.38 Fax
Note!
1 คำสั่งที่ต้องพิมพ์อยู่ในกรอบสี่เหลี่ยม "โค๊ด" นะครับ
2 บางทีต้องมีการแก้ไขไฟล์ก็ใช้โปรแกรม Text Editor บน CentOS เช่น vi ทำนะครับ
ก่อนอื่นทางที่ดีควรปิดเซอร์วิสนี้บน CentOS ก่อนนะครับนั่นคือเซอร์วิสที่ชื่อ yum-updatesd พิมพ์คำสั่งนี้
- โค้ด: เลือกทั้งหมด
chkconfig --level 2345 yum-updatesd off
เพื่อไม่ให้ CentOS อัพเดทตัวเองโดยที่เราไม่รู้เนื้อรู้ตัว อัพเดทโปรแกรมอื่นคงไม่เป็นไร แต่ถ้าอัพเดท Kernel หล่ะยุ่งแน่ครับ ถึงกับต้องคอมไพล์ DAHDI ใหม่เชียวนะครับ
อีกอย่างหนึ่งที่ควรปิดคือ SeLinux ครับ เพราะมันสร้างปัญหามากมายต่อการติดตั้งโปรแกรม
- โค้ด: เลือกทั้งหมด
vi /etc/selinux/config
เช็คบรรทัดนี้นะครับ ถ้าไม่เป็น disabled ก็แก้ให้เป็น disabled
SELINUX=disabled
เซฟไฟล์แล้วออกจากโปรแกรม
การติดตั้งโปรแกรมบน Linux บางทีเราก็ติดตั้งจากแพ็กเก็ตที่มีคนทำไว้ให้เราเรียบร้อยแล้ว ง่ายแต่บางทีก็ไม่ยืดหยุ่น บางทีเราก็ต้องคอมไพล์โปรแกรมด้วยตัวเอง แต่ก็ไม่ใช่ว่านึกจะคอมไพล์ก็ทำได้เลยนะครับเพราะบางทีก็ต้องติดตั้งโปรแกรมอื่นๆที่มันต้องการก่อน ไม่อย่างนั้นจะติดตั้งไม่ได้คอมไพล์ไม่ผ่าน นี้คือธรรมดชาติและเสน่ห์ของ Linux (มั้ง) ครับ
ก่อนติดตั้ง (คอมไพล์) Asterisk เราควรติดตั้งโปรแกรมต่อไปนี้ก่อนครับ วิธีการติดตั้งผมจะใช้แบบผสมคือใช้แพ็กเก็ตสำเร็จรูปและคอมไพล์เองด้วย ดังต่อไปนี้
1 ติดตั้ง C/C++ คอมไพล์เลอร์ เพื่อให้คอมไพล์ Asterisk และโปรแกรมอื่นๆได้
2 ติดตั้ง kernel-devel, kernel-header เพื่อให้ติดตั้ง DAHDI ได้
3 ติดตั้ง radiusclient-ng เพื่อให้ Asterisk ทำงานเป็น Radius Client ได้
4 ติดตั้ง MySQL และ MySQL-Devel เพื่อให้ Asterisk ทำงานร่วมกับดาต้าเบส MySQL ได้
5 ติดตั้ง spandsp และ libtiff เพื่อให้ Asterisk รับส่ง T.38 แฟ็กซ์ได้
6 ติดตั้ง pwlib, openh323 เพื่อให้ Asterisk รองรับโปรโตคอล H.323
ก่อนติดตั้ง Asteisk ควรอัพเดท CentOS ก่อนดีกว่าครับ ใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y update
1 ติดตั้ง C/C++ complier
ติดตั้งด้วยคำสั่ง yum ดังนี้ครับ
แบบ 64 บิต ใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install gcc.x86_64 gcc-c++.x86_64 bison.x86_64 flex.x86_64 patch.x86_64 make.x86_64 ncurses.x86_64 ncurses-devel.x86_64 autoconf automake
แบบ 32 บิต ใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install gcc gcc-c++ bison flex patch make ncurses ncurses-devel autoconf automake
2 อัพเดท CentOS และติดตั้ง kernel-devel, kernel-headers
แบบ 64 บิต ใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install kernel-devel.x86_64 kernel-headers.x86_64
แบบ 32 บิต ใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install kernel-devel kernel-headers
เสร็จแล้วรีสตาร์ท CentOS
- โค้ด: เลือกทั้งหมด
reboot
3 ติดตั้ง radiusclient-ng
Note!
1 Asterisk ใช้ Radius แค่เก็บ CDR (Call Detail Record) เท่านั้นนะครับ ดังนั้นถ้าไม่ต้องการเก็บ CDR ไว้ใน Radius Server ก็ไม่จำเป็นต้องติดตั้ง radiusclient-ng ก็ได้นะครับ
2 ต้องมี Radius Server ด้วยนะครับ เพราะว่า radiusclient-ng มันเป็น Client มันต้องติดต่อกับ Radius Server โปรแกรมที่นิยมนำมาทำเป็น Radius Server ก็ได้แก่ FreeRadius (http://www.freeradius.org)
- โค้ด: เลือกทั้งหมด
cd /tmp
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
หมายเหตุ
1 เว็บไซต์ของโปรแกรม radiusclient-ng คือ http://developer.berlios.de/project/sho ... up_id=1208 เผื่อมีเวอร์ชั่นใหม่กว่านี้ก็ใช้เวอร์ชั่นใหม่แทนครับ
2 ตอนแตกไฟล์ซอร์สโค๊ดก่อนคอมไพล์ผมชอบเอาไปไว้ที่ /usr/src ครับ ตอนแตกไฟล์ radiusclient-ng-0.5.6.tar.gz ผมก็เลยระบุ -C /usr/src เข้าไปด้วย
3 ตอน ./configure ผมใส่ออปชั่น --sysconfdir=/etc เพราะผมชอบติดตั้งไฟล์คอนฟิกไว้ใน /etc ครับ
4 ไฟล์คอนฟิกของ radiusclient-ng จะอยู่ที่โฟลเดอร์ /etc/radiusclient-ng นะครับ ไฟล์คอนฟิกจะมีชื่อว่า radiusclient-ng.conf
ในโฟลเดอร์ /etc/radiusclient-ng มีไฟล์ดังต่อไปนี้
dictionary เป็นไฟล์ดิกชันนารีของ radiusclient-ng
dictionary.ascend เป็นไฟล์ดิกชันนารีของอุปกรณ์ยี่ห้อ ascend
dictionary.compat เป็นไฟล์ดิชันนารีของอุปกรณ์ยี่ห้อ compat
dictionary.merit เป็นไฟล์ดิกชันนารีของอุปกรณ์ยี่ห้อ merit
dictionary.sip เป็นไฟล์ดิกชันนารีของโปรโตคอล SIP
issue
port-id-map เป็นไฟล์แม๊บพอร์ต /dev/tty* ในเครื่อง
radiusclient.conf เป็นไฟล์คอนฟิกของ radiusclient-ng
server เป็นไฟล์ที่เก็บรายชื่อ Radius Server ที่จะติดต่อด้วย
ภายในไฟล์ radiusclient-ng.conf มีข้อมูลดังนี้
# General settings
auth_order radius,local
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /etc/radiusclient-ng/issue
authserver localhost
acctserver localhost
servers /etc/radiusclient-ng/servers
dictionary /etc/radiusclient-ng/dictionary
login_radius /usr/sbin/login.radius
seqfile /var/run/radius.seq
mapfile /etc/radiusclient-ng/port-id-map
default_realm
radius_timeout 10
radius_retries 3
bindaddr *
login_local /bin/login
ภายในไฟล์ server มีข้อมูลดังนี้
#Server Name or Client/Server pair Key
#---------------- ---------------
localhost secret_key
สำหรับการติดตั้ง Radius Server เช่น FreeRadius
4 ติดตั้ง mysql และ mysql-devel
แบบ 64 บิตใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64
แบบ 32 บิตใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install mysql mysql-devel mysql-server
5. ติดตั้ง libtiff และ spandsp
5.1 ติดตั้ง libtiff, libtiff-devel
ใช้สร้างไฟล์เอกสารจากแฟ็กซ์ที่รับเข้ามา ติดตั้ง libtiff, libtiff-devel โดยใช้คำสั่ง yum
แบบ 64 บิต
- โค้ด: เลือกทั้งหมด
yum -y install libtiff.x86_64 libtiff-devel.x86_64
แบบ 32 บิต
- โค้ด: เลือกทั้งหมด
yum -y install libtiff libtiff-devel
5.2 ติดตั้ง spandsp
- โค้ด: เลือกทั้งหมด
cd /tmp
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
จะมีไฟล์ติดตั้งไว้ในโฟลเดอร์ /usr/include/spandsp และ /usr/lib
เว็บไซต์ของโปรแกรมคือ http://www.soft-switch.org/downloads/spandsp/ เผื่อมีเวอร์ชั่นใหม่
6. ติดตั้ง pwlib และ openh323
6.1 สร้างไฟล์ complier.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 */
บันทึกไฟล์
6.2 ติดตั้ง pwlib
- โค้ด: เลือกทั้งหมด
cd /tmp
wget http://www.voxgratia.org/releases/pwlib-v1_10_3-src-tar.gz
tar xvf 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
6.3 ติดตั้ง openh323
- โค้ด: เลือกทั้งหมด
cd /tmp
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
- โค้ด: เลือกทั้งหมด
export PWLIBDIR=/usr/src/pwlib_v1_10_3
export OPENH323DIR=/usr/src/openh323_v1_18_0
export LD_LIBRARY_PATH=$PWLIBDIR/lib:$OPENH323DIR/lib
- โค้ด: เลือกทั้งหมด
./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
make clean
make optshared
make install
7. ติดตั้ง net-snmp
แบบ 64 บิตใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install net-snmp.x86_64 net-snmp-libs.x86_64 net-snmp-devel.x86_64 net-snmp-utils.x86_64 net-snmp-perl.x86_64
แบบ 32 บิตใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
yum -y install net-snmp net-snmp-libs net-snmp-devel net-snmp-utils net-snmp-perl
ติดตั้ง CentOS 5.4
ติดตั้ง Asterisk + CentOS ตอนที่ 2