1. ติดตั้งและอัพเดท CentOS
ติดตั้ง CentOS ให้เรียบร้อยครับ เสร็จแล้วอย่าลืม Update ท่านจะได้ CentOS เวอร์ชั่นล่าสุด (เวอร์ชั่นล่าสุดที่ผมใช้ทดสอบกับบทความนี้คือ 6.6 ครับ) ตามบทความนี้ เทคนิคการติดตั้ง CentOS 6.4 บทความเป็น CentOS 6.4 ครับ แต่พอ Update ก็จะกลายเป็น 6.6 ให้เอง
2. ปิด SELinux
- โค้ด: เลือกทั้งหมด
cp /etc/selinux/config /etc/selinux/config.backup
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
3. ปิด iptables, ip6tables
ปิดชั่วคราวก่อนครับ (ถ้าเปิดไว้ หรือถ้าไม่แน่ใจว่าเปิดไว้หรือเปล่า) ไว้ทำเสร็จหมดแล้วค่อยเปิดใหม่
- โค้ด: เลือกทั้งหมด
chkconfig iptables off
chkconfig ip6tables off
service iptables stop
service ip6tables stop
4. ติดตั้ง Packages เพิ่มเติม
ถ้า Packages ไหนมีติดตั้งไว้แล้วก็ไม่เป็นไรครับ
- โค้ด: เลือกทั้งหมด
yum -y install kernel-devel kernel-headers gcc gcc-c++ bison flex patch make ncurses ncurses-devel newt newt-devel autoconf automake libxml2-devel mysql mysql-devel mysql-server libtiff libtiff-devel net-snmp net-snmp-libs net-snmp-devel net-snmp-utils net-snmp-perl wireshark libc-client libmcrypt mod_ssl ntp libtool-ltdl libtool-ltdl-devel libc-client-devel mhash mhash-devel libxslt libxslt-devel sqlite-devel wget libuuid-devel
สำหรับ CentOS แบบ x86_64
- โค้ด: เลือกทั้งหมด
yum -y install kernel-devel.x86_64 kernel-headers.x86_64 gcc.x86_64 gcc-c++.x86_64 bison.x86_64 flex.x86_64 patch.x86_64 make.x86_64 ncurses-devel.x86_64 newt-devel.x86_64 autoconf automake libxml2-devel.x86_64 mysql-devel.x86_64 mysql-server.x86_64 libtiff-devel.x86_64 net-snmp-libs.x86_64 net-snmp-devel.x86_64 net-snmp-utils.x86_64 net-snmp-perl.x86_64 wireshark.x86_64 httpd-devel.x86_64 libc-client.x86_64 libmcrypt.x86_64 mod_ssl.x86_64 ntp.x86_64 libtool-ltdl-devel.x86_64 libc-client-devel.x86_64 mhash-devel.x86_64 libxslt-devel.x86_64 sqlite-devel.x86_64 wget.x86_64 uuidd.x86_64
แล้ว reboot อีกทีครับ
- โค้ด: เลือกทั้งหมด
reboot
5. ติดตั้ง radiusclient-ng
- โค้ด: เลือกทั้งหมด
cd /home
wget 'http://www.voip4share.com/sources/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
6. ติดตั้ง spandsp
- โค้ด: เลือกทั้งหมด
cd /home
wget http://www.voip4share.com/sources/spandsp-0.0.6pre21.tgz
tar xzvf spandsp-0.0.6pre21.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
7. ติดตั้ง dahdi 2.10.2
ดาวน์โหลดจากเว็บนี้ได้เลยครับ ไฟล์นี้มี OSLEC ฝังอยู่นะครับ
- โค้ด: เลือกทั้งหมด
cd /home
wget http://www.voip4share.com/sources/dahdi-linux-complete-2.10.2+2.10.2+oslec.tar.gz
tar xvf dahdi-linux-complete-2.10.2+2.10.2+oslec.tar.gz -C /usr/src
cd /usr/src/dahdi-linux-complete-2.10.2+2.10.2
make distclean && make all && make install && make config
ทำให้ DAHDI สตาร์ททุกครั้งที่เปิดเครื่อง
- โค้ด: เลือกทั้งหมด
chkconfig dahdi on
สตาร์ท DAHDI
- โค้ด: เลือกทั้งหมด
service dahdi start
8. ติดตั้ง libpri
- โค้ด: เลือกทั้งหมด
cd /home
wget http://www.voip4share.com/sources/libpri-1.4.15.tar.gz
tar xzvf libpri-1.4.15.tar.gz -C /usr/src
cd /usr/src/libpri-1.4.15
make && make install
9. สตาร์ท DAHDI
- โค้ด: เลือกทั้งหมด
chkconfig dahdi on
service dahdi start
10. ติดตั้ง Jansson
- โค้ด: เลือกทั้งหมด
cd /home
wget http://www.voip4share.com/sources/jansson-2.7.tar.gz
tar xvf jansson-2.7.tar.gz -C /usr/src
cd /usr/src/jansson-2.7
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make && make install
11. ติดตั้ง Asterisk 13.5.0
- โค้ด: เลือกทั้งหมด
cd /home
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.5.0.tar.gz
tar xvf asterisk-13.5.0.tar.gz -C /usr/src
cd /usr/src/asterisk-13.5.0
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-asteriskssl
make menuselect
เลือกประมาณนี้ ใช้ปุ่ม Tab, Keys และ Enter ช่วยเลือก
- โค้ด: เลือกทั้งหมด
Add-ons -> res_config_mysql, cdr_mysql
Core Sound Packages -> CORE-SOUNDS-EN-G729
Extras Sound Packages -> EXTRA-SOUNDS-EN-G729
เสร็จแล้วเริ่มต้นติดตั้ง
** หากเป็นการติดตั้งเพื่ออัพเกรด ไม่ควรใช้คำสั่ง make samples นะครับ ไม่เช่นนั้นคอนฟิกที่ทำไว้จะหายไปหมด **
- โค้ด: เลือกทั้งหมด
make clean
make
make install
make samples
make config
12. สร้างไฟล์ให้ Asterisk มองเห็นไลบรารี่ของ Jansson ได้
เนื่องจากตอนติดตั้ง Jansson มันติดตั้งไลบรารี่ไว้ที่โฟลเดอร์ /usr/lib แทนที่จะเป็น /usr/lib64 จึงอาจทำให้ Asterisk หาไม่เจอ
- โค้ด: เลือกทั้งหมด
touch /etc/ld.so.conf.d/jansson2.conf
echo /usr/lib > /etc/ld.so.conf.d/jansson2.conf
13. สตาร์ท Asterisk 13.5.0
- โค้ด: เลือกทั้งหมด
chkconfig asterisk on
service asterisk start
14. ลองเข้า Asterisk Console
- โค้ด: เลือกทั้งหมด
asterisk -rvvvv
เข้าได้ครับ
- โค้ด: เลือกทั้งหมด
Asterisk 13.5.0, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 13.5.0 currently running on vicidial (pid = 29868)
vicidial*CLI>
15. ติดตั้ง G.723, G.729
จากที่ผมลองทำดูพบว่าไม่สามารถสั่งโหลด codec_g729.so, codec_g723.so สำหรับ Asterisk 13 บน CentOS 6.6 ได้ครับ ซึ่งจากข้อความผมเดาว่าเป็นปัญหาจากเวอร์ชั่นของ GLIBC ครับ โดยที่ Codec สำหรับ Asterisk 13 ที่ให้โหลดในเว็บ http://asterisk.hosting.lv นั้นถูกคอมไพล์ด้วย GLIBC 2.14 แต่บน CentOS 6.6 เป็น GLIBC 2.12 ซึ่งเก่ากว่า หากจะอัพเกรด GLIBC ต้องดาวน์โหลดซอร์สโค๊ดของ GLIBC มาใหม่แล้วคอมไพล์ติดตั้ง เสี่ยงเกินไปที่จะทำแบบนั้นครับเพราะว่า GLIBC มันค่อนข้างสำคัญต่อไฟล์อื่นๆในเครื่องด้วย มีเปอร์เซ็นต์สูงที่ระบบจะล่ม รอจนกว่าทางผู้จัดทำเขาจะแก้ไขครับ
ข้อความที่ผมว่าเป็นแบบนี้ครับ
- โค้ด: เลือกทั้งหมด
Unable to load module codec_g729.so
Command 'module load codec_g729.so' failed.
[Aug 29 17:33:17] WARNING[29942]: loader.c:553 load_dynamic_module: Error loading module 'codec_g729.so': /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib/asterisk/modules/codec_g729.so)
[Aug 29 17:33:17] WARNING[29942]: loader.c:1079 load_resource: Module 'codec_g729.so' could not be loaded.
16. ตรวจสอบดูความเรียบร้อยอีกครั้ง
รีสตาร์ทเครื่อง เช็คว่า Asterisk สตาร์ทหรือไม่ จากนั้นคอนฟิก Dialplan, SIP Extensions แล้วโทรทดสอบดู เวอร์คดีครับ ผมลองแล้วกับ Vicidial
เป็นอันว่าติดตั้ง Asterisk 13.5.0 เสร็จแล้วครับ ระหว่างการติดตั้งก็มีปัญหานิดหน่อยแต่ผมก็แก้ไขให้ในบทความแล้วครับ
บทความที่เกี่ยวข้อง
เทคนิคการแก้ปัญหาเมื่อ Asterisk ฟ้อง No RTP Engine
เทคนิคการติดตั้ง Asterisk-GUI เพื่อคอนฟิก Asterisk
เทคนิคการติดตั้ง Asterisk 13.13.1 และให้รองรับ SIP TLS และ SRTP
การเขียน Dialplan เพื่อโอนสายไปยังเบอร์อื่นตามเงื่อนไขการโทร
เทคนิคการติดตั้ง Asterisk 14.3.1 + TLS + SRTP
เทคนิคการติดตั้ง Asterisk 14.4.0 บน CentOS 6.8