Debian Centos Asterisk Howto

From Pruonckk.org

Conteúdo

Prefacio

Pressupomos que você ja está com o sistema base devidamente instalado, discos particionados etc....

Sendo assim, podemos passar para os passos importantes


AVISO

Exceto pelas dependencias instaladas aqui (utilizando o yum e nomes de pacotes utilizados no centos), todo o processo de compilação, os códigos utilizados, servem para qualquer sistema.

Dependencias

No centOS utilizamos para instalação de aplicativos (da propria distribuição), um aplicativo chamado yum.

Exemplo de uso do yum

para procurar um aplicativo

yum search mysql

para instalar um aplicativo

yum install mysql

Exemplo de uso de rpm

Os pacotes que o yum manipula são pacotes rpm, caso você venha a utilizar algum pacote rpm, abaixo segue os comandos mais basicos.

para instalar pacotes rpm

rpm -ivh pacote.rpm

para remover

rpm -e nome_do_pacote

para atualizar

rpm -Uvh pacote.rpm

para procurar pacotes

rpm -qa | grep -i pacote

para listar conteudo de um pacote (instalado)

rpm -ql pacote

Instalando as dependencias (YUM)

Abaixo segue a lista de dependencias que precisamos instalar.

yum install libstdc++ gcc-c++ cpp gcc libstdc++-devel libstdc++ ncurses ncurses-devel \
newt-devel newt  kernel.i686 kernel-devel.i686 libtiff-devel libxml2-devel openssl-devel doxygen mysql-devel

Caso você esteja utilizando debian, pode instalar utilizando o seguinte comando

apt-get install gcc g++ libncurses5-dev libmysqlclient15-dev make linux-headers-`uname -r` doxygen libstdc++6-dev \
libssl-dev libnewt-dev libtiff4-dev libxml2-dev

Atualizando o PERL

Utilizaremos o perl atravéz de cpan, para isso precisamos atualizar os pacotes e configurar os repositorios utilizados, para isso utilize o comando abaixo.

perl -MCPAN -e shell

Após responder todas as questões, execute o comando

install Bundle::CPAN


Baixando o Asterisk

Agora vamos fazer o download do asterisk e de seus arquivos

Atualmente por questão de compatibilidade na utilização do unicall, estamos utilizando a versão 1.2.23

Por questão de habito, sempre faço estes downloads no diretório /usr/src

cd /usr/src/

Agora vamos baixar

wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/app_rxfax.c
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/app_txfax.c
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/chan_unicall.c
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/chan_unicall.c_with_cat_var.patch
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/channels_unicall.patch
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/libmfcr2-20070511.tar.gz
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/libsupertone-20060205.tar.gz
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/libunicall-20070325.tar.gz
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/spandsp-20070825.tar.gz
wget -c http://www.tesliuk.com/mike/downloads/asterisk-1.2/apps_rxfax_makefile.patch
wget -c http://downloads.digium.com/pub/zaptel/releases/zaptel-1.4.9.2.tar.gz
wget -c http://downloads.digium.com/pub/asterisk/releases/asterisk-1.2.23.tar.gz
wget -c http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.2.8.tar.gz
wget -c http://downloads.digium.com/pub/libpri/libpri-1.2.7.tar.gz


Com todos os arquivos na estrutura, vamos descompacta-los

cd /usr/src/
for i in `ls *.gz`; do tar -xzf $i ; done

Pronto, todos os arquivos foram descompactados.

Instalando

Zaptel

O primeiro passo é instalar o driver zaptel da digium, mesmo que você não utilize uma placa da digium, alguns dos applicativos do asterisk utilizam parte de codigo.

cd /usr/src/zaptel-1.4.9.2
./configure
make
make install
make config

Agora vamos iniciar os driver (se voce tiver uma placa digium, ele ja irá levantar o módulo correto)

/etc/init.d/zaptel start


LibPRI

A libpri, é quem interpreta a sinalização utilizada nas linhas ISDN

 cd libpri-1.2.7
 make
 make install


SpanDSP

O Spandsp é responsavel por alguns controle, inclusive pela detecção de de fax

cd /usr/src/spandsp-0.0.4
./configure
make
make install

LibUNICALL

A libunicall é responsavel pela utilização do asterisk, sobre qualquer tipo de sinalização, como ISDN ou R2

cd /usr/src/libunicall-0.0.3
./configure
make
make install

Adinicionando as Biliotecas ao sistema

A libunicall por padrão instala suas libs no diretório /usr/local/lib, desta maneira, para que todo o sistema reconheça a mesma é necessário apontar o diretório.

cd /etc/ld.so.conf.d/
echo "/usr/local/lib/" > local-lib.conf
ldconfig -v | grep -i unicall

Voce verá a biblioteca no sistema


LibSupertone

A libsupertone é responsavel por geração de deteção de tons de tons.

cd /usr/src/libsupertone-0.0.2
./configure
make
make install
ldconfig


LibMFC/R2

A libmfcr2 é quem faz pra gente todo o trabalho de interpretação do R2 junto com a unicall, ou seja, se está utilizando E1 da telefonica por exemplo, você precisa disso

Antes de iniciarmos a compilação precisamos criar um link do header da zaptel para que a compilação funcione.

 ln -s /usr/include/zaptel/zaptel.h /usr/include/linux/

Agora entramos no diretorio e compilamos

cd /usr/src/libmfcr2-0.0.3
./configure
make
make install

Para a libmfc precisamos também adicionar uma entrada no ld.so

cd /etc/ld.so.conf.d/
echo "/usr/local/lib/unicall/protocols" > unicall-protocols.conf
ldconfig


O Asterisk

Nosso asterisk estará sendo preparado para utilização de fax também, então abaixo segue as rotinas necessárias para que este sistema funcione corretamente, e claro, modificações para utilização de unicall.

chan_unicall

cd /usr/src/asterisk-1.2.23
cp ../chan_unicall.c channels/
cd channels/
patch -p1 <  ../../channels_unicall.patch
patch -p0 < ../../chan_unicall.c_with_cat_var.patch
cd ../
cp ../app_rxfax.c apps/
cp ../app_txfax.c apps/
cd apps/
patch -p0 < ../../apps_rxfax_makefile.patch
cd ../
ln -s /usr/include/zaptel/tonezone.h /usr/include/


Iniciando a compilacao

Agora com todos os patchs necessarios aplicados, podemos iniciar a compilação

make
make install
make samples
make progdocs


Asterisk Addons

No pacote asterisk-addons voce tem algumas funções uteis, como cdr em mysql, e suporte a mp3, então vamos instala-lo

cd /usr/src/asterisk-addons-1.2.8
make 
make install

Concluindo

Agora temos o asterisk, e suas libs devidamente instaladas, caso você não venha a utilizar a unicall no ambiente que esta montando, crie um arquivo vazio de nome unicall.conf em /etc/asterisk

touch /etc/asterisk/unicall.conf

Eu por habita também, para não perder os arquivos originais de configuração sempre faço uma copia deles.

cd /etc/asterisk
for i in `ls`; do cp $i $i.orig; done

Assim posso alterar todos os arquivos, e se eu precisar consultar o modelo original, ele estará disponivel para mim.

Script de inicialização

Eu sempre crio um pequeno scrpt de inicialização para carregar o asterisk, abaixo, segue o mesmo.

cd /etc/init.d/
touch asterisk

Abra o arquivo asterisk, e adicione o seguinte conteudo.

#!/bin/bash
PID=0
asterisk_start(){
        echo "iniciando asterisk ...."
        /usr/sbin/safe_asterisk &
        sleep 2
        PID=$(pidof asterisk)
        if [ $PID != "0" ]; then
                echo "asterisk iniciado corretamente "
        else
                echo "houve algum problema, asterisk nao iniciado "
        fi
}

asterisk_stop(){
        echo "parando processo asterisk"
        asterisk -rx "stop now"
        sleep 3
        PID=$(pidof asterisk)
        if [ $PID != "0" ]; then
                echo "houve algum problema, asterisk ainda rodando"
        else
                echo "asterisk encerrado corretamente"
        fi
}

case $1 in 
        start)
                asterisk_start
        ;;
        stop)
                asterisk_stop
        ;;
        restart)
                asterisk_stop
                sleep 2
                asterisk_start
        ;;
        *)
                echo "Utilize as opcoes stop | start | restart "
esac

Após criar o arquivo é necessário dar permissão de execução no mesmo

chmod +x asterisk

E finalmente colocamo-o na inicialização.

cd /etc/rc3.d
ln -s ../init.d/asterisk S99asterisk

Pronto, agora você pode reiniciar o sistema e tentar o acesso.

asterisk -r
Ferramentas pessoais
Inutilidades