FreePBX inicializando no boot do CentOS 7



Neste laboratório usa-se um server com as seguintes configurações:

  • CentOS 7.4
  • Asterisk 13
  • FreePBX 14
O procedimento a seguir irá auxiliar em um problema comum na instalação não só do asterisk puro, mas também do freepbx com o mesmo.

Ao tentar acessar o CLI do asterisk, nos deparamos com a seguinte mensagem abaixo:

Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?

No português: Não é possível conectar-se ao asterisk remoto (o /var/run/asterisk/asterisk.ctl existe?)


Isso ocorre por vários motivos, o usuário não tem permissão de gravação para este arquivo, o arquivo asterisk.ctl não existe porque o asterisk não está em execução, entre outras.

Na documentação do Asterisk já existe algumas instruções sobre o assunto, porém no nosso caso, nao resolveu, mas vale apenas conferir!

Na comunidade FreePBX o caminho é o mesmo, permissões nada muito diferente das pesquisa feitas com asterisk, no nosso caso, além deste problema, temos um segundo, o freepbx não sobe no boot, em paralelo afeta diretamente o acesso ao CLI do asterisk, podem observar que não temos aqui um problema de permissão.

Vamos checar se o serviço do FreePBX está habilitado no systemd do sistema, usando o systemctl que gerencia o mesmo.
[root@freepbx]#  systemctl status -l freepbx.service
freepbx.service - IPBX
Loaded: loaded (/usr/lib/systemd/system/freepbx.service; static; vendor preset: disabled)
Active: active (exited) since Tue 2018-04-24 16:28:28 -03; 17h ago
Process: 1342 ExecStart=/usr/sbin/fwconsole start (code=exited, status=0/SUCCESS)
Main PID: 1342 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/freepbx.service
      ├─1521 /bin/sh /usr/sbin/safe_asterisk -U asterisk -G asterisk
      ├─1525 /usr/sbin/asterisk -f -U asterisk -G asterisk -vvvg -c
      ├─1604 PM2 v2.10.1: God Daemon (/home/asterisk/.pm2)
      └─3099 node /var/www/html/admin/modules/ucp/node/index.js

freepbx runuser[1662]: pam_unix(runuser:session): session closed for user asterisk
freepbx runuser[1681]: pam_unix(runuser:session): session opened for user asterisk by (uid=0)
freepbx fwconsole[1342]: [>---------------------------] < 1 sec
freepbx runuser[1691]: pam_unix(runuser:session): session opened for user asterisk by (uid=0)
freepbx runuser[1701]: pam_unix(runuser:session): session opened for user asterisk by (uid=0)
freepbx runuser[1701]: pam_unix(runuser:session): session closed for user asterisk
freepbx fwconsole[1342]: Started UCP Node Server. PID is 1654
freepbx fwconsole[1342]: Running Asterisk post from Xmpp module
freepbx fwconsole[1342]: MongoDB is not running. Please start it before starting XMPP
freepbx systemd[1]: Started IPBX.


Observe acima que na linha: Loaded: loaded (/usr/lib/systemd/system/freepbx.service; static; vendor preset: disabled)

Em destaque o STATIC, informa que o serviço não está no boot do sistema.

Entre no diretorio que está o seu script freepbx.service no meu caso está no caminho abaixo.
[root@freepbx]#  cd /etc/systemd/system/

Vamos mover o arquivo para o caminho correto do boot no CentOS7
[root@freepbx]# mv freepbx.service  /usr/lib/systemd/system/
Agora vamos dar um reload no systemctl para que ele recarregue já reconhecendo o novo arquivo que inserimos.
[root@freepbx]# systemctl daemon-reload
Vamos rodar o comando abaixo para que ele crie o link simbólico e fique ativo no boot.
[root@freepbx]# systemctl enable —now freepbx.service
Vamos parar o serviço e dar um start no mesmo.
[root@freepbx]# systemctl stop freepbx.service
[root@freepbx]# systemctl start freepbx.service
Rode novamente o comando para checar o status do serviço.
[root@freepbx]# systemctl status -l freepbx.service
freepbx.service - IPBX
Loaded: loaded (/usr/lib/systemd/system/freepbx.service; enabled; vendor preset: disabled)
Active: active (exited) since Tue 2018-04-24 16:28:28 -03; 17h ago
Process: 1342 ExecStart=/usr/sbin/fwconsole start (code=exited, status=0/SUCCESS)
Main PID: 1342 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/freepbx.service
      ├─1521 /bin/sh /usr/sbin/safe_asterisk -U asterisk -G asterisk
      ├─1525 /usr/sbin/asterisk -f -U asterisk -G asterisk -vvvg -c
      ├─1604 PM2 v2.10.1: God Daemon (/home/asterisk/.pm2)
      └─3099 node /var/www/html/admin/modules/ucp/node/index.js

freepbx runuser[1662]: pam_unix(runuser:session): session closed for user asterisk
freepbx runuser[1681]: pam_unix(runuser:session): session opened for user asterisk by (uid=0)
freepbx fwconsole[1342]: [>---------------------------] < 1 sec
freepbx runuser[1691]: pam_unix(runuser:session): session opened for user asterisk by (uid=0)
freepbx runuser[1701]: pam_unix(runuser:session): session opened for user asterisk by (uid=0)
freepbx runuser[1701]: pam_unix(runuser:session): session closed for user asterisk
freepbx fwconsole[1342]: Started UCP Node Server. PID is 1654
freepbx fwconsole[1342]: Running Asterisk post from Xmpp module
freepbx fwconsole[1342]: MongoDB is not running. Please start it before starting XMPP
freepbx systemd[1]: Started IPBX.
Agora na linha: Loaded: loaded (/usr/lib/systemd/system/freepbx.service; enabled; vendor preset: disabled)

Em destaque o Enabled, agora sim o serviço está ativo no boot do sistema.

Nota: No normal não tem a necessidade de um reboot, mas se for o caso execute-o, se mesmo assim não funcionar verifique se o seu script freepbx.service está correto, pode validar executando o comando abaixo.
[root@freepbx]# journalctl -u freepbx.service
Não deve apresentar erros, se apresentar.
Desta forma o freePBX já está no boot do sistema e consegue acessar o CLI do asterisk normalmente.

Refêrencias:

Participe das nossas comunidades no telegram:
Todos de forma direta ou indireta estão sempre contribuindo no desenvolvimento de conteúdos como esse, com foco de ajudar a comunidade.