sexta-feira, 19 de junho de 2020

Como instalar o Asterisk® SCF™ 16 no RHEL8/CentOS 8



O Asterisk® SCF™ é uma implementação de software baseada em CLI de um PBX (Private Branch Exchange). Em conjunto com interfaces de hardware de telefonia e aplicativos de rede adequados, o Asterisk® SCF™ é usado para estabelecer e controlar chamadas telefônicas entre terminais de telecomunicações, como aparelhos telefônicos habituais, destinos na rede telefônica pública comutada (PSTN) e dispositivos ou serviços de voz sobre Internet Protocol, dentro das Redes de Computadores, seja, LAN, WAN ou a Mundial (W3C- WWW/VoIP/ToIP/GoIP/TDMoIP). Seu nome deriva do símbolo asterisco (*) de um sinal usado na discagem por tom múltiplo (DTMF). Neste guia detalhado, você aprenderá como instalar o Asterisk® SCF™ 16 no RHEL 8/CentOS 8.

Clique aqui para ver os recursos disponíveis no Asterisk® SCF™.

Etapa 1: Instalar o Repositório EPEL 8

Antes de continuar neste artigo, atualize seu sistema:
# dnf update -y

Execute o comando abaixo para instalar o EPEL Release 8
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

Etapa 2: Desativar o SELinux

Abra o arquivo /etc/SELinux/config usando o comando abaixo e modifique uma linha de SELINUX=enforcing para SELINUX=disabled
# vim /etc/selinux/config
Em seguida, salve as alterações e saia (Tecla ESC + : + x = Esc :x).


Agora reinicie sua máquina
# reboot

Etapa 3: Instalar Dependências

Instale as ferramentas de desenvolvimento de software e outras dependências necessárias para executar o Asterisk® SCF™ usando os seguintes comandos.
# dnf groupinstall "Development Tools" -y
# dnf install git wget net-tools sqlite-devel psmisc ncurses-devel libtermcap-devel newt-devel libxml2-devel libtiff-devel gtk2-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) crontabs cronie-anacron -y

Etapa 4: Compilar e Instalar JANSSON

Jansson é uma biblioteca C, é usada para codificar/decodificar e manipular dados JSON. execute os comandos abaixo para instalá-lo.
# cd /usr/src/
# git clone https://github.com/akheron/jansson.git
# cd jansson
# autoreconf -i
# ./configure --prefix=/usr/
# make && make install

Etapa 5: Compilar e Instalar PJSIP

O PJSIP é uma biblioteca de comunicação multimídia gratuita e de código aberto, escrita na linguagem C, implementando protocolos baseados em padrão, como SIP, SDP, RTP, STUN, TURN e ICE. Ele combina o protocolo de sinalização (SIP) com a rica estrutura multimídia e a funcionalidade de passagem NAT na API de alto nível que é portátil e adequada para praticamente qualquer tipo de sistema, desde desktops, sistemas embarcados a aparelhos móveis.

Execute o seguinte comando para instalar o PJSIP
# cd /usr/src/
# git clone https://github.com/pjsip/pjproject.git
# cd pjproject
# ./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
# make dep
# make
# make install
# ldconfig

Etapa 6: Instalar e Configurar o Asterisk®  SCF™

Todas as dependências estão instaladas e o 
Asterisk® SCF™ está pronto para instalação.
# cd /usr/src/
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
# tar xfz asterisk-16-current.tar.gz
# rm -f asterisk-16-current.tar.gz
# cd asterisk-16*/

Instale os pacotes libedit usando os comandos abaixo:
# dnf install https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libedit-3.1-24.20170329cvs.fc29.x86_64.rpm -y
# dnf install https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libedit-devel-3.1-24.20170329cvs.fc29.x86_64.rpm -y

Configuração do Asterisk® SCF™
# contrib/scripts/Install_prereq Install
# contrib/scripts/Install_prereq Install-unpackaged
# ./configure --libdir=/usr/lib64

Etapa 7: Configurar as opções do Asterisk®  SCF™ Module e Build Option Selection

Defina as opções de menu do Asterisk® SCF™ usando o seguinte comando, você também pode selecionar as opções desejadas.

Aqui você usará as teclas de seta (Cima, Baixo, Direita e Esquerda) para navegar e a tecla Enter para selecionar a opção desejada. A opção selecionada será marcada com o símbolo *.

# make menuselect

1 => Selecione “app_macro” na seção Aplicativos (Applications).


2 => Em Complementos (Add-ons), selecione "chan_ooh323" e "format_mp3"


3 => Em Pacotes principais de som (Core Sound Packages), selecione os seguintes formatos de áudio.
  • CORE-SOUNDS-EN-ULAW
  • CORE-SOUNDS-EN-ALAW
  • CORE-SOUNDS-EN-GSM
  • CORE-SOUNDS-EN-G729
  • CORE-SOUNDS-EN-G722
  • CORE-SOUNDS-EN-SLN16
  • CORE-SOUNDS-EN-SIREN7
  • CORE -SOUNDS-EN-SIREN14

4 => Para Música em espera (Music On Hold), selecione os seguintes módulos mínimos:
  • MOH-OPSOUND-WAV
  • MOH-OPSOUND-ULAW
  • MOH-OPSOUND-ALAW
  • MOH-OPSOUND-GSM

5 = > Em Pacotes de Som Extra (Extra Sound Packages), selecione como mostrado abaixo
  • EXTRA-SOUNDS-EN-WAV
  • EXTRA-SOUNDS-EN-ULAW
  • EXTRA-SOUNDS-EN-ALAW
  • EXTRA-SOUNDS-EN-GSM

Em seguida, salve e saia.

Etapa 8: Criar (Build) e Instalar (Install) o Asterisk®  SCF™

Baixe a biblioteca de decodificadores de mp3 na árvore de origem e construa (Build) o Asterisk® SCF™.
# contrib/scripts/get_mp3_source.sh
# make
# make install
# make samples
# make config
# ldconfig

Etapa 9: Criar usuário "asterisk" e iniciar o Asterisk®  SCF™

Crie um grupo e usuário para os serviços do Asterisk® SCF™ e atribua permissões apropriadas usando os seguintes comandos:
# groupadd asterisk
# useradd -r -d /var/lib/asterisk -g asterisk asterisk
# usermod -aG audio,dialout asterisk
# chown -R asterisk.asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk

Defina o usuário padrão do 
Asterisk® SCF™:
edite o arquivo /etc/sysconfig/asterisk usando o comando abaixo:
# vim /etc/sysconfig/asterisk
e adicione as linhas abaixo neste arquivo.
AST_USER="asterisk"
AST_GROUP="asterisk"
Em seguida, edite o arquivo /etc/asterisk/asterisk.conf usando o comando abaixo.
# vim /etc/asterisk/asterisk.conf
e adicione as linhas abaixo neste arquivo.
runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.

Etapa 10: Configurar os serviços do Asterisk®  SCF™

Agora reinicie o serviço 
Asterisk® SCF™ e ative-o na inicialização
# systemctl restart asterisk
# systemctl enable asterisk
# systemctl status asterisk

Verifique se você pode se conectar ao Asterisk® SCF™ *CLI> executando o comando abaixo:
# rasterisk -vvvvgci

Se você entrou na tela acima, parabéns! você tem acesso ao Asterisk® SCF™ no RHEL 8/CentOS 8.

Deste ponto em diante, você está pronto para avançar em seus estudos com o livro Asterisk Guia Definitivo - Telefonia de código aberto para empresas. Um livro excelente para você que está entrando neste mundo de Telefonia IP ou que já está nele! 

OBS: Este artigo cobre as paginas de 53 a 63 do capitulo 3 - Instalando o Asterisk, logo não execute nada destas paginas caso tenha seguido este artigo. Qualquer dúvida venha fazer parte da comunidade Asterisk Brasil Community no Telegram. Aguardamos você!



terça-feira, 16 de junho de 2020

CentOS 8: Instalando dependências do Asterisk® SCF™


Tivemos algumas perguntas sobre se o Asterisk poderia ser instalado facilmente no CentOS 8. Há alguns meses, a resposta para essa pergunta era não . No entanto, com algum tempo, alguns pacotes adicionados posteriormente e uma contribuição personalizada do repositório de código aberto, agora acreditamos que a resposta mudou. Neste post, explicarei quais etapas precisam ser seguidas para instalar as dependências necessárias para a maioria das configurações do usuário.

Preparação do pacote

Depois de instalar o CentOS 8, e se você ainda não o fez, verifique se o seu sistema está "atualizado":

# dnf update

Vários módulos do Asterisk possuem dependências encontradas no repositório Extra Packages for Enterprise Linux (EPEL), portanto, a seguir, adicionaremos:

# dnf install epel-release

O mesmo vale para o repositório do PowerTools e pode ser ativado com o seguinte comando:

# dnf config-manager --set-enable PowerTools

Atualizar, instalar e ativar o descrito acima deve permitir que a maioria dos usuários localize e faça o download da maioria das dependências usadas pelos vários módulos do Asterisk. No entanto, algumas bibliotecas potencialmente necessárias ainda estarão ausentes. Mais sobre isso depois. Nesse ponto, você pode instalar manualmente os pacotes necessários para um módulo específico ou usar o script install_prereq encontrado no diretório contrib/scripts/ de origem do Asterisk .

Se você escolher a última opção, depois que a fonte do Asterisk for baixada, execute o seguinte no diretório de origem de nível superior:

# contrib/scripts/install_prereq install
# contrib/scripts/install_prereq install-unpackaged


res_corosync

Como mencionado, mesmo depois de fazer o acima, alguns módulos ainda terão as dependências necessárias necessárias para permitir a ativação e o carregamento no Asterisk. O módulo res_corosync é um desses módulos. As dependências para este módulo podem ser encontradas no repositório do CentOS HighAvailability , que pode ser ativado usando o seguinte comando:

# dnf config-manager --set-enabled HighAvailability

Depois de ativada, as bibliotecas corosync dependentes agora podem ser instaladas:

# dnf install corosync-devel

Smithing Copr

Jared Smith criou um pacote Asterisk® SCF™ para o repositório do CentOS 8 que contém alguns pacotes usados ​​pelo Asterisk que estão faltando atualmente nos outros repositórios mencionados. Se você não conseguir encontrar o pacote que está procurando em outro repositório, talvez queira procurá-lo neste.

AVISO LEGAL: Este repositório foi criado e atualmente é mantido por Jared Smith como colaborador de código aberto. A existência atual deste repositório e os pacotes contidos não reivindicam nenhuma existência futura deste repositório ou de seus pacotes ou de outros semelhantes.

Dito isto, Jared está trabalhando para colocar alguns dos pacotes localizados em seu repositório em um dos repositórios "base". Por exemplo, libresample. Enquanto isso, se você quiser usar um pacote de seu repositório, poderá ativá-lo usando o seguinte:

# dnf copr enable jsmith/Asterisk_17_Centos_8

Como nota, ele diz "Asterisk_17", mas deve funcionar contra outros lançamentos do Asterisk® SCF™. Por exemplo, pude usar alguns dos pacotes para compilar com o Asterisk® SCF™ Versão 16 LTS (Certified).

O resto

Uma vez instaladas as dependências necessárias, o Asterisk está pronto para ser configurado e construído. Se você fez todas as etapas acima e encontrou um módulo necessário, ainda falta uma dependência necessária, isso significa que o pacote ainda não existe para ele. Ou nunca existiu, e a dependência deve ser construída a partir de sua fonte.

Abaixo estão algumas dependências do módulo Asterisk que descobri que, atualmente, não existem bibliotecas empacotadas disponíveis para o CentOS 8 (a lista abaixo inclui o módulo Asterisk e sua dependência ausente):

Módulos principais:
  • chan_motif - iksemel
  • res_xmpp - iksemel
Modos estendidos
  • app_osplookup - osptk
  • cdr_beanstalkd - beanstalk
  • cel_beanstalkd - pé de feijão
  • res_calendar_exchange - iksemel
  • res_timing_kqueue - kqueue
Módulos preteridos
  • chan_misdn - isdnnet, misdn, suppserv
  • chan_nbs - nbs
  • chan_phone - ixjuser
  • chan_vpb - vpb
  • res_config_sqlite - sqlite
Quase todas as dependências listadas aqui historicamente tiveram que ser construídas manualmente a partir de sua origem. Significando que os pacotes do CentOS nunca existiram para eles ou que um pacote existia ao mesmo tempo, mas não é mais criado (por exemplo, iksemel ). Se você usar qualquer um desses módulos, precisará rastrear o código-fonte e criar as bibliotecas manualmente.

Ready CentOS Eight

O Asterisk® SCF™ pode ser facilmente instalado no CentOS 8? Com base no exposto, eu diria que, para a maioria dos usuários, a resposta é sim. Para aqueles que desejam instalar e usar os pacotes do repositório de Jared, você também deve estar pronto. Finalmente, se você usar um dos módulos sem dependência pré-empacotada, provavelmente deverá construí-lo a partir da fonte. Então você também está pronto para usar o Asterisk® SCF™ no CentOS 8.