บทความติดตั้ง Asterisk 1.6.2.6 ตอนที่ 1
1. ติดตั้ง DAHDI และ LIBPRI
Asterisk จะใช้โปรแกรมเสริมต่อไปนี้ช่วยในการทำงานเมื่อต้องติดต่อกับ Hardware และ Database
- DAHDI เป็นไดร์เวอร์ติดต่อกับการ์ดอินเตอร์เฟสโทรศัพท์ เช่นการ์ด FXO, E1, FXS, GSM เป็นต้น เวอร์ชั่นของ DAHDI และ Asterisk ต้องสัมพันธ์กันด้วยนะครับ
- Libpri เป็นไดร์เวอร์ติดต่อกับการ์ดอินเตอร์เฟสโทรศัพท์แบบ E1 PRI
- Asterisk-Addons เป็นไดร์เวอร์ติดต่อกับดาต้าเบสเช่น MySQL และโปรโตคอล H.323 (แต่เป็น H.323 คนละโปรแกรมกับที่เรากำลังจะติดตั้งนะครับ เราจะไม่ใช้ H.323 ที่อยู่ใน Asterisk-Addons) เวอร์ชั่นต้องสัมพันธ์กันด้วยนะครับ
- DAHDI-TOOLS เป็นเครื่องมือที่จะใช้จัดการกับการ์ดอินเตอร์เฟส คำสั่ง ไฟล์คอนฟิก
1.1 ติดตั้ง dahdi-linux พร้อมให้รองรับ OSLEC
1.1.1 ดาวน์โหลด DAHDI-LINUX และ OSLEC พร้อมติดตั้ง
เช็คกับเว็บ http://downloads.asterisk.org/pub/telephony ก่อนนะครับเผื่อว่ามีเวอร์ชั่นใหม่กว่านี้
- โค้ด: เลือกทั้งหมด
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-2.3.0.tar.gz
wget http://www.voip4share.com/sources/oslec-dahdi.tar.gz
tar xzvf dahdi-linux-2.3.0.tar.gz -C /usr/src
tar xzvf oslec-dahdi.tar.gz -C /usr/src/dahdi-linux-2.3.0/drivers
1.1.2 แก้ไขคอนฟิก
- โค้ด: เลือกทั้งหมด
sed -i "s|#obj-m += dahdi_echocan_oslec.o|obj-m += dahdi_echocan_oslec.o|" /usr/src/dahdi-linux-2.3.0/drivers/dahdi/Kbuild
sed -i "s|#obj-m += ../staging/echo/|obj-m += ../staging/echo/|" /usr/src/dahdi-linux-2.3.0/drivers/dahdi/Kbuild
echo 'obj-m += echo.o' > /usr/src/dahdi-linux-2.3.0/drivers/staging/echo/Kbuild
1.1.3 คอมไพล์ DAHDI
- โค้ด: เลือกทั้งหมด
cd /usr/src/dahdi-linux-2.3.0
make
make install
1.1.4 คอนฟิกใช้งาน OSLEC
เอา oslec ไปไส่ไว้ในไฟล์ /etc/dahdi/genconf_parameters นะครับ เพื่อบอกว่าเราจะใช้ Echo Canceller แบบ OSLEC ซึ่งจะทำให้เวลาเรารันคำสั่ง dahdi_genconf เพื่อสร้างคอนฟิกการ์ดที่เราติดตั้งเข้าไป (ถ้าไม่ติดตั้งการ์ด ทำก็ได้ครับ แต่ก็ไม่มีผลอะไร) มันจะเรียกใช้ oslec ให้เราเอง
echo_can oslec
หมายเหตุ เนื่องจากการติดตั้งจะมีการเช็ค kernel ด้วยนะครับ และจะติดตั้งไฟล์บางไฟล์เข้าไปไว้ในไลบรารี่ของ kernel ด้วย ดังนั้น ถ้ามีการอัพเกรด kernel จะต้องคอมไพล์ dahdi-linux ใหม่ทุกครั้ง
1.2 ติดตั้ง dahdi-tools
- โค้ด: เลือกทั้งหมด
wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-2.3.0.tar.gz
tar xzvf dahdi-tools-2.3.0.tar.gz -C /usr/src
cd /usr/src/dahdi-tools-2.3.0
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make menuselect
1.2.1 เริ่มจากเมนูหลัก กดปุ่ม Enter
1.2.2 เลือกออปชั่นที่จะติดตั้ง
ซึ่งเป็น Tools หรือคำสั่ง ซึ่งเป็นยูติลิตี้ต่างๆในการใช้งานฮาร์ดแวร์การ์ดอินเตอร์เฟสที่รองรับ การดีเทคการ์ด การสร้างไฟล์คอนฟิกของการ์ด เลือกให้หมดครับไว้ก่อนครับ โดยเลื่อนปุ่มลูกศรลงมายังบรรทัดที่ยังไม่มี * แล้วกดปุ่ม Space Bar หนึ่งครั้งจะมี * ปรากฏ แล้วเลื่อนไปยังบรรทัดอื่นทำเช่นเดียวกัน
1.2.3 กดปุ่ม Esc แล้วกดปุ่ม s เพื่อบันทึกข้อมูล
1.2.4 เริ่มคอมไพล์
- โค้ด: เลือกทั้งหมด
make
make install
make config
หมายเหตุ
- มีไฟล์ dahdi_genconf, dahdi_hardware, fxotune, fxstest, sethdlc, dahdi_cfg, dahdi_diag, dahdi_monitor, dahdi_speed, dahdi_test, dahdi_scan, dahdi_registration ติดตั้งไว้ที่โฟลเดอร์ /usr/sbin เราใช้ไฟล์เหล่านี้เพื่อดีเท็ค ทดสอบ คอนฟิก และมอนิเตอร์การ์ดอินเตอร์เฟสที่อาจมีการติดตั้งเพิ่มเข้าไป
- มีไฟล์ติดตั้งไว้ใน /usr/lib, /usr/include/dahdi
- มีไฟล์ dahdi ติดตั้งไว้ที่ /etc/rc.d/init.d เอาไว้รัน dhadi เป็นเซอร์วิส และสั่ง start/stop/restart ได้เหมือนเซอร์วิสอื่นๆบน CentOS
- มีการเพิ่ม dahdi เข้าไปเป็นเซอร์วิสหนึ่งบน CentOS
- มีไฟล์ ifup-hdlc ติดตั้งไว้ที่โพลเดอร์ /etc/sysconfig/network-scripts
- ระหว่างที่พิมพ์ make install จะมีการตรวจสอบการ์ดในเครื่องด้วย ถ้าพบว่ามีการ์ดที่เข้ากันได้กับ DAHDI มันจะแสดงออกมาให้เห็น
- เมื่อมีการติดตั้งฮาร์ดแวร์ใหม่ ให้รีสตาร์ทเซอร์วิส dhadi ด้วยเพื่อให้ดีเทคการ์ดพบ (ถ้าไม่ได้เซ็ตให้ dahdi รันทุกครั้งที่เปิดเครื่อง)
1.2.5 สตาร์ท DAHDI
- โค้ด: เลือกทั้งหมด
chkconfig –level 35 dahdi on
service dahdi start
1.3 ติดตั้ง libpri
libpri เป็นไดร์เวอร์สำหรับการ์ด E1 ครับ
- โค้ด: เลือกทั้งหมด
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.10.2.tar.gz
tar xzvf libpri-1.4.10.2.tar.gz -C /usr/src
cd /usr/src/libpri-1.4.10.2
make
make install
2. ติดตั้ง asterisk
พิมพ์บรรทัดต่อไปนี้อีกครั้ง (เผื่อว่าตอนติดตั้ง OpenH323 กับ Asterisk จะทำคนละครั้งกัน)
- โค้ด: เลือกทั้งหมด
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://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.2.6.tar.gz
tar xzvf asterisk-1.6.2.6.tar.gz -C /usr/src
cd /usr/src/asterisk-1.6.2.6
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
ระหว่างนี้โปรแกรมติดตั้งจะตรวจสอบโปรแกรมอื่นที่เราได้ติดตั้งมาก่อนหน้านี้แล้ว ถ้าพบก็จะคอมไพล์ Asterisk ให้รองรับโปรแกรมเหล่านั้นให้โดยอัตโนมัติ เราไม่ต้องทำอะไรเป็นพิเศษครับ
- โค้ด: เลือกทั้งหมด
make menuselect
ใช้ปุ่มลูกศรขึ้นลงเพื่อเลื่อนเมนู กดปุ่ม Enter เข้าเมนูย่อย กดปุ่ม Spacebar เพื่อเลือกออปชั่นภายในเมนูย่อย กดปุ่ม Esc เพื่อกลับสู่เมนูหลัก กด s เพื่อบันทึกข้อมูลและออกจากเมนู
เมนูหลัก
Applications เลือก Applications ที่จะติดตั้ง ควรใช้ค่าดีฟอลท์
Bridging Modules ใช้ดีฟอลท์
Call Detail Recording ใช้ดีฟอลท์
Channel Drivers
Codec Translators
Format Interpreters ใช้แปลงจากโคเด็คหนึ่งไปเป็นโคเด็คอื่น
Dialplan Functions
PBX Modules
Resource Modules
Test Modules
Complier Flags
Voicemail Build Options
Module Embedding
Core Sound Packages
Music On Hold File Packages
Extra Sound Packages
- โค้ด: เลือกทั้งหมด
make
make install
make samples
make config
หมายเหตุ
- มีไฟล์ /etc/rc.d/init.d/asterisk ไว้ให้รัน Asterisk เป็นเซอร์วิสบน CentOS ได้
- มีไฟล์ asterisk และ safe_asterisk ติดตั้งไว้ที่ /usr/sbin
- มีโฟลเดอร์ /usr/include/asterisk, /var/lib/asterisk/, /var/log/asterisk, /var/spool/asterisk, /var/run/asterisk, /usr/lib/asterisk/modules, /etc/asterisk ถูกสร้างขึ้นมา
- มีตัวอย่างไฟล์คอนฟิก *.conf อยู่ที่ /etc/asterisk
3. ติดตั้ง asterisk-addons
- โค้ด: เลือกทั้งหมด
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.6.2.1.tar.gz
tar xzvf asterisk-addons-1.6.2.1.tar.gz -C /usr/src
cd /usr/src/asterisk-addons-1.6.2.1
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make menuselect
เมนูหลัก
เลื่อนมาที่ Channel Drivers แล้วกด Enter แล้วเอา * หน้า chan_ooh323 ออก
กดปุ่ม Esc แล้วกดปุ่ม s
- โค้ด: เลือกทั้งหมด
make
make install
make samples
หมายเหตุ
- asterisk-addons นี้เป็นการเก็บ CDR ไว้ในดาต้าเบส MySQL และให้ดึงคอนฟิกมาจากดาต้าเบสแทนที่จะเป็นไฟล์ .conf
- ที่เอา chan_ooh323 ออกเพราะเราคอมไพล์และใช้ chan_h323 แทนแล้ว
4. รัน Asterisk ด้วย User/Group อื่นที่ไม่ใช่ Root
ถ้าเราสั่งรัน Asterisk ตอนนี้มันจะรันด้วย User=root และ Group=root ซึ่งไม่ใช่เหมาะสักเท่าไหร่นะครับ ผมจะให้มันรันด้วย User=asterisk และ Group=asterisk นะครับ ซึ่งขั้นตอนก็ง่ายๆครับ ดังต่อไปนี้
4.1 เปิดไฟล์ /etc/passwd
- โค้ด: เลือกทั้งหมด
vi /etc/passwd
เพิ่มบรรทัดนี้เข้าไป
- โค้ด: เลือกทั้งหมด
asterisk:x:62:62:Asterisk User:/etc/asterisk:/sbin/nologin
เช็คก่อนนะครับว่าตัวเลข 62 มีอยู่ในบรรทัดอื่นแล้วหรือยัง ถ้ามีแล้วก็เปลี่ยนไปเป็นค่าอื่น (แนะนำว่าไม่ควรเกิน 100 นะครับ)
4.2 เปิดไฟล์ /etc/group
- โค้ด: เลือกทั้งหมด
vi /etc/group
เพิ่มบรรทัดนี้เข้าไป
- โค้ด: เลือกทั้งหมด
asterisk:x:62:
ตัวเลขต้องเหมือนกับในข้อ 4.1 นะครับ
4.3 ก๊อปไฟล์ Init Script ของ Asterisk
ลองเช็คในไดเร็คตอรี่ /etc/init.d ก่อนนะครับว่ามีไฟล์ asterisk หรือยัง ถ้ามีแล้วก็ไม่ต้องทำขั้นตอนนี้
- โค้ด: เลือกทั้งหมด
cp /usr/src/asterisk-1.6.2.6/contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk
chmod 755 /etc/rc.d/init.d/asterisk
4.4 แก้ไขไฟล์ /etc/init.d/asterisk
- โค้ด: เลือกทั้งหมด
vi /etc/init.d/asterisk
แก้ 2 บรรทัดนี้ (เอาเครื่องหมาย # ออก)
เดิม
#AST_USER="asterisk"
#AST_GROUP="asterisk"
ใหม่
- โค้ด: เลือกทั้งหมด
AST_USER="asterisk"
AST_GROUP="asterisk"
ซึ่ง AST_USER คือยูสเซอร์ที่จะใช้รัน Asterisk นะครับ ต้องชื่อเดียวกับข้อ 4.1 ส่วน AST_GROUP คือกรุ๊ปที่จะใช้รัน Asterisk ต้องชื่อเดียวกับข้อ 4.2 ครับ
4.5 เปลี่ยน Owner ไดเร็คตอรี่เหล่านี้
จาก root เป็น asterisk เพื่อให้ Asterisk เขียนข้อมูลในไดเรคตอรี่เหล่านั้นได้
- โค้ด: เลือกทั้งหมด
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
chown -R asterisk:asterisk /var/lib/asterisk
chown -R asterisk:asterisk /var/spool/asterisk
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /var/log/asterisk
ซึ่ง asterisk ตัวหน้าคือยูสเซอร์และตัวหลังคือกรุ๊ป
5. คอนฟิก radiusclient-ng
ขั้นตอนนี้ไม่ต้องทำก็ได้นะครับถ้าไม่ได้ติดตั้งหรือไม่ได้ต้องการใช้งาน radiusclient-ng มันแค่เก็บ CDR ไว้ใน Radius ซึ่งก็ต้องติดตั้ง Radius Server อีก
แก้ไขไฟล์ /etc/asterisk/cdr.conf ให้ Asterisk รู้จักที่เก็บไฟล์คอนฟิกของ radiusclient-ng
vi /etc/asterisk/cdr.conf
แก้ไขข้อมูลในไฟล์ดังต่อไปนี้
- โค้ด: เลือกทั้งหมด
[general]
enable=yes
unanswered=yes
[csv]
usegmtime=yes
loguniqueid=yes
loguserfield=yes
[radius]
usegmtime=yes
loguniqueid=yes
loguserfield=yes
radiuscfg => /etc/radiusclient-ng/radiusclient.conf
บันทึกไฟล์
6. ทำให้ Asterisk รันแบบเป็นเซอร์วิสหนึ่งใน CentOS
- โค้ด: เลือกทั้งหมด
chkconfig --level 35 asterisk on
7. การ Start/Stop/Restart Asterisk
- โค้ด: เลือกทั้งหมด
service asterisk start
ข้อความที่ปรากฏ
Starting asterisk: [ OK ]
- โค้ด: เลือกทั้งหมด
service asterisk stop
ข้อความที่ปรากฏ
Stopping safe_asterisk: [ OK ]
Shutting down asterisk: [ OK ]
- โค้ด: เลือกทั้งหมด
service asterisk restart
ข้อความที่ปรากฏ
Stopping safe_asterisk: [ OK ]
Shutting down asterisk: [ OK ]
Starting asterisk: [ OK ]
- โค้ด: เลือกทั้งหมด
service asterisk status
ข้อความที่ปรากฏ
asterisk (pid 549) is running...
หมายความว่าตอนนี้ Asterisk กำลังทำงานอยู่ และมีค่า Process ID คือ 549
8. ดูโพรเซสของ Asterisk ขณะที่ทำงาน
- โค้ด: เลือกทั้งหมด
ps -ef
root 12019 1 0 Apr15 ? 00:00:00 /bin/sh /usr/sbin/safe_asterisk
root 12024 12019 0 Apr15 ? 00:00:00 /usr/sbin/asterisk -f -vvvg -c
9. ลองเข้า Asterisk Console
ที่ Linux Prompt พิมพ์คำสั่งว่า asterisk -r แล้วกด Enter จะเห็น Asterisk Prompt ดังรูปครับ
- โค้ด: เลือกทั้งหมด
asterisk -r
Asterisk 1.6.2.6, Copyright (C) 1999 - 2010 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 1.6.2.6 currently running on mailserver (pid = 12024)
Verbosity is at least 9
Core debug is at least 3
mailserver*CLI>
บทความที่เกี่ยวข้อง
ติดตั้ง Asterisk 1.6.2.6 ตอนที่ 1
ติดตั้ง CentOS 5.4
มอนิเตอร์ Asterisk ด้วย SNMP
แสดงสถานะการทำงานของ Asterisk ด้วยโปรแกรม FOP
ติดตั้ง G.723, G.729 ฟรี
เทคนิคการติดตั้ง Asterisk 16.x + DAHDI 2.11.1 บน CentOS 7
เทคนิคการติดตั้ง Asterisk 15.x + DAHDI 2.11.1 บน CentOS 7
เทคนิคการติดตั้ง Asterisk 13.x + DAHDI 2.11.1 บน CentOS 7