Asterisk è un bellissimo software che permette di generare un centralino via software su una Linux box, purtroppo però i suoi file di configurazione sono estremamente complessi e e quindi consiglio vivamente l’installazione di FreePBX per semplificarsi la vita dell’amministratore del centralino. FreePBX infatti è una interfaccia web che permette di configurare in modo molto agevole tutti i parametri di Asterisk non legati all’hardware di interfaccia con la linea telefonica per i quali esisto i dirver dahdi, nella mia esperienza c’è sempre bisogno di qualche modifica fatta a mano. Ci sono un paio di distribuzioni dedicate che semplificano parecchio l’installazione Asterisk now e FreePBX distro , tutte e due molto simili nel risultato finale , che includono anche la preconfigurazione di dahdi ma se come me credete che:
quando gli uomini erano uomini si scrivevano i drivers da soli
allora forse vorrete proseguire nella lettura di questo piccolo tutorial dove spiegherò come installare asterisk e le pochissime dipendenze richieste da FreePBX su un sistema basato su Linux Centos 7.
Iniziamo con controllare che tutto si in ordine ed aggiornato sulla nostra box:
yum clean all yum update
Installiamo quindi tutti i pacchetti necessari per soddisfare tutte le dipendenze di FreePBX:
yum groupinstall core base "Development Tools" yum install lynx bison php-mbstring php-pear php-gd php-xml \ libsepol-devel libtiff-devel openssl-devel subversion e2fsprogs-devel \ keyutils-libs-devel krb5-devel libogg libogg-devel libtool libtool-ltdl-devel \ kernel-headers kernel-devel tftp-server ncurses-devel sendmail sendmail-cf \ sox newt-devel libtiff-devel subversion doxygen texinfo mysql-connector-odbc \ unixODBC-devel sox gnutls-devel ncurses-devel net-snmp-devel neon-devel uuid-devel \ libuuid-devel audiofile-devel gtk2-devel speex-devel gsm-devel sqlite-devel \ perl-DateManip spandsp-devel freetds-devel iksemel-devel corosynclib-devel \ lua-devel radiusclient-ng-devel libxslt-devel portaudio-devel libical-devel \ gmime-devel bluez-libs-devel jack-audio-connection-kit-devel libedit-devel \ jansson-devel libsrtp-devel wget vim mc
Installiamo pjproject
cd /opt git clone git://github.com/asterisk/pjproject pjproject cd pjproject/ ./configure --libdir=/usr/lib64 --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr make dep make make install ldconfig
Installiamo SRTP
cd /opt wget http://srtp.sourceforge.net/srtp-1.4.2.tgz tar zxvf srtp-1.4.2.tgz cd srtp autoconf ./configure CFLAGS=-fPIC --prefix=/usr make make runtest make install ldconfig
Installiamo jansson
cd /opt wget http://www.digip.org/jansson/releases/jansson-2.7.tar.gz tar zvxf jansson-2.7.tar.gz cd jansson-2.7 autoreconf -i ./configure --prefix=/usr/ --libdir=/usr/lib64 make make install ldconfig
Installiamo Lame
cd /opt wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar zxvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure make make install
Installiamo Asterisk
Add a new user named ‘asterisk’:
adduser asterisk -M -c "Asterisk User"
cd /opt wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.7.2.tar.gz tar zxvf asterisk-13.7.2.tar.gz cd asterisk-13.7.2contrib
/scripts/install_prereq
install
./configure --libdir=/usr/lib64 contrib/scripts/get_mp3_source.sh make menuselect
Scegliamo quali moduli vogliamo compilare all’interno del nostro centralin, scegliamo ‘Save & Exit’ e continuiamo con la nostra installazione:
make make install make config ldconfig chkconfig asterisk off
Impostiamo i permessi su alcune cartelle e files relativi ad Asterisk:
chown asterisk. /var/run/asterisk chown asterisk. -R /etc/asterisk chown asterisk. -R /var/{lib,log,spool}/asterisk chown asterisk. -R /usr/lib64/asterisk chown asterisk. -R /var/www/
Modifichiamo ora la configurazione di PHP ed impostiamo il valore di upload_max_size a 128 MB o più.
vi /etc/php.ini
upload_max_filesize = 128M
Modifichiamo il file principale di configurtazione di Apache (/etc/httpd/conf/httpd.conf) e cambiamo utente e gruppro da ‘apache’ ad ‘asterisk’.
Inoltre modifichiamo ‘AllowOverride None’ directive to ‘AllowOverride All’.
Faccimao quindi ripartire il servizio Apache per rendere efficaci le modifiche:
systemctl restart httpd.service
Entriamo dentro al server MariaDB usando ‘root’ come nome utente e creaimo un nuovo utente e 2 database:
mysql -u root -p MariaDB [(none)]> CREATE DATABASE asterisk; MariaDB [(none)]> CREATE DATABASE asteriskcdrdb; MariaDB [(none)]> CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'Y0uR-PASSW0RD'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON asteriskcrddb.* TO 'asterisk'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> quit;
.
Install Freepbx
pear install db-1.7.14 pear install Console_Getopt cd /opt wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-12.0-latest.tgz tar zxvf freepbx-12.0-latest.tgz cd freepbx ./start_asterisk start ./install
Database engine [mysql]: <Enter> Database name [asterisk]: <Enter> CDR Database name [asteriskcdrdb]: <Enter> Database username [root]: asterisk Database password: Y0uR-PASSW0RD File owner user [asterisk]: <Enter> File owner group [asterisk]: <Enter> Filesystem location from which FreePBX files will be served [/var/www/html]: <Enter> Filesystem location from which Asterisk configuration files will be served [/etc/asterisk]: <Enter> Filesystem location for Asterisk modules [/usr/lib64/asterisk/modules]: <Enter> Filesystem location for Asterisk lib files [/var/lib/asterisk]: <Enter> Filesystem location for Asterisk agi files [/var/lib/asterisk/agi-bin]: <Enter> Location of the Asterisk spool directory [/var/spool/asterisk]: <Enter> Location of the Asterisk run directory [/var/run/asterisk]: <Enter> Location of the Asterisk log files [/var/log/asterisk]: <Enter> Location of the FreePBX command line scripts [/var/lib/asterisk/bin]: <Enter> Location of the FreePBX (root) command line scripts [/usr/sbin]: <Enter> Location of the Apache cgi-bin executables [/var/www/cgi-bin]: <Enter> Directory for FreePBX html5 playback files [/var/lib/asterisk/playback]: <Enter>
Creiamo quindi lo scrips per l’avvio di FreePBX:
vi /etc/systemd/system/freepbx.service
add the following lines:
[Unit] Description=FreePBX VoIP Server After=mariadb.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/fwconsole start ExecStop=/usr/sbin/fwconsole stop [Install] WantedBy=multi-user.target
Impostiamo il servizio FreePBX per la partenza automatica al boot e facciamolo partire:
systemctl enable freepbx.service systemctl start freepbx
Abilitamo la rotazione dei log:
vi /etc/logrotate.d/asterisk
aggiungiamo le righe seguenti:
/var/log/asterisk/queue_log /var/spool/mail/asterisk /var/log/asterisk/freepbx_debug.log /var/log/asterisk/messages /var/log/asterisk/event_log /var/log/asterisk/full { weekly missingok rotate 5 notifempty sharedscripts create 0640 asterisk asterisk postrotate /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null || true endscript }
Apriamo ora il nostro browser preferito ed andiamo su: http://<FreePBX-Server-IP-Address>/admin e creiamo un nuovo amministratore.