Installation d'Asterisk

Telechargement des sources dans /tmp/asterisk/

 mkdir /tmp/asterisk/
 wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.18.tar.gz -O /tmp/asterisk/asterisk-1.4.18.tar.gz
 wget http://downloads.digium.com/pub/zaptel/releases/zaptel-1.4.8.tar.gz -O /tmp/asterisk/zaptel-1.4.8.tar.gz
 wget http://downloads.digium.com/pub/libpri/releases/libpri-1.4.3.tar.gz -O /tmp/asterisk/libpri-1.4.3.tar.gz
 wget http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.5.tar.gz -O /tmp/asterisk/asterisk-addons-1.4.5.tar.gz

Construction de l'environment de compilation

 apt-get -y install linux-source-2.6.18 kernel-package g++ libncurses5-dev linux-kernel-headers sqlite libnewt-dev libusb-dev zlib1g-dev libmysqlclient15-dev libsqlite0-dev

Configuration des sources du kernel

 cd /usr/src/
 tar xvjf linux-source-2.6.18.tar.bz2
 ln -s /usr/src/linux-source-2.6.18 /usr/src/linux
 cd /usr/src/linux/
 make oldconfig
 make prepare
 make prepare scripts

Decompresion des sources dans /usr/src/

 cd /usr/src/
 tar zxvf /tmp/asterisk/asterisk-1.4.18.tar.gz
 tar zxvf /tmp/asterisk/asterisk-addons-1.4.5.tar.gz
 tar zxvf /tmp/asterisk/libpri-1.4.3.tar.gz 
 tar zxvf /tmp/asterisk/zaptel-1.4.8.tar.gz

Compilation de Zaptel

 cd /usr/src/zaptel-1.4.8
 ./configure
 make menuconfig
 make install
 make config

Compilation de libpri

 cd /usr/src/libpri-1.4.3
 make install

Compilation de Asterisk

 cd /usr/src/asterisk-1.4.18
 ./configure
 make menuconfig
 make install
 make samples

Compilation des Addons Asterisk

 cd /usr/src/asterisk-addons-1.4.5
 ./configure
 make menuconfig
 make install

Liens Symboliques (Modules)

 ln -s /lib/modules/2.6.18/ /lib/modules/`uname -r`/asterisk
 depmod

Lancement de ztdummy au démarrage

 echo ztdummy >> /etc/modules

Installation de FreePBX

Construction de l'environment

 apt-get install -y apache2 php5 php5-cli mysql-server-5.0 php-pear php5-mysql php-db libapache2-mod-php5 php5-gd php5-curl

Telechargement des sources dans /tmp/freepbx/

 mkdir /tmp/freepbx/
 wget http://mesh.dl.sourceforge.net/sourceforge/amportal/freepbx-2.4.0.tar.gz -O /tmp/freepbx/freepbx-2.4.0.tar.gz

Decompresion des sources de freepbx dans /usr/src/

 cd /usr/src
 tar zxvf /tmp/freepbx/freepbx-2.4.0.tar.gz

Changement de la taille maximum des upload PHP

 cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini-orig
 sed -e "s/\(upload_max_filesize *= *\)\(.*\)/\120M/" /etc/php5/apache2/php.ini > /etc/php5/apache2/php.ini.tmp
 mv /etc/php5/apache2/php.ini.tmp /etc/php5/apache2/php.ini

Musique d'attente (Lien symbolique)

 ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3

Utilisateur & Permissions du user asterisk

 adduser asterisk --disabled-password --gecos "asterisk PBX" --home /var/lib/asterisk
 adduser www-data asterisk

Changement de l'utilisateur www-data en asterisk pour apache

 cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf-orig
 
 sed -e "s/\(^User *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf > /etc/apache2/apache2.conf.tmp
 mv /etc/apache2/apache2.conf.tmp /etc/apache2/apache2.conf
 
 sed -e "s/\(^Group *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf > /etc/apache2/apache2.conf.tmp
 mv /etc/apache2/apache2.conf.tmp /etc/apache2/apache2.conf

MySQL

 echo "create database asteriskcdrdb;" | mysql -u root
 echo "create database asterisk;" | mysql -u root
 echo "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';" | mysql -u root
 echo "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';" | mysql -u root
 
 mysql -u asteriskuser -pamp109 asteriskcdrdb < /usr/src/freepbx-2.4.0/SQL/cdr_mysql_table.sql
 mysql -u asteriskuser -pamp109 asterisk < /usr/src/freepbx-2.4.0/SQL/newinstall.sql

Configuration de Asterisk pour utilisation avec FreePBX

 cp /etc/asterisk/asterisk.conf /etc/asterisk/asterisk.conf.orig
 sed -e "s/\(astrundir *=> *\)\(.*\)/\1\/var\/run\/asterisk/" /etc/asterisk/asterisk.conf > /etc/asterisk/asterisk.conf.tmp
 mv /etc/asterisk/asterisk.conf.tmp /etc/asterisk/asterisk.conf
 
 mkdir /var/run/asterisk
 chown -R asterisk:asterisk /var/run/asterisk

Demarrage de Asterisk Post Installation

 /usr/sbin/asterisk

Modification des fichiers de configuration de FreePBX

 cp /usr/src/freepbx-2.4.0/install_amp /usr/src/freepbx-2.4.0/install_amp-orig
 
 sed -e "s/\(^\$webroot*\)\(.*\)/\1 = \"\/var\/www\";/" /usr/src/freepbx-2.4.0/install_amp > /usr/src/freepbx-2.4.0/install_amp.tmp
 
 mv /usr/src/freepbx-2.4.0/install_amp.tmp /usr/src/freepbx-2.4.0/install_amp
 chmod 755 /usr/src/freepbx-2.4.0/install_amp

Installation de FreePBX

 cd /usr/src/freepbx-2.4.0/
 ./install_amp

Arret de Asterisk Post Installation

 kill -9 $(cat /var/run/asterisk/asterisk.pid)

Remove Apache2 Redirect

 sed -e "s/\(RedirectMatch*\)\(.*\)//" /etc/apache2/sites-enabled/000-default > /etc/apache2/sites-enabled/000-default.tmp
 mv /etc/apache2/sites-enabled/000-default.tmp /etc/apache2/sites-enabled/000-default

Redemarrage de apache

 /etc/init.d/apache2 restart

Changement des droits

 chown -R asterisk:asterisk /etc/asterisk
 chmod 777 /etc/asterisk/
 
 chown -R asterisk:asterisk /var/lib/asterisk/
 chmod 775 /var/lib/asterisk/
 
 chown -R asterisk:asterisk /var/www/

Copie des images manquantes

 cp /var/www/admin/modules/dashboard/images/notify_* /var/www/admin/images/

Changement des mots de passe par default

Changement du mot de passe SQL pour le user SQL asteriskuser

Remplacer <PWD> par votre mot de passe

 sed -e "s/\(^AMPDBPASS=*\)\(.*\)/\1<PWD>/" /etc/amportal.conf > /etc/amportal.conf.tmp
 mv /etc/amportal.conf.tmp /etc/amportal.conf
 echo "SET PASSWORD FOR 'asteriskuser'@'localhost' = PASSWORD('<PWD>');" | mysql -u root

Changement du mot de passe Asterisk Manager

Remplacer <PWD> par votre mot de passe

 sed -e "s/\(^secret = *\)\(.*\)/\1<PWD>/" /etc/asterisk/manager.conf > /etc/asterisk/manager.conf.tmp
 mv /etc/asterisk/manager.conf.tmp /etc/asterisk/manager.conf
 
 sed -e "s/\(^AMPMGRPASS=*\)\(.*\)/\1<PWD>/" /etc/amportal.conf > /etc/amportal.conf.tmp
 mv /etc/amportal.conf.tmp /etc/amportal.conf

Changement du mot de passe ROOT Mysql

Remplacer <PWD> par votre mot de passe

echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('<PWD>');" | mysql -u root

Scripts d'auto-installation

C'est un bien grand mot auto-installation, mais j'ai déjà pu installer à plusieurs reprises installer Asterisk+FreePBX sur une Debian Etch en moins de 30 Minutes (configuration comprise) grâce à ces 3 scripts.

NOTE IMPORTANTE : Ces scripts sont prévu pour être excecutés sur un serveur fraichement installé avec une Debian Etch.

Avant de lancer le 1er script, vous devez vous assurer que votre serveur est bien connecté à internet, et que votre fichier /etc/apt/sources.list est correctement renseigné.

  • Script n°1 : inst1-1.4.18.sh : Installation de Asterisk 1.4.18
  • Script n°2 : inst2-2.4.0.sh : Installation de FreePBX 2.4.0
  • Script n°3 : inst3.sh : Changement des mots de passe par default
Cette version de script, n'est pas la dernière version dispnible. UPDATE : 13/08/2008 : Nouvelle version du script, voir le nouveau billet dans la catégorie VOIP Asterisk & Telephony.