12/01/2007

@ Εγκατάσταση και Εκκίνηση του Asterisk

Εγκατάσταση του Asterisk

Παρακάτω θα αναλυθεί η διαδικασία εγκατάστασης της έκδοσης 1.2 του Asterisk στη διανομή Debian. Θα επιχειρηθεί η σύνταξη των εντολών να ανταποκρίνεται στο πλήθος των διανομών και να είναι όσο πιο γενική γίνεται, στο βαθμό όμως που δεν θα επηρεαστεί η ορθότητα της εγκατάστασης.

GNU/Linux

Για να εγκαταστήσουμε το Asterisk χρειαζόμαστε έναν υπολογιστή με εγκατεστημένη κάποια διανομή GNU/Linux. Αν και δεν είναι απαραίτητο θεωρείται καλό για λόγους ευκολίας η διανομή μας να είναι ενημερωμένη.

Ενημέρωση λειτουργικού Debian

# su
#
apt-get update
#
apt-get -y upgrade


Επανεκκίνηση του λειτουργικού μετά την αναβάθμιση.

# shutdown -r now

Απαραίτητα Πακέτα

Το Asterisk αποτελείται από τρία κύρια πακέτα: το πακέτο -asterisk- το οποίο αποτελεί τον πυρήνα του προγράμματος, το πακέτο -zaptel- το οποίο περιέχει τους drivers για τις κάρτες Zapata της Digium καθώς επίσης και τα εργαλεία ztdummy (λειτουργίες χρονισμού), ztcfg (εργαλείο διαμόρφωσης υλικού Zapata), zttool (εργαλείο διάγνωσης κατάστασης του υλικού Zapata) και το πακέτο -libpri- το οποίο περιέχει τις ISDN PRI βιβλιοθήκες που χρειάζονται για την εγκατάσταση καρτών ISDN. Παρόλο που και μόνο η εγκατάσταση του πακέτου asterisk θα μας εξασφάλιζε ένα πλήρες λειτουργικό VoIP σύστημα και με λιγότερη ανάγκη για μνήμη RAM, συστήνεται τόσο για λόγους ευκολίας κατά τη διάρκεια της εγκατάστασης όσο και συμβατότητας με την πληθώρα των διανομών Linux, η εγκατάσταση και των τριών παραπάνω πακέτων.


Εκτός από τα απαραίτητα πακέτα υπάρχουν άλλα δύο επιπλέον πακέτα που μπορούν να συμπληρώσουν την εγκατάσταση του
Asterisk: το πακέτο asterisk-sounds που περιέχει επιπλέον φωνητικές ηχογραφήσεις και το πακέτο asterisk-addons που περιέχει προγράμματα που είτε λόγω αδειών χρήσης, είτε λόγω πρώιμης έκδοσής τους, δεν μπορούν να μπουν στην κεντρική διανομή, αλλά παρόλα αυτά παρέχουν χρήσιμες λειτουργίες όπως σύνδεση με την MySQL, ενσωματωμένη δυνατότητα αναπαραγωγής αρχείων mp3 ως μουσική στην αναμονή, κ.λ.π.

Αφού εξασφαλίσουμε πως η διανομή μας είναι σωστά εγκατεστημένη και ενημερωμένη, προχωράμε στην εγκατάσταση κάποιων επιπλέον πακέτων τα οποία χρειάζεται να προϋπάρχουν για την εγκατάσταση του Asterisk. Τα πακέτα αυτά είναι:

  • kernel-sources / headers: Τα πηγαία αρχεία της έκδοσης του πυρήνα.
  • gcc: Μεταγλωττιστής (compiler) απαραίτητος για την εγκατάσταση του Asterisk. Κατά προτίμηση έκδοση 3.x ή μεγαλύτερη.
  • binutils: Ένας επιπλέον μεταγλωττιστής και δημιουργός συντομεύσεων
  • make: απαραίτητο για την εγκατάσταση των πακέτων του Asterisk μέσω των αρχείων Makefile.
  • bison: Χρησιμοποιείται για να διαβάζει τις εκφράσεις των αρχείων διαμόρφωσης του Asterisk.
  • libncurses5-dev: Απαραίτητο για τη λειτουργία CLI του Asterisk.
  • libssl-dev: Απαραίτητο για την κρυπτογραφική βιβλιοθήκη του Asterisk και τον έλεγχο των RSA κλειδιών από το πρωτόκολλο IAX2.
  • zlib1g-dev: Χρησιμοποιείται για τη συμπίεση δεδομένων.
  • libnewt-dev: Απαραίτητο για την εγκατάσταση του zttool.
  • procps: Χρησιμοποιείται από το Asterisk για να αποκτά πρόσβαση σε πληροφορίες διεργασιών μέσω του συστήματος αρχείων /proc.
  • doxygen: Χρησιμοποιείται για να δημιουργήσει τα αρχεία τεκμηρίωσης (documentation) κατά τη διάρκεια της εγκατάστασης του Asterisk.


Εγκατάσταση των Headers

# su
# apt-get install linux-headers-$(uname -r)


Εγκατάσταση
των απαραίτητων πακέτων

# apt-get install gcc g++ make bison libncurses5-dev libssl-dev procps libnewt-dev zlib1g-dev binutils doxygen


Αφού ολοκληρώσουμε όλα τα παραπάνω σειρά έχει η εγκατάσταση των βασικών πακέτων του Asterisk.

Το Asterisk κυκλοφορεί σε δύο εκδόσεις, την 1.2 και την 1.4 (και 1.6 :D). Και οι δύο εκδόσεις αναπτύσσονται παράλληλα από την Digium. Παρόλο που για το Debian υπάρχει διαθέσιμο precompiled πακέτο του Asterisk (apt-get install asterisk), η μέθοδος αυτή δε συστήνεται γιατί είναι αρκετά πιθανό λόγω της ραγδαίας ανάπτυξης που έχει το Asterisk, το πακέτο να μην είναι πρόσφατο.

Λήψη και Εγκατάσταση των Βασικών Πακέτων

Παρακάτω ακολουθούν δύο τρόποι με τους οποίους μπορούμε να κατεβάσουμε τα απαραίτητα πηγαία αρχεία στον υπολογιστή μας: 1) μέσω της wget από το δικτυακό χώρο της Digium και 2) μέσω του subversion system της Digium.

Σαν γενικό κανόνα θα κατεβάσουμε όλα τα πηγαία αρχεία σε ένα φάκελο /asterisk μέσα στο /usr/src, για να τα έχουμε συγκεντρωμένα.

# cd /usr/src
# mkdir asterisk
# cd asterisk


Ανάλογα ποια έκδοση θέλουμε να κατεβάσουμε οι παρακάτω εντολές μπορούν να τροποποιηθούν. Στα παραδείγματα που ακολουθούν επιλέχτηκε η έκδοση 1.2.

Λήψη Wget


Στην κονσόλα γράφουμε:

# wget http://downloads.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
#
wget http://downloads.digium.com/pub/zaptel/zaptel-1.2-current.tar.gz
#
wget
http://downloads.digium.com/pub/libpri/libpri-1.2-current.tar.gz


Για το κατέβασμα των επιπλέον πακέτων:

# wget http://downloads.digium.com/pub/asterisk/addons-1.2-current.tar.gz
# wget http://downloads.digium.com/pub/asterisk/old-releases/asterisk-sounds-1.2.1.tar.gz


Αποσυμπιέζουμε όλα τα αρχεία που κατεβάσαμε

# for i in *.tar.gz; do tar zxvf $i; done


Λήψη Subversion


Θα χρειαστούμε έναν subversion client

# apt-get install subversion


Αφού ολοκληρωθεί η εγκατάσταση του subversion γράφουμε στην κονσόλα:

# svn co http://svn.digium.com/svn/asterisk/branches/1.2 asterisk-1.2
# svn co http://svn.digium.com/svn/zaptel/branches/1.2 zaptel-1.2
# svn co http://svn.digium.com/svn/libpri/branches/1.2 libpri-1.2


Για το κατέβασμα των επιπλέον πακέτων:

# svn co http://svn.digium.com/svn/asterisk-sounds/trunk asterisk-sounds
# svn co http://svn.digium.com/svn/asterisk-addons/branches/1.2 asterisk-addons

Όποια και από τις δύο παραπάνω μεθόδους και αν επιλέχτηκε, θα πρέπει να υπάρχουν στο φάκελο /usr/src/asterisk πέντε υποφάκελοι.


Η σειρά εγκατάστασης των αρχείων έχει σημασία, γι’ αυτό πρέπει να ακολουθηθεί με ακρίβεια.


Έστω ότι χρησιμοποιήθηκε η μέθοδος του
subversion για την έκδοση 1.2.

Εγκατάσταση του πακέτου lipbri

# cd /usr/src/asterisk/lipri-1.2
#
make
#
make install


Εγκατάσταση του πακέτου zaptel


Ακόμα και αν δε χρησιμοποιήσουμε τις κάρτες Zapata, στο zaptel περιέχεται το ztdummy που είναι απαραίτητο για εφαρμογές του Asterisk που απαιτούν χρονισμό, όπως είναι η τηλεδιάσκεψη.

# cd /usr/src/asterisk/zaptel-1.2
#
make
#
make install


Όταν τελειώσει η εγκατάσταση του
zaptel θα πρέπει να φορτώσουμε το ztdummy στο αρχείο /etc/modules ώστε να ξεκινάει αυτόματα μετά από κάθε επανεκκίνηση του υπολογιστή.

# modprobe ztdummy
#
echoztdummy” >> /etc/modules
#
update-modules


Εγκατάσταση του πακέτου asterisk

Στο αρχείο Makefile που βρίσκεται στο φάκελο /asterisk-1.2 περιέχονται κάποιες επιλογές τις οποίες μπορούμε να από-σχολιάσουμε προκειμένου να βελτιστοποιήσουμε την εγκατάσταση για το σύστημά μας.

# cd /usr/src/asterisk/asterisk-1.2
#
pico Makefile

Για παράδειγμα, αν έχουμε επεξεργαστή Intel ή AMD64 που υποστηρίζει MMX, τότε αφαιρούμε το # από τις γραμμές

# PROC=i686
# K6OPT = -DK6OPT

Αν έχουμε μητρική VIΑ, τότε αφαιρούμε το # από τη γραμμή

# PROC=i586

Σώζουμε το αρχείο, το κλείνουμε και εκτελούμε:

# make install
# make samples
# make progdocs
#
make config

Η εντολή make config επιτρέπει στο Asterisk να ξεκινάει κατά την εκκίνηση του λειτουργικού. Η συγκεκριμένη εντολή λειτουργεί μόνο για διανομές Red Hat μέχρι στιγμής, αλλά ενδέχεται να υποστηρίζει και άλλες διανομές σε επόμενες εκδόσεις. Για το Debian υπάρχει ένα έτοιμο script στο φάκελο /contrib./init.d των πηγαίων αρχείων του asterisk, που μας επιτρέπει να επιτύχουμε την αυτόματη εκκίνηση. Το μόνο που χρειάζεται να κάνουμε εμείς είναι να το αντιγράψουμε στο φάκελο /etc/init.d του συστήματος μας.

# cp /usr/src/asterisk/asterisk-1.2/contrib/init.d/rc.debian.asterisk/ etc/init.d/asterisk
# update-rc.d asterisk defaults 99

Εγκατάσταση των πακέτων asterisk-sounds και asterisk-addons

# cd /usr/src/asterisk/asterisk-sounds
# make install
# cd ../asterisk-addons
# make install


Εκκίνηση του Asterisk

Αφού εγκαταστήσουμε το Asterisk υπάρχουν διάφοροι τρόποι με τους οποίους μπορούμε να ξεκινήσουμε τη λειτουργία του από τη γραμμή εντολών. Εξ’ ορισμού το Asterisk θα τρέξει ως υπηρεσία στο παρασκήνιο (deamon), αν το έχουμε ρυθμίσει να ξεκινάει κατά την εκκίνηση του υπολογιστή ή αν το ξεκινήσουμε χωρίς καμία παράμετρο. To Asterisk ξεκινάει τρέχοντας το αρχείο /usr/sbin/asterisk. Μπορούμε επίσης να του περάσουμε παραμέτρους που θα μας επιτρέψουν να κάνουμε πολλά πράγματα, όπως σύνδεση με την κονσόλα του Asterisk, αλλαγή του επιπέδου μηνυμάτων κατάστασης, εκκίνηση σε κατάσταση αποσφαλμάτωσης κ.α.

Μερικές από τα παραμέτρους που μπορεί να πάρει το Asterisk κατά την εκκίνηση είναι:

-c : Ξεκινάει το Asterisk στο παρασκήνιο και εμφανίζει την κονσόλα του.
-
v : Θέτει το λεκτικό επίπεδο των μηνυμάτων ανάλογα με το πλήθος των v.
-
d : Ξεκινάει το Asterisk σε κατάσταση αποσφαλμάτωσης.
-
g : Σε απότομη διακοπή λειτουργίας τυπώνει τα μηνύματα σφάλματος σε αρχείο της επιλογής μας.
-
C <αρχείο_διαμόρφωσης> : Εκκίνηση με χρήση διαφορετικού αρχείου διαμόρφωσης από το /etc/asterisk/asterisk.conf.
-
f : Ξεκινάει το Asterisk στο προσκήνιο και δεν το τρέχει ως υπηρεσία.
-
r : Ξεκινάει την κονσόλα του Asterisk και συνδέεται σε μία οντότητα του Asterisk που ήδη τρέχει στο παρασκήνιο.
-
n : Απενεργοποίηση του χρωματισμού των μηνυμάτων στην κονσόλα ( χρησιμοποιείται σε συνδυασμό με τις παραμέτρους –r ή –c).
-
i : Παραπέμπει για αρχικοποίηση κρυπτογραφικών συνθηματικών κατά την εκκίνηση.
-
q : Απενεργοποιεί όλα τα μηνύματα.
-
x “εντολή” : Εκτελεί την εντολή που βρίσκεται μέσα στα αποσιωπητικά “” (χρησιμοποιείται σε συνδυασμό με την -r, π.χ. asterisk -rxstop gracefully).
-
h : Εκτυπώνει όλες τις πιθανές παραμέτρους που μπορεί να πάρει το asterisk κατά την εκκίνηση.

Σύμφωνα με τα παραπάνω, για να συνδεθούμε στην κονσόλα του Asterisk, με λεκτικό επίπεδο 5, θα πρέπει να γράψουμε στη γραμμή εντολών:

# asteriskcvvvvv


ενώ, αν το
Asterisk έτρεχε ήδη στο παρασκήνιο θα έπρεπε να γράψουμε

# asterisk -rvvvvv





Ο τελευταίος τρόπος με τον οποίο μπορούμε να ξεκινήσουμε το Asterisk, είναι η λειτουργία safe_asterisk. Ο κύριος σκοπός αυτής της λειτουργίας είναι η δυνατότητα που παρέχει να ανιχνεύει αν το Asterisk σταμάτησε αντικανονικά και να προσπαθεί να το επανεκκινήσει στην κανονική του λειτουργία. Δίνει επίσης, μέσω της επιλογής NOTIFY, τη δυνατότητα αποστολής ενημερωτικού email για την απρόσμενη διακοπή της λειτουργίας του Asterisk. Ένα επιπλέον όφελος της χρήσης του safe_asterisk είναι ότι φορτώνει την κονσόλα του Asterisk στη διεπαφή τερματικού 9 για εύκολη εναλλαγή (Ctrl+Alt+F9) και παρακολούθηση της λειτουργίας του Asterisk. Οι παραπάνω επιλογές αλλάζουν, ανοίγοντας το αρχείο /usr/sbin/safe_asterisk με οποιονδήποτε επεξεργαστή κειμένου.

# pico /usr/sbin/safe_asterisk

CLIARGS="$*" # Grab any args passed to safe_asterisk
TTY=9
# TTY (if you want one) for Asterisk to run on
CONSOLE=yes
# Whether or not you want a console
#NOTIFY=ben@alkaloid.net
# Who to notify about crashes
MACHINE=`hostname`
# which machine has crashed

Δεν υπάρχουν σχόλια: