Tutorial Asterisk e FreePBX su Centos 7

freepbx vpsAsterisk è 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.2
contrib/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.

freepbx vps back-end

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.