Você está na página 1de 18

MANUAL DE INSTALAÇÂO

SNEP 3 - Forma “artesanal”


Anderson Rafael Freitas

19 anos, entusiasta por Linux e


telecomunicações. Extrovertido,
comunicativo e apaixonado por
disseminar o conhecimento. Tenho
como hobby escrever artigos para
meu blog.

Twitter: @DialplanReload
Linkedin: https://goo.gl/cdvhBw
Facebook: https://goo.gl/mueKqO
Email: tmsi.freitas@gmail.com
Email: freitas@dialplanreload.com
Blog: http://www.dialplanreload.com/
Informações do Arquivo

Arquivo PDF 1.3 – Cap 2 – 14-03-2016.odt


Versão 1.3-14032016
Autor Anderson R. Freitas
Como contribuir? Mande email para: tmsi.freitas@gmail.com ou freitas@dialplanreload.com

Este manual faz parte do projeto pessoal de escrever um


livro sobre Snep (Que ainda não tem nome :P )! Caso
queira contribuir com qualquer coisa, seja correção ou
acréscimo de informação, por favor, faça contato
comigo ;) Conto com você!!
Agradecimentos!

Gostaria de agradecer ao Willian Mazzardo por testar e validar toda a parte de instalação
do Snep em cima de um CentOS 7 e reportar todo os itens que precisavam ser ajustados
(As revisões 1.1/1.2/1.3 só foram possíveis com sua ajuda!!! Valeu Mazzardo).

Este capítulo teve grande apoio e ajuda das documentações e artigos espalhados pelo
fórum do Snep. Gostaria de agradecer a todos os membros que colaboram e tornam o
software livre uma ferramenta melhor, em especial ao DaCoD, que me ajudou muito nesta
etapa e também ao Flávio e Heros Filho, os autores dos principais artigos que foram
consultados.
Revisões

Versão: 1.1

* Correção do erro abaixo ao rodar o Asterisk para CentOS:

asterisk: error while loading shared libraries: libjansson.so.4: cannot open shared object file: No
such file or directory

Solução: echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local.conf && /sbin/ldconfig

Versão: 1.2

* Correção do erro ao abrir a interface para CentOS:

Uncaught exception 'Zend_Log_Exception' with message '"/var/log/snep//ui.log" cannot be opened


with mode "a"'

Solução: rm -rf /var/log/snep/ui.log

Versão: 1.3

* Adicionado os pacotes abaixo junto a instalação para CentOS:

yum install -y unzip dialog mysql-connector-odbc kernel-devel

* Alterado os arquivos /etc/odbc.ini e odbcinst.ini para solucionar o erro:

[Mar 14 15:24:20] WARNING[25734]: res_odbc.c:1560 odbc_obj_connect: res_odbc: Error


SQLConnect=-1 errno=0 [unixODBC][Driver Manager]Can't open lib '/usr/lib/odbc/libmyodbc.so' :
file not found

Solução:

Ajuste os arquivos do ODBC.ini


[root@Livro sounds]# vi /etc/odbc.ini

Altere a linha abaixo:

De:
Socket = /var/run/mysqld/mysqld.sock

Para:
Socket = /var/lib/mysql/mysql.sock

E agora, ajuste os arquivos do ODBCINST.ini


[root@Livro sounds]# vi /etc/odbcinst.ini

Altere a linha abaixo:


De:
Driver = /usr/lib/odbc/libmyodbc.so

Para:
Driver = /usr/lib64/libmyodbc5.so

* Adicionado o serviço MariaDB para iniciar automaticamente


* Desabilitado o SELINUX
Capitulo 2 – Mão na massa: Instalação do Snep!

Neste capítulo vamos fazer a instalação completa do Snep. Poderíamos fazer isto de duas
maneiras, utilizando a ISO disponibilizada para download, que vem com tudo pronto ou
fazendo uma instalação passo a passo.

Baixando e instalando a ISO do Snep sua central estará pronta, basta configurar ela do seu
jeito e sair usando. Porém, esta maneira é muito genérica, devido a isto, vamos adotar o
processo de instalação passo a passo, instalando tudo que for necessário para o uso do
Snep. Este método vai facilitar o entendimento de como funciona o Snep e aplicações.

Para começo, recomendo que você já tenha instalado um Linux para que possamos fazer a
instalação do Snep, obviamente, pode ser o sistema operacional que você achar mais
adequado, porém, recomendo o uso do Debian 8, sistema operacional homologado com
esta versão do Snep.

Em nossos laboratórios, iremos usar Debian e CentOS nas versões 8.1 e 7.0
respectivamente. Caso você queira usar outra distribuição, fique a vontade, inclusive,
compartilhe as peculiaridades de cada uma, pois os comandos aqui mostrados podem
sofrer alterações.

Todo o livro foi escrito e baseado na versão 3 do Snep.

2.1 Preparando o ambiente

Como citado no capítulo 1, o Snep tem uma estrutura composta por outras aplicações para
que seu funcionamento seja bem sucedido.

Depois de verificar suas configurações de repositório e fazer um update, vamos instalar o


Apache, o PHP e também o banco de dados e preparar a instalação de todos os pacotes
necessários para compilarmos o Asterisk, procedimento que faremos no tópico a seguir,
além de todos os ajustes necessários para fazer com que sua central VoIP Snep funcione!

Vamos começar pelo Apache, siga os passos abaixo:

→ Para Debian

root@Livro-Snep:~# apt-get install -y apache2

Após a instalação, inicie o processo com o comando:

root@Livro-Snep:~# /etc/init.d/apache2 start

→ Para CentOS

[root@Livro ~]# yum install -y httpd

Após a instalação, inicie o processo com o comando:


[root@Livro ~]# systemctl start httpd.service

Feita a instalação do Apache, vamos instalar o PHP5, o Banco de Dados e as respectivas


dependências e pacotes necessários.

→ Para Debian

root@Livro-Snep:~# apt-get install -y php5 php5-cgi php5-mysql php5-gd php5-curl


build-essential lshw
libjansson-dev mysql-server

→ Para CentOS

[root@Livro ~]# yum -y install php php-mysql php-gd php-ldap php-odbc php-pear php-
xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel mariadb-server mariadb
mysql-connector-odbc dialog unzip kernel-devel

No caso do CentOS, necessário usar o comando abaixo para finalizar a instalação do


MariaDB:

Inicie o serviço:

[root@Livro ~]# systemctl start mariadb.service

Finalize a instalação:
* Em negrito, as teclas que devem ser pressionadas.

[root@Livro ~]# mysql_secure_installation

Enter current password for root (enter for none): [ENTER]


Set root password? [Y/n] [Y] [ENTER]
New password: sneppass
Re-enter new password: sneppass

*Defina a senha como sneppass pois é a senha utilizada pelo Snep para se conectar ao
banco de dados!

Remove anonymous users? [Y/n] [Y] [ENTER]


Disallow root login remotely? [Y/n] [N] [ENTER]
Remove test database and access to it? [Y/n] [N] [ENTER]
Reload privilege tables now? [Y/n] [Y] [ENTER]

Thanks for using MariaDB!

[root@Livro ~]# chkconfig asterisk on && systemctl enable mariadb.service

Com todos os passos acima bem sucedidos, vamos instalar os demais pacotes necessários.
→ Para Debian

root@Livro-Snep:~# apt-get -y install unixodbc unixodbc-dev libmyodbc odbcinst1debian2


libcurl3 libssl-dev sox sqlite3 libsqlite3-dev libapache2-mod-php5 libxml2-dev uuid-dev
ncurses-dev libjansson-dev git

→ Para CentOS

[root@Livro ~]# yum install -y make wget openssl-devel ncurses-devel newt-devel


libxml2-devel kernel-devel gcc gcc-c++ sqlite-devel libuuid-devel git sox libiodbc
unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel

Esta instalação pode demorar um pouquinho, busque um café, vai lhe ajudar bastante!

Ajuste os parâmetros abaixo dentro dos arquivos PHP mencionados, e logo na sequência,
reinicie o servidor web (Apache).

→ Para Debian

root@Livro-Snep:~# vi /etc/php5/cgi/php.ini

Altere o parâmetro abaixo, de Off para On.

register_argc_argv = Off → register_argc_argv = On

Agora, reinicie o Apache:

root@Livro-Snep:~# /etc/init.d/apache2 restart

→ Para CentOS

[root@Livro ~]# vi /etc/php.ini

Altere o parâmetro abaixo, de Off para On.

register_argc_argv = Off → register_argc_argv = On

Será necessário fazer as liberações no CentOS para que o Apache funcione coorretamente,
portanto, digite:

[root@Livro html]# systemctl start httpd.service

[root@Livro html]# systemctl enable httpd.service

[root@Livro html]# firewall-cmd --permanent --zone=public --add-service=http

[root@Livro html]# firewall-cmd --permanent –zone=public --add-service=https


[root@Livro html]# firewall-cmd --reload

Agora, reinicie o Apache:

[root@Livro ~]# systemctl restart httpd.service

Antes de finalizarmos por completo a preparação do ambiente, e necessário fazer a


instalação do pacote json no CentOS. Caso você esteja usando Debian, pode pular este
etapa, já instalamos o pacote do json para Debian mais acima.

→ Para CentOS

Vamos até o diretório adequado para baixar os binários.


[root@Livro ~]# cd /usr/src/

Agora, faça download.


[root@Livro src]# wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz

Descompacte o pacote e acesse o diretório originado.


[root@Livro src]# tar -zxf jansson-2.5.tar.gz && cd jansson-2.5/

Compile e finalize com o comando abaixo.


[root@Livro jansson-2.5]# ./configure && make clean && make all && make install &&
ldconfig && echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local.conf && /sbin/ldconfig

O comando acima permitiu a configuração do Json, já podemos continuar normalmente com


a instalação das demais aplicações.

Pronto! Seu ambiente está pronto para seguir no próximos tópicos, onde iremos instalar o
Asterisk e logo na sequência o Snep.

2.2 Compilando o Asterisk

Como já mencionado, o Snep é uma plataforma que permite o gerenciamento do Asterisk,


que também é um software livre, licenciado pela GPLv2.

Para iniciarmos o processo de instalação do Asterisk, vamos seguir esta sequência lógica:

• Obtenção dos fontes/binários


• Descompactação dos arquivos baixados
• Compilação dos fontes/binários
• Ajustes para execução
• Inicialização

Seguindo nosso planejamento, vamos obter os fontes do Asterisk. Como estaremos usando
o Snep 3, a versão utilizada será a 13.
→ Para Debian/CentOS

Vamos até o diretório para download.


# cd /usr/src/

Dentro do diretório, basta fazer o download.


/usr/src/# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-
current.tar.gz

Após efetuarmos o download, iremos descompactar o arquivo.


/usr/src/# tar xvf asterisk-13-current.tar.gz

Acesse o diretório descompactado.


/usr/src/# cd asterisk-13.6.0/

Agora sim, vamos a parte mais importante do processo de instalação do Asterisk, iremos
compilar os arquivos baixados.
/usr/src/asterisk-13.6.0/# ./configure

Neste momento, várias informações serão apresentadas na tela, checando todas as


dependências e aplicações necessárias para que o Asterisk possa ser utilizado. Ao final do
procedimento anterior, a logomarca do Asterisk será apresentada na tela, isso indicará que
tudo deu certo até agora. Vamos ao próximo passo.

Dando sequência a instalação dos fontes, execute:


→ Para Debian

/usr/src/asterisk-13.6.0# make menuselect

Ao final do comando, aparecerá uma tela com diversos menus, será necessário alterar
alguns destes, portanto, se atente aos seguintes pontos:

• Marque a opção CDR_ODBC no menu Call Detail Recording;


• Marque a opção ODBC_STORAGE no menu Voicemail Build Options.

Para navegar nos menus, use as setas para se movimentar, "x" para salvar e "ESC" para
cancelar. Salve as novas informações e vamos ao novamente ver mais linhas e linhas de
código passando diante dos olhos. Ao finalizar, use os comandos abaixo para terminar a
instalação.

→ Para Debian/CentOS

[root@Livro asterisk-13.6.0]# make clean

Ao final do comando acima, digite:

[root@Livro asterisk-13.6.0]# ./configure –libdir=/usr/lib64


Agora, rprecisaremos ajudar o mesmo parâmetro no Menu Select, portanto digite:

[root@Livro asterisk-13.6.0]# make menuselect

E marque as opções abaixo:

• Marque a opção CDR_ODBC no menu Call Detail Recording;


• Marque a opção ODBC_STORAGE no menu Voicemail Build Options.

Feito isto, vamos dar sequência a instalação:

[root@Livro asterisk-13.6.0]# make && make install && make samples && make config

Enquanto rolam mais informações na tela (este passo irá demorar bastante), dá tempo pra
outro café. #Ficadica.

Após finalizar o comando acima, vamos aos ajustes!

→ Para Debian

Copie o arquivo de inicialização do Asterisk para dentro do diretório init.d.


root@Livro-Snep:/usr/src/asterisk-13.6.0# cp contrib/init.d/rc.debian.asterisk
/etc/init.d/asterisk

Dê permissão de execução para o inicializador!

Para Debian
root@Livro:/usr/src/asterisk-13.6.0# chmod +x /etc/init.d/asterisk

Ajuste o arquivo de inicialização.


root@Livro-Snep:/usr/src/asterisk-13.6.0# vi /etc/init.d/asterisk

Altere os valores das linhas abaixo.


DAEMON=__ASTERISK_SBIN_DIR__/asterisk → DAEMON=/usr/sbin/asterisk
ASTVARRUNDIR=__ASTERISK_VARRUN_DIR__ → ASTVARRUNDIR=/var/run/asterisk
ASTETCDIR=__ASTERISK_ETC_DIR__ → ASTETCDIR=/etc/asterisk

Permita com que o Asterisk incie automaticamente caso o servidor seja reiniciado.

→ Para Debian

root@Livro-Snep:~# update-rc.d asterisk defaults

→ Para CentOS

[root@Livro ~]# chkconfig asterisk on


Agora sim, falta só o Snep. Uffa!!

2.3 Obtendo e instalando o Snep!

Para fazermos a instalação do Snep, vamos usar o Git dos desenvolvedores projeto. Foi
escolhido está maneira para que independente da data que você esteja lendo, seja possível
usar uma versão mais atual.

Para iniciar, vamos fazer o download do Snep dentro do diretório /var/www/html.

Para Debian/CentOS

# cd /var/www/html/

# git clone https://bitbucket.org/snepdev/snep-3.git

# mv snep-3 snep

Ajuste as permissões necessárias para concluir a instalação do Snep, portanto, use:

Para Debian:

root@Livro:/var/www/html# find . -type f -exec chmod 640 {} \; -exec chown www-


data:www-data {} \;

root@Livro:/var/www/html# find . -type d -exec chmod 755 {} \; -exec chown www-


data:www-data {} \;

root@Livro:/var/www/html# chmod +x /var/www/html/snep/agi/*

Para CentOS:

[root@Livro html]# find . -type f -exec chmod 640 {} \; -exec chown apache:apache {} \;

[root@Livro html]# find . -type d -exec chmod 755 {} \; -exec chown apache:apache {} \;

[root@Livro html]# chmod +x /var/www/html/snep/agi/*

Os comandos abaixo são necessários para fazer os ajustes de diretório do Snep:

Para Debian:

*** Crie o diretório para armazenar os logs do Snep.


root@Livro:/var/www/html# mkdir /var/log/snep

*** Vá até o diretório criado acima.


root@Livro:/var/www/html# cd /var/log/snep
*** E crie os arquivos de log.
root@Livro:/var/log/snep# touch ui.log ; touch agi.log

*** Crie um link simbólico do log Full do Asterisk para o diretório atual.
root@Livro:/var/log/snep# ln -s /var/log/asterisk/full full

*** Ceda as permissões para os arquivos.


root@Livro:/var/log/snep# chown -R www-data.www-data *

*** Vamos até o diretório onde estão as configurações do Snep.


root@Livro:/var/log/snep# cd /var/www/html/snep/

*** Crie um link simbólico do diretório /var/log/snep para o diretório atual.


root@Livro:/var/www/html/snep# ln -s /var/log/snep logs

*** Mova-se para o diretório indicado.


root@Livro:/var/www/html/snep# cd /var/lib/asterisk/agi-bin/

*** Crie outro link simbólico.


root@Livro:/var/lib/asterisk/agi-bin# ln -s /var/www/html/snep/agi/ snep

*** Mude novamente de diretório.


root@Livro:/var/lib/asterisk/agi-bin# cd /etc/apache2/sites-enabled/

*** E crie outro link simbólico.


root@Livro:/etc/apache2/sites-enabled# ln -s /var/www/html/snep/install/snep.apache2
001-snep

*** Mais uma vez, mude de diretório.


root@Livro:/etc/apache2/sites-enabled# cd /var/spool/asterisk/

*** Exclua o arquivo indicado.


root@Livro:/var/spool/asterisk# rm -rf monitor

*** E pra finalizar, mais um link simbólico.


root@Livro:/var/spool/asterisk# ln -sf /var/www/html/snep/arquivos monitor

Depois de fazer os ajustes com o Debian, vamos repetir o processo no CentOS.

*** Crie o diretório para logs.


[root@Livro snep]# mkdir /var/log/snep

*** Mova-se até o diretório criado


[root@Livro snep]# cd /var/log/snep

*** Crie o arquivo indicado.


[root@Livro snep]# touch agi.log ; touch ui.log
*** Gere um link simbólico.
[root@Livro snep]# ln -s /var/log/asterisk/full full

*** Ceda as permissões necessárias.


[root@Livro snep]# chown -R apache.apache *

*** Vá até o diretório indicado.


[root@Livro snep]# cd /var/www/html/snep/

*** Crie novamente um link simbólico.


[root@Livro snep]# ln -s /var/log/snep logs

*** Outra vez troque de diretório.


[root@Livro snep]# cd /var/lib/asterisk/agi-bin/

*** E crie um link simbólico.


[root@Livro agi-bin]# ln -s /var/www/html/snep/agi/ snep

*** Vá ao diretório indicado.


[root@Livro agi-bin]# cd /var/spool/asterisk/

Remova o arquivo abaixo.


[root@Livro asterisk]# rm -rf monitor

*** E crie o link simbólico indicado.


[root@Livro asterisk]# ln -sf /var/www/html/snep/arquivos monitor

Feito os procedimento acima, será necessário alterar as configurações do Apache para que
você consiga acessar a interface web do Snep, por isso edite o arquivo httpd.conf:

[root@Livro asterisk]# vi /etc/httpd/conf/httpd.conf

Ao final do arquivo, cole as configurações abaixo:

### OPENS ###


Alias /snep "/var/www/html/snep"
<Directory "/var/www/html/snep">
Options Indexes FollowSymLinks
AllowOverride All
Order deny,allow
Allow from 127.0.0.0/255.0.0.0 192.168.0.0/255.255.0.0
201.47.74.147/255.255.255.255
Deny from all
php_value output_buffering 4096
php_value memory_limit 128M
php_value upload_max_filesize 5M
php_value max_execution_time 90
</Directory>
Agora, basta reiniciar o serviço do Apache:

[root@Livro asterisk]# systemctl restart httpd.service

Lembrando que, este processo de instalação é bem artesanal, sendo necessário fazer todos
os ajustes para que o Snep funcione corretamente. Para facilitar no dia a dia, recomendo
fortemente o uso da ISO disponibilizada no site do projeto.

Após fazer os passos acimas, são necessários mais alguns ajustes, mas que em sua maioria
são iguais em ambos os ambientes.

Para Debian/CentOS

-- Use as configurações do Snep para o Asterisk.

# cd /etc/
# rm -rf asterisk
# cp -avr /var/www/html/snep/install/etc/asterisk .
# cp /var/www/html/snep/install/etc/odbc* .

-- Ajustando as configurações de Sons do Asterisk

# cd /usr/src
# wget -c http://www.sneplivre.com.br/downloads/asterisk-sounds.tgz
# tar -xzf asterisk-sounds.tgz -C /var/lib/asterisk/
# cd /var/lib/asterisk/sounds
# mkdir -p tmp backup pt_BR/tmp pt_BR/backup

Para Debian
root@Livro:/var/lib/asterisk/sounds# chown -R www-data:www-data *

Para CentOS
[root@Livro sounds]# chown -R apache:apache *

Ajuste os arquivos do ODBC.ini


[root@Livro sounds]# vi /etc/odbc.ini

Altere a linha abaixo:

De:
Socket = /var/run/mysqld/mysqld.sock

Para:
Socket = /var/lib/mysql/mysql.sock

E agora, ajuste os arquivos do ODBCINST.ini


[root@Livro sounds]# vi /etc/odbcinst.ini
Altere a linha abaixo:

De:
Driver = /usr/lib/odbc/libmyodbc.so

Para:
Driver = /usr/lib64/libmyodbc5.so

-- Ajustando as configurações de Sons do Asterisk – Música de Espera

# cd /var/lib/asterisk/moh
# mkdir tmp backup
# mkdir -p snep_1/tmp snep_1/backup
# mkdir -p snep_2/tmp snep_2/backup
# mkdir -p snep_3/tmp snep_3/backup

Para Debian

root@Livro:/var/lib/asterisk/moh# chown -R www-data.www-data *

Para CentOS

[root@Livro moh]# chown -R apache:apache *

-- Ajustando as configurações de Sons do Asterisk – Sons do Snep

# mkdir -p /var/www/html/snep/sounds
# cd /var/www/html/snep/sounds/
# ln -sf /var/lib/asterisk/moh/ moh
# ln -sf /var/lib/asterisk/sounds/pt_BR/ pt_BR

-- Criando base de dados para o Snep

# cd /var/www/html/snep/install/database
# mysql -u root -p < database.sql
# mysql -u root -p snep < schema.sql
# mysql -u root -p snep < system_data.sql
# mysql -u root -p snep < core-cnl.sql

*** Remova o arquivo abaixo


[root@Livro ]# rm -rf /var/log/snep/ui.log

*** Agora, para finalizar, vamos desabilitar o SELINUX.


[root@Livro ]# vi /etc/selinux/config

Altere a linha abaixo:


SELINUX=enabled

Para:

SELINUX=disabled

Ao chegar neste ponto, toda a parte artesanal de funcionamento do Snep está pronta. Caso
você queira customizar sua instalação, recomendo que leia e entenda a fundo este capítulo,
porém, se você deseja apenas ter a central Snep funcionando, o caminho mais fácil é usar
as ISO's disponibilizadas no site do projeto. Mesmo que você opte pela segunda opção, é
interessante que faça o processo manual ao menos uma vez, para entender um pouco mais
do funcionamento do Snep.

2.4 Primeiro acesso.

A partir de agora, a instalação está pronta, portanto, vamos fazer o primeiro acesso a
Interface web do Snep. Verifique o IP que foi alocado para o seu servidor e acesse através
do seu navegador, adicionando ao final do IP o /snep.

Exemplo: http://192.168.10.100/snep

Você também pode gostar