sábado, 5 de maio de 2018

Instalando o FreePBX 13 com o Asterisk 13 no Debian 9.0

Quando acabarmos com este artigo usamos as seguintes tecnologias:
- Debian 9.0;
- Asterisco 13;
- FreePBX 13;
- MariaDB 10.1;
- PHP 5.6.


Por que essa solução é usando o MariaDB, e não o MySQL, é que para facilitar a vida dos iniciantes vamos fazer uso do MariaDB, abordando a maneira correta de preparar este SGBD para o projeto FreePBX. Para a instalação, vamos utilizar um o CD minimal install do sistema Debian 9.0 é os pacotes já instalados MariaDB, PHP 7.0, Servidor OpenSSH padrão para o Debian 9 Stretch. Vamos aproveitar e configurar o parâmetro "PermitRootLogin without-password", ele desabilita a autorização do root usar o SSH. Acho isso desconfortável para máquinas de teste em uma rede local, então eu ligo novamente. Todos os comandos são executados a partir do root.

1 - Preparação do Sistema:

1vim /etc/ssh/sshd_config

2systemctl restart sshd.service

Quando terminar de fazer toda a configuração, você deve vir novamente a este ponto e desabilitar está permissão. Pois seu servidor ficara permitindo que o root se conecte nele e isto é uma quebra de segurança.

usando uma ferramenta de SSH (sugerimos o MobaXterm) faça:

1ssh root@192.168.15.99

Claro substitua o nosso ip pelo ip do seu servidor. 

Atualize os pacotes do sistema e o sistema.


1apt-get update && apt-get upgrade -y

2 - Instale os pacotes necessários:

1apt-get install -y build-essential linux-headers-`uname -r`

apt-get install -y openssh-server apache2 bison flex libmariadb-dev
apt-get install -y libmariadbclient-dev mariadb-server mariadb-client

apt-get install -y php-pear curl sox php7.0 php7.0-mysql php7.0-mcrypt

apt-get install -y php7.0-curl php7.0-gd libapache2-mod-php7.0 php7.0-mbstring

apt-get install -y php7.0-xml libncurses5-dev libssl-dev mpg123 libpng-dev

apt-get install -y libxml2-dev libxml2 libcurl3 libnewt-dev sqlite3 libsqlite3-dev
apt-get install -y pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev
apt-get install -y libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev
apt-get install -y libical-dev libneon27-dev libsrtp0-dev libspandsp-dev
apt-get install -y sudo vim subversion libgmime-2.6-0 libgmime-2.6-dev


Durante a instalação, o sistema solicitará uma senha para o usuário root do MariaDB. Aconselhamos que você crie uma senha complexa e anote-a. Para uso meramente acadêmico vamos usar aqui myPass@2018.




3 - Reinicie o sistema:


1reboot

4 - Substitua o PHP7.0 pelo PHP5.6:


1vim /etc/apt/sources.list 

Vamos adicionar os repositórios. Coloque no final do arquivo sources.list.


1# Repositorios de Jessie
2deb http://ftp.debian.org/debian/ jessie main contrib non-free
3deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
4deb http://security.debian.org/ jessie/updates main contrib non-free

5deb-src http://security.debian.org/ jessie/updates main contrib non-free

Vamos configurar as preferências do apt e apt-get, para usar dois repositórios. Adicione o seguinte ao arquivo /etc/apt/preferences.d/jessie:



1Package: *
2Pin: release n=stretch
3Pin-Priority: 900
4
5Package: *
6Pin: release n=jessie

7Pin-Priority: 100

Atualize as novas configurações.

1apt update

Instalar o PHP5.6.


1apt install php5 php5-pgsql php5-gd php5-curl php5-cli apache2


5 - Defina as dependências necessárias para o Google Voice:


1pear install Console_Getopt

1cd /usr/src
3cd iksemel
4./configure
5make
6make install
7ldconfig

6 - Faça o download dos pacotes necessários Dahdi, Libpri, Asterisk 13, Jansson, PJproject:


7 - Descompacte e instale o Dahdi, Libpri:


01cd /usr/src/

02tar xvfz dahdi-linux-complete-current.tar.gz

03cd dahdi-linux-complete-*

04make all

05make install
06make config
07cd /usr/src/
08tar xvfz libpri-current.tar.gz
09cd libpri-*
10make
11make install

8 - Descompacte e instale o Pjproject:


1cd /usr/src

2tar -xjvf pjproject-2.6.tar.bz2

3cd pjproject-2.6

4CFLAGS='-DPJ_HAS_IPV6=1' ./configure --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr

5make dep
6make
7make install

9 - Descompacte e instale o Jansson:


1cd /usr/src

2tar vxfz jansson.tar.gz

3cd jansson-*

4autoreconf -i

5./configure
6make
7make install

10 - Descompacte e instale o Asterisk 13:

1cd /usr/src/
2tar xvfz asterisk-13-current.tar.gz
3cd asterisk-*
4./contrib/scripts/get_mp3_source.sh
5./contrib/scripts/install_prereq install

Na janela que se abre, você deve fornecer o código do país, nosso caso, Brasil é 55.



6./contrib/scripts/install_prereq install-unpackaged
7./configure
8make menuselect

Também é necessário selecionar os módulos format_mp3 e aqueles que você pode precisar no futuro, as imagens é para que você tenha uma ideia do que julgamos necessários.

















Depois que os módulos forem selecionados, clique em Salvar e Sair e continue a instalação:

1make
2make install
3make config
4ldconfig

5update-rc.d -f asterisk remove


11 - Baixe e instale arquivos de som para o Asterisk 13:


1cd /var/lib/asterisk/sounds/

2mkdir br

3cd br

4wget -O core.zip https://www.asterisksounds.org/pt-br/download/asterisk-sounds-core-pt-BR-sln16.zip

5

6789
wget -O extra.zip https://www.asterisksounds.org/pt-br/download/asterisk-sounds-extra-pt-BR-sln16.zip

unzip core.zip
unzip extra.zip
chown -R asterisk.asterisk /var/lib/asterisk/sounds/br
find /var/lib/asterisk/sounds/br -type d -exec chmod 0775 {} \;


12 - Convertendo arquivos de som para outros formatos:

1cd /var/lib/asterisk/sounds/br/

2vim astconvert.sh

#!/bin/bash
for a in $(find . -name '*.sln16'); do
  sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t gsm -r 8k `echo $a|sed "s/.sln16/.gsm/"`;\
  sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e a-law `echo $a|sed "s/.sln16/.alaw/"`;\
  sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e mu-law `echo $a|sed "s/.sln16/.ulaw/"`;\
done
1chmod a+x astconvert.sh

2./astconvert.sh

Para ativar os sons utilizando FreePBX, basta alterar o parâmetro da variável language dentro de Asterisk SIP Settings. Neste caso, colocando es. Se existirem ramais ou linhas IAX2, será necessário configurar no parâmetro language acessando o menu Asterisk IAX Settings.

Cada canal de Asterisk tem sua configuração de língua. O valor inserido na configuração é dividido por cada underline para construir a rota onde Asterisk buscará os sons. Assim, Asterisk utilizará o primeiro arquivo que encontre.

Isso quer dizer que se o valor do parâmetro language for es_AR_Maria, Asterisk buscará os arquivos em:


.../sounds/pt_br_Maria
.../sounds/pt_br 
.../sounds/pt
.../sounds
Isso faz com que seja possível acrescentar novas variantes de uma língua baseadas em um esquema geral.

13 - Vamos iniciar a instalação do FreePBX 13:

Para fazer isso, crie um usuário e defina permissões nas pastas:

1adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk
2usermod -a -G dialout,audio asterisk

01chown -R asterisk:asterisk /var/lib/asterisk &&
02chown -R asterisk:asterisk /var/log/asterisk &&
03chown -R asterisk:asterisk /var/run/asterisk &&
04chown -R asterisk:asterisk /var/spool/asterisk &&
05chown -R asterisk:asterisk /usr/lib/asterisk &&
06chown -R asterisk:asterisk /etc/asterisk &&
07chmod -R u=rwX,g=rX,o= /var/lib/asterisk &&
08chmod -R u=rwX,g=rX,o= /var/log/asterisk &&
09chmod -R u=rwX,g=rX,o= /var/run/asterisk &&
10chmod -R u=rwX,g=rX,o= /var/spool/asterisk &&
11chmod -R u=rwX,g=rX,o= /usr/lib/asterisk &&
12chmod -R u=rwX,g=rX,o= /etc/asterisk

14 - Vamos modificar o Apache 2 para trabalhos futuros com o FreePBX 13:


1sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini

2cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig

3sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf

4sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

5service apache2 restart

15 - Configure o ODBC:


1cat >> /etc/odbcinst.ini << EOF

2[MySQL]

3Description = ODBC for MySQL

4Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so

5Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so

6FileUsage = 1

7   
8EOF

Edite ou crie o arquivo /etc/odbc.ini e configure:


01cat >> /etc/odbc.ini << EOF

02[MySQL-asteriskcdrdb]

03Description=MySQL connection to 'asteriskcdrdb' database

04driver=MySQL

05server=localhost

06database=asteriskcdrdb

07Port=3306
08Socket=/var/run/mysqld/mysqld.sock
09option=3
10   
11EOF


16 - Configure o banco de dados MariaDB:


Lembrando que a senha que informamos na instalação do MariaDB foi myPass@2018. Então iremos informar como usuário root e o password myPass@2018.



1mysqladmin -uroot -pmyPass@2018 create asterisk

2mysqladmin -uroot -pmyPass@2018 create asteriskcdrdb

3mysql -uroot -pmyPass@2018 -e "GRANT ALL PRIVILEGES ON asterisk.* TO root@localhost IDENTIFIED BY 'myPass@2018';"

4mysql -uroot -pmyPass@2018 -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO root@localhost IDENTIFIED BY 'myPass@2018';"

5mysql -uroot -pmyPass@2018 -e "FLUSH PRIVILEGES;"



17 - O estágio final. Baixe e instale o FreePBX 13:


O motivo de estarmos utilizando o FreePBX 13 é para poder usar o AstSBC 13, para conseguir o pacote visite o site do projeto.




Durante a fase de instalação, você deve especificar dbuser e dbpass, que você inseriu na etapa 16.

1cd /usr/src
3tar vxfz freepbx-13.0-latest.tgz
4cd freepbx
5./start_asterisk start
6./install -n --dbuser=root --dbpass=myPass@2018

A instalação está concluída e agora você precisa ir para o endereço http://YOUR_IP/admin e configurar o administrador, especificando o login e a senha.


Isso conclui a instalação, você pode prosseguir com a configuração. Se houver erros ou inconsistências no artigo, ficaremos gratos se você nos escrever sobre eles nos comentários.



O objetivo é criar um instalador automatizando assim este artigo.




Angelo de Barros Delphini

Autor & Editor

Professor Convidado CT Novatec.

Gerente de TIC/P&D na Delphini systems

Desenvolvedor Digium™ The Asterisk® Communications Framework Sênior.

Digium™ Certificate: dCAA, dCAI, dCAI-TPT, dCSE-C, dCSP-C, dSSE

Linux User # 472499 - Ubuntu User # 22452 - ICQ User # 86119719

0 comentários:

Postar um comentário

Manual Categories