Mudanças entre as edições de "PJI011104 - Projeto Integrador IV - 2022-1"
Linha 204: | Linha 204: | ||
Ter o Docker instalado na máquina hospedeira | Ter o Docker instalado na máquina hospedeira | ||
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top|Instalação básica para testes}} | + | {{collapse top|Instalação básica do Asterisk com freepbx para testes}} |
Instalação básica via docker com banco de dados MySQL embutido. | Instalação básica via docker com banco de dados MySQL embutido. | ||
Linha 225: | Linha 225: | ||
</code> | </code> | ||
− | 2) Subindo um contêiner baseado na imagem <code>tiredofit/freepbx</code> | + | 2) Subindo um contêiner baseado na imagem <code>tiredofit/freepbx</code>: |
− | Antes de subir o contêiner, podemos verificar se já há algum contêiner rodando. Espera-se que neste momento ainda não haja nenhum contêiner baseado na imagem | + | Antes de subir o contêiner, podemos verificar se já há algum contêiner rodando. Espera-se que neste momento ainda não haja nenhum contêiner baseado na imagem <code>tiredofit/freepbx</code>, já que o comando para subir o contêiner ainda não foi executado: |
<code> | <code> | ||
Linha 233: | Linha 233: | ||
</code> | </code> | ||
− | Para subir o contêiner, rode (esse contêiner está sendo apelidado de | + | Para subir o contêiner, rode (esse contêiner está sendo apelidado de <code>test-freepbx</code>): |
<code> | <code> | ||
− | $ docker run --name test tiredofit/freepbx | + | $ docker run --name test-freepbx tiredofit/freepbx |
+ | </code> | ||
+ | |||
+ | Este comando pode demorar alguns minutos (até 30). O terminal deve apresentar uma série de procedimentos de inicialização que são executados dentro do contêiner que incluem s6-init, fix-attrs, cont-init e a criação dos arquivos padrão para freepbx, utilização de "embedded db" no CDR, além da inicialização do WebServer para a interface freepbx. O último comando deve ser a inicialização do zabbix e do cron. | ||
+ | |||
+ | 3) Acessando a interface Web do freepbx. | ||
+ | |||
+ | Para acessar a interface, é necessário saber o endereço IP do sistema que roda dentro do contêiner, para isso: | ||
+ | |||
+ | 3.1) Abra um outro terminal | ||
+ | |||
+ | 3.2) Verifique se o contêiner está rodando com o comando 'docker ps' (a seguir um exemplo de resposta): | ||
+ | |||
+ | <code> | ||
+ | $ docker ps | ||
+ | |||
+ | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | ||
+ | |||
+ | bca6826ffaea tiredofit/freepbx "/init" 53 minutes ago Up 53 minutes 80/tcp, 443/tcp, 4445/tcp, 4569/tcp, 5060/udp, 5061/tcp, 5161/tcp, 8001/tcp, 8003/tcp, 8008-8009/tcp, 8025/tcp, 5160/udp, 10050/tcp, 18000-20000/udp test-freepbx | ||
+ | </code> | ||
+ | |||
+ | 3.3) Conecte este novo terminal ao contêiner que foi apelidado de <code>test-freepbx</code>: | ||
+ | |||
+ | <code> | ||
+ | $ docker exec -it test-freepbx bash | ||
+ | </code> | ||
+ | |||
+ | 3.4) Obtenha o endereço IP do contêiner com o comando <code>ip -4 a</code> (a seguir um exemplo de resposta): | ||
+ | |||
+ | <code> | ||
+ | <nowiki>#</nowiki> ip -4 a | ||
+ | |||
+ | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever | ||
+ | 19: eth0@if20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link-netnsid 0 inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever | ||
+ | </code> | ||
+ | |||
+ | Portanto, neste exemplo, o IP do contêiner é 172.17.0.2. | ||
+ | |||
+ | 3.5) Para acessar a interface Web do freepbx, abra o browser e digite http://<IP do contêiner>/admin. Neste exemplo ficou http://172.17.0.2/admin | ||
+ | |||
+ | Obs.: Para desconectar o terminal do contêiner, digite <code>exit</code>. | ||
+ | |||
+ | 4) Daqui em diante as configurações devem seguir a interface do freepbx que permite inclusive adicionar idiomas e arquivos de áudio. | ||
+ | |||
+ | Obs.: Os arquivos de configuração do Asterisk podem ser consultados em <code>/etc/asterisk</code> e os arquivos binários incluindo arquivos de sons ficam em <code>/var/lib/asterisk</code>, porém, não é recomendável modificar os arquivos manualmente. Para realizar configurações, deve-se utilizar a interface gráfica do freepbx. | ||
+ | |||
+ | 5) Para encerrar o contêiner, pressional <code>Ctrl+C</code> no terminal que subiu o contêiner | ||
+ | |||
+ | 6) Para reiniciar o contêiner que foi criado anteriormente | ||
+ | |||
+ | <code> | ||
+ | $ docker start -ai test | ||
+ | </code> | ||
+ | |||
+ | ATENÇÃO: Após derrubar o contêiner, se for dado novo comando <code>$ docker run ...</code> será criado um contêiner completamente novo. | ||
+ | |||
+ | Para aplicações finais (em ambiente de produção), a utilização do banco de dados embutido no contêiner docker do Asterisk não é recomendada pois no caso de perda deste contêiner, as informações do bando de dados também serão perdidas. Para evitar isso, utiliza-se um arquivo de banco de dados externo ao contêiner, além de que uma instalação profissional também deve estar associada a configurações extra de segurança tanto de acesso ao sistema quanto de backup de dados. | ||
+ | {{collapse bottom}} | ||
+ | {{collapse top|Instalação de um abiente de produção do Asterisk com freepbx}} | ||
+ | A instalação via docker apresentada para testes utiliza banco de dados embutido no container, o que é ruim pois a perda do container acarreta em perda dos dados do banco e também não trata de backup dos dados do banco. Nesta instalação para ambiente de produção, estes problemas são solucionados. Para isso está sendo utilizada a ferramente [https://docs.docker.com/compose/ docker-compose], um orquestrador de contêineres, que concorre, em termos de funcionalidades, com a conhecida ferramenta [https://kubernetes.io/ kubernetes]. | ||
+ | |||
+ | No docker-compose um arquivo no formato [https://en.wikipedia.org/wiki/YAML yml] descreve os contêineres que deve ser carregados, suas configurações entre outros parâmetros como a configuração de rede a qual os contêineres estão conectados. | ||
+ | |||
+ | Para este tutorial será utilizado o exemplo dado por [https://github.com/tiredofit/docker-freepbx] na pasta <code>example</code> onde um arquivo <code>docker-compose.yml</code> é disponibilizado. No exemplo dado, três contêineres são criados: | ||
+ | * freepbs-app: que sobe o serviço Asterisk e a interface Web freepbx. Este contêiner mapeia 4 volumes que são acessíveis da máquina hospedeira (./certs, ./data, ./log e ./data/www). | ||
+ | * freepbx-db: sobe o serviço mariadb e mapeia a pasta ./db | ||
+ | * freepbx-db-backup: realiza backup do banco de dados, mapeando a pasta ./dbbackup. | ||
+ | Todos os contêineres estão sob o "guarda-chuva" de um proxy reverso provido por uma rede chamada nginx-proxy. Na prática, o proxy reverso é um "guarda-chuva" do lado servidor. O [https://en.wikipedia.org/wiki/Nginx nginx] é um servidor web, que neste caso está sendo utilizado como "porta de entrada" para serviços providos por este conjunto de contêineres. | ||
+ | |||
+ | Procedimento: | ||
+ | |||
+ | 1) Para subir esse conjunto de contêineres exemplo, é necessário baixar o arquivo <code>docker-compose.yml</code> em uma pasta qualquer. | ||
+ | |||
+ | 2) Crie a rede nginx-proxy: | ||
+ | |||
+ | <code> | ||
+ | $ docker network create nginx-proxy | ||
+ | </code> | ||
+ | |||
+ | 3) Para carregar o conjunto de contêineres, estando na pasta onde está o arquivo <code>docker-compose.yml</code> basta digitar: | ||
+ | |||
+ | <code> | ||
+ | $ docker-compose up | ||
+ | </code> | ||
+ | |||
+ | Ao subir os multiplos contêineres, deve ser possível observar as mensagens de carregamento de serviços nestes diferentes contêineres (freepbx-db, freepbx-db-backup e free-pbx-app) | ||
+ | |||
+ | 4) Para verificar se os contêineres estão rodando, em um outro terminal digite: | ||
+ | |||
+ | <code> | ||
+ | $ docker ps | ||
+ | </code> | ||
+ | |||
+ | Deve ser possível ver três contêineres ativos. | ||
+ | |||
+ | 4) Para conectar o terminal a um contêiner, por exemplo o freepbx-app, digite: | ||
+ | |||
+ | <code> | ||
+ | $ docker exec -it freepbx-app bash | ||
+ | </code> | ||
+ | |||
+ | Obtenha o IP da máquina da aplicação freepbx utilizando a mesma lógica apresentada no ambiente de testes. | ||
+ | |||
+ | Para desconectar, digite <code>$ exit</code> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | |||
+ | =Roteiro de instalação do Asterisk (apenas) utilizando docker= | ||
+ | {{collapse top|Pré-requisitos}} | ||
+ | Ter o Docker instalado na máquina hospedeira | ||
+ | {{collapse bottom}} | ||
+ | {{collapse top|Instalação básica apenas do Asterisk para testes}} | ||
+ | Instalação básica via docker com banco de dados MySQL embutido. | ||
+ | |||
+ | 1) Baixando a [https://hub.docker.com/r/mlan/asterisk imagem docker mlan/asterisk]: | ||
+ | |||
+ | <code> | ||
+ | $ docker pull mlan/asterisk:latest | ||
+ | </code> | ||
+ | |||
+ | Aguarde a realização do download completo. | ||
+ | |||
+ | Verifique se a imagem baixada está aparecendo na lista de imagens disponíveis no docker local. | ||
+ | |||
+ | <code> | ||
+ | $ docker image ls | ||
+ | </code> | ||
+ | |||
+ | 2) Subindo um contêiner baseado na imagem <code>mlan/asterisk</code>: | ||
+ | |||
+ | Antes de subir o contêiner, podemos verificar se já há algum contêiner rodando. Espera-se que neste momento ainda não haja nenhum contêiner baseado na imagem <code>mlan/asterisk</code>, já que o comando para subir o contêiner ainda não foi executado: | ||
+ | |||
+ | <code> | ||
+ | $ docker ps | ||
+ | </code> | ||
+ | |||
+ | Para subir o contêiner, rode (esse contêiner está sendo apelidado de 'test-asterisk'): | ||
+ | |||
+ | <code> | ||
+ | $ docker run --name test-asterisk mlan/asterisk | ||
</code> | </code> | ||
Edição das 14h49min de 2 de julho de 2022
Dados importantes
Professor
- Professor da Disciplina: Adilson Jair Cardoso e Cleber Jorge Amaral
- Email: adilson.jair@ifsc.edu.br e cleber.amaral@ifsc.edu.br
Turma virtual
- Acesse o sigaa bucando a disciplina PJI011104 - PROJETO INTEGRADOR IV (2021.2 - T01)
Aulas síncronas não presenciais
- Horários
- segundas e terças-feiras das 19:00 às 22:00
- sábados letivos serão com atividades assíncronas.
- Mais informações ver SIGAA
Aulas presenciais
- Horários
- Em condições de aulas presenciais: Sala 05, Laboratório Interativo e Meios de transmissão
Organização curricular
Roteiro de instalação do Asterisk
Passo 0: Requisitos para instalação do Asterisk |
---|
|
Passo 1: Preparando a máquina virtual que será o servidor Asterisk |
---|
Considerando a instalação do Asterisk em uma máquina virtual Ubuntu, as informações a seguir se referem ao que deve ser feito dentro da máquina virtual. 1) Certifique-se de ter uma máquina virtual linux para instalar o Asterisk (recomendável que tenha ao menos 20GB de espaço em disco - você pode criar uma máquina virtual vazia, baixar uma das versões testadas do linux no formato ISO e utilizar esse arquivo como um CDROM para fazer a instalação) 2) Como serão feitos vários comandos que requerem privilégio de administrador, realize o seguinte comando para chavear o terminal para o modo de administração (root):
Obs.1: Digite a senha de seu usuário (que necessariamente precisa ser um usuário que tenha privilégio de se tornar super usuário - pertencente ao grupo sudoers). Obs.2: No comando acima foi utilizando o símbolo Obs.3: Como regra de ouro, procure sempre estar atento as mensagens impressas no terminal. Diversos problemas podem ocorrer e muitas vezes estes são fáceis de resolver apenas seguindo as orientações impressas em casos de falhas. Caso não consiga resolver o problemas pelas próprias informações dadas, copie o erro dado e cole no google para verificar se outros usuários já experimentaram este problema e se há orientações de como resolvê-lo. 3) Certifique-se de que o sistema operacional da máquina virtual esteja atualizado:
4) Instalando as bibliotecas requeridas pelo Asterisk:
5) Instalando o gerenciador de banco de dados MySQL:
Obs.: Será utilizada a senha |
Passo 2: Intalando o Asterisk e realizando a configuração inicial do Asterisk |
---|
1) Baixe o arquivo tar.gz do Asterisk disponibilizado (versão 13.38.3) e mova para a pasta /usr/src. 2) Descompacte o arquivo tar.gz com o comando:
3) Entre na pasta descompactada digitando:
4) Realize a compilação do Asterisk
5) Realize a configuração da instalação
Na tela de configuração marque a opção 6) Realize a instalação
Se o serviço subiu e o rasterisk rodou bem, deu tudo certo, você pode sair da interface cliente.
|
Entendendo os parâmetros de configuração do Asterisk |
---|
Tipos SIP:
Qualify:
|
Comandos rasterisk |
---|
Mostra lista de comandos:
Sair da interface cliente:
Recarrega configurações SIP:
Recarrega todas as configurações:
Mostra status dos terminais cadastrados:
|
Resolução de problemas |
---|
PROBLEMA: Não está sendo possível acessar o servidor Asterisk de uma outra máquina. Solução: Liberação de portas do firewall para funcionamento do Asterisk:
PROBLEMA: Asterisk não está mais subindo depois que a máquina foi reiniciada. Solução: reinstalar o Asterisk (sem modificar os arquivos de configuração que já tenham sido editados) Tente subir o serviço manualmente
Se pelo comando status o serviço não subiu, tente reinstalar o Asterisk:
|
Roteiro de instalação do Asterisk com freepbx utilizando docker
Pré-requisitos |
---|
Ter o Docker instalado na máquina hospedeira |
Instalação básica do Asterisk com freepbx para testes |
---|
Instalação básica via docker com banco de dados MySQL embutido. Obs.: Há diferentes imagens docker que trazem o Asterisk já previamente configurado, neste tutorial utilizaremos a imagem disponibilizada em [1]. 1) Baixando a imagem docker tiredofit/freepbx:
Obs.: No lugar de latest, pode-se utilizar outra tag. Este tutorial foi realizado com a versão 15, portanto, para baixar a exata imagem que foi utilizada neste tutorial utilize o comando Aguarde a realização do download completo. Verifique se a imagem baixada está aparecendo na lista de imagens disponíveis no docker local.
2) Subindo um contêiner baseado na imagem Antes de subir o contêiner, podemos verificar se já há algum contêiner rodando. Espera-se que neste momento ainda não haja nenhum contêiner baseado na imagem
Para subir o contêiner, rode (esse contêiner está sendo apelidado de
Este comando pode demorar alguns minutos (até 30). O terminal deve apresentar uma série de procedimentos de inicialização que são executados dentro do contêiner que incluem s6-init, fix-attrs, cont-init e a criação dos arquivos padrão para freepbx, utilização de "embedded db" no CDR, além da inicialização do WebServer para a interface freepbx. O último comando deve ser a inicialização do zabbix e do cron. 3) Acessando a interface Web do freepbx. Para acessar a interface, é necessário saber o endereço IP do sistema que roda dentro do contêiner, para isso: 3.1) Abra um outro terminal 3.2) Verifique se o contêiner está rodando com o comando 'docker ps' (a seguir um exemplo de resposta):
3.3) Conecte este novo terminal ao contêiner que foi apelidado de
3.4) Obtenha o endereço IP do contêiner com o comando
Portanto, neste exemplo, o IP do contêiner é 172.17.0.2. 3.5) Para acessar a interface Web do freepbx, abra o browser e digite http://<IP do contêiner>/admin. Neste exemplo ficou http://172.17.0.2/admin Obs.: Para desconectar o terminal do contêiner, digite 4) Daqui em diante as configurações devem seguir a interface do freepbx que permite inclusive adicionar idiomas e arquivos de áudio. Obs.: Os arquivos de configuração do Asterisk podem ser consultados em 5) Para encerrar o contêiner, pressional 6) Para reiniciar o contêiner que foi criado anteriormente
ATENÇÃO: Após derrubar o contêiner, se for dado novo comando Para aplicações finais (em ambiente de produção), a utilização do banco de dados embutido no contêiner docker do Asterisk não é recomendada pois no caso de perda deste contêiner, as informações do bando de dados também serão perdidas. Para evitar isso, utiliza-se um arquivo de banco de dados externo ao contêiner, além de que uma instalação profissional também deve estar associada a configurações extra de segurança tanto de acesso ao sistema quanto de backup de dados. |
Instalação de um abiente de produção do Asterisk com freepbx |
---|
A instalação via docker apresentada para testes utiliza banco de dados embutido no container, o que é ruim pois a perda do container acarreta em perda dos dados do banco e também não trata de backup dos dados do banco. Nesta instalação para ambiente de produção, estes problemas são solucionados. Para isso está sendo utilizada a ferramente docker-compose, um orquestrador de contêineres, que concorre, em termos de funcionalidades, com a conhecida ferramenta kubernetes. No docker-compose um arquivo no formato yml descreve os contêineres que deve ser carregados, suas configurações entre outros parâmetros como a configuração de rede a qual os contêineres estão conectados. Para este tutorial será utilizado o exemplo dado por [2] na pasta
Todos os contêineres estão sob o "guarda-chuva" de um proxy reverso provido por uma rede chamada nginx-proxy. Na prática, o proxy reverso é um "guarda-chuva" do lado servidor. O nginx é um servidor web, que neste caso está sendo utilizado como "porta de entrada" para serviços providos por este conjunto de contêineres. Procedimento: 1) Para subir esse conjunto de contêineres exemplo, é necessário baixar o arquivo 2) Crie a rede nginx-proxy:
3) Para carregar o conjunto de contêineres, estando na pasta onde está o arquivo
Ao subir os multiplos contêineres, deve ser possível observar as mensagens de carregamento de serviços nestes diferentes contêineres (freepbx-db, freepbx-db-backup e free-pbx-app) 4) Para verificar se os contêineres estão rodando, em um outro terminal digite:
Deve ser possível ver três contêineres ativos. 4) Para conectar o terminal a um contêiner, por exemplo o freepbx-app, digite:
Obtenha o IP da máquina da aplicação freepbx utilizando a mesma lógica apresentada no ambiente de testes. Para desconectar, digite |
Roteiro de instalação do Asterisk (apenas) utilizando docker
Pré-requisitos |
---|
Ter o Docker instalado na máquina hospedeira |
Instalação básica apenas do Asterisk para testes |
---|
Instalação básica via docker com banco de dados MySQL embutido. 1) Baixando a imagem docker mlan/asterisk:
Aguarde a realização do download completo. Verifique se a imagem baixada está aparecendo na lista de imagens disponíveis no docker local.
2) Subindo um contêiner baseado na imagem Antes de subir o contêiner, podemos verificar se já há algum contêiner rodando. Espera-se que neste momento ainda não haja nenhum contêiner baseado na imagem
Para subir o contêiner, rode (esse contêiner está sendo apelidado de 'test-asterisk'):
Este comando pode demorar alguns minutos (até 30). O terminal deve apresentar uma série de procedimentos de inicialização que são executados dentro do contêiner que incluem s6-init, fix-attrs, cont-init e a criação dos arquivos padrão para freepbx, utilização de "embedded db" no CDR, além da inicialização do WebServer para a interface freepbx. O último comando deve ser a inicialização do zabbix e do cron. 3) Acessando a interface Web do freepbx. Para acessar a interface, é necessário saber o endereço IP do sistema que roda dentro do contêiner, para isso: 3.1) Abra um outro terminal 3.2) Verifique se o contêiner está rodando com o comando 'docker ps' (a seguir um exemplo de resposta):
3.3) Conecte este novo terminal ao contêiner que foi apelidado de 'test':
3.4) Obtenha o endereço IP do contêiner com o comando
Portanto, neste exemplo, o IP do contêiner é 172.17.0.2. 3.5) Para acessar a interface Web do freepbx, abra o browser e digite http://<IP do contêiner>/admin. Neste exemplo ficou http://172.17.0.2/admin 4) Daqui em diante as configurações devem seguir a interface do freepbx que permite inclusive adicionar idiomas e arquivos de áudio. Obs.: Os arquivos de configuração do Asterisk podem ser consultados em 5) Para encerrar o contêiner, pressional Ctrl+C no terminal que subiu o contêiner 6) Para reiniciar o contêiner que foi criado anteriormente
ATENÇÃO: Após derrubar o contêiner, se for dado novo comando Para aplicações finais (em ambiente de produção), a utilização do banco de dados embutido no contêiner docker do Asterisk não é recomendada pois no caso de perda deste contêiner, as informações do bando de dados também serão perdidas. Para evitar isso, utiliza-se um arquivo de banco de dados externo ao contêiner, além de que uma instalação profissional também deve estar associada a configurações extra de segurança tanto de acesso ao sistema quanto de backup de dados. |
Instalação de um abiente de produção |
---|
A instalação via docker apresentada para testes utiliza banco de dados embutido no container, o que é ruim pois a perda do container acarreta em perda dos dados do banco e também não trata de backup dos dados do banco. Nesta instalação para ambiente de produção, estes problemas são solucionados. Para isso está sendo utilizada a ferramente docker-compose, um orquestrador de contêineres, que concorre, em termos de funcionalidades, com a conhecida ferramenta kubernetes. No docker-compose um arquivo no formato yml descreve os contêineres que deve ser carregados, suas configurações entre outros parâmetros como a configuração de rede a qual os contêineres estão conectados. Para este tutorial será utilizado o exemplo dado por [3] na pasta
Todos os contêineres estão sob o "guarda-chuva" de um proxy reverso provido por uma rede chamada nginx-proxy. Na prática, o proxy reverso é um "guarda-chuva" do lado servidor. O nginx é um servidor web, que neste caso está sendo utilizado como "porta de entrada" para serviços providos por este conjunto de contêineres. Procedimento: 1) Para subir esse conjunto de contêineres exemplo, é necessário baixar o arquivo 2) Crie a rede nginx-proxy:
3) Para carregar o conjunto de contêineres, estando na pasta onde está o arquivo
Ao subir os multiplos contêineres, deve ser possível observar as mensagens de carregamento de serviços nestes diferentes contêineres (freepbx-db, freepbx-db-backup e free-pbx-app) 4) Para verificar se os contêineres estão rodando, em um outro terminal digite:
Deve ser possível ver três contêineres ativos. 4) Para conectar o terminal a um contêiner, por exemplo o freepbx-app, digite:
Obtenha o IP da máquina da aplicação freepbx utilizando a mesma lógica apresentada no ambiente de testes. Para desconectar, digite |