Skip to content

influunt/influunt

Repository files navigation

#Influnnt

Diagrama de Componentes

Referências

Dependências da Central

Para instar a central é necessário instalar as seguintes dependências:

JDK 1.8

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

MongoDB

https://www.mongodb.com/download-center#community

MySQL

http://dev.mysql.com/downloads/mysql/

Mosquitto

https://mosquitto.org/download/

Activator

https://www.lightbend.com/activator/download

Ambiente de Desenvolvimento

Dependências

Para instalar e executar o projeto no ambiente de desevolvimento, é necessário instalar, além das dependências da central, os seguintes softwares:

NginX

http://nginx.org/en/download.html

Se estiver em uma máquina Linux ou Mac, o NginX também pode ser instalado das seguintes formas:

Linux:

apt-get install nginx    # Ubuntu ou Debian
yum install nginx        # CentOS ou RedHat

Mac (Homebrew):

brew install nginx

NodeJs e Bower

https://nodejs.org/en/download/

Após a instalação do NodeJs, execute o seguinte comando para instalar o Bower:

npm install -g bower

Git

https://git-scm.com/downloads

Instalação

  1. Baixe o projeto utilizando o git:

     git clone git@github.com:influunt/influunt.git
    
  2. Navegue para a pasta da central, e execute o comando activator para baixar as dependências da central:

     cd influunt/influunt-api
     activator
    

Depois de todas as dependências serem baixadas e instaladas, execute o comando exit para sair do activator;

  1. Navegue para a pasta da interface do sistema, e execute os seguintes comandos para baixar as dependências da interface:

     cd ../influunt-app
     npm install
     bower install
    

Configuração

  • Configure o NginX: Abra o arquivo nginx.conf (a localização depende do modo de instalação), e adicione o seguinte conteúdo no final do bloco http. Substitua as ocorrências de <!CAMINHO PARA INFLUUNT-APP!> com o caminho completo para chegar na pasta do influunt-app. Ex: /Users/seunome/influunt/influunt-app

      http{
    
          # ... (outras configurações)
    
          server {
              listen 80;
              charset UTF-8;
              server_name     localhost;
              send_timeout    600;
              gzip             on;
              gzip_comp_level  8;
              gzip_types       text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
              client_max_body_size 100M;
              location /api {
                  try_files $uri @influuntapi;
              }
              location /bower_components {
                  root <!CAMINHO PARA INFLUUNT-APP!>;
              }
              location @influuntapi {
                  proxy_http_version 1.1;
                  proxy_pass  http://localhost:9000;
                  proxy_redirect off;
                  proxy_buffering off;
                  proxy_connect_timeout       600;
                  proxy_send_timeout          600;
                  proxy_read_timeout          600;
                  proxy_set_header        Host               $host;
                  proxy_set_header        X-Real-IP          $remote_addr;
                  proxy_set_header        X-Forwarded-For    $proxy_add_x_forwarded_for;
              }
              location / {
                  root <!CAMINHO PARA INFLUUNT-APP!>/app/;
                  index  index.html;
              }
              location /assets {
                  proxy_pass  http://localhost:9000;
              }
          }
      }
    
  • Configure o MySQL: para configurar o mysql é necessário criar um banco de dados chamado influuntdev. Qualquer programa gerenciador de banco de dados pode ser usado para isso. Pela linha de comando, entre no shell do MySQL e digite o seuginte comando:

      mysql> create database influuntdev;
    

OBS: O ambiente de desenvolvimento espera que o MySQL tenha o usuário root sem senha.

  • Configure o Mosquitto: abra o arquivo mosquitto.conf (a localização do arquivo depende de como o mosquitto foi instalado), e altere as seguintes propriedades:
    • Na seção "Default Listeners" altere as propriedades bind_address, port e protocol

        bind_address 127.0.0.1
        port 1883
        protocol mqtt
      
    • Na seção "Extra Listeners" altere as propriedades listener e protocol

        listener 1884
        protocol websockets
      
    • Na seção "Persistence" altere a propriedade persistence

        persistence false
      

Execução

Execute os seguintes comandos para rodar o projeto:

  • Inicie o MySQL (se ainda não estiver em execução)

  • Inicie o NginX (se ainda não estiver em execução)

  • Inicie o MongoDB. No terminal, o comando é (dependendo da instalação pode ser necessário usar sudo):

      mongod
    
  • Inicie o mosquitto:

      mosquitto -c caminho/para/mosquitto.conf
    
  • Inicie a central:

    1. Navegue para a pasta do projeto, e depois entre na pasta influunt-api

    2. Rode o seguinte comando:

       activator run
      
  • Abra o navegador Chrome e vá para o endereço http://localhost:9000. Irá aparecer na tela uma mensagem dizendo que a database necessita de evolução. Clique no botão Apply this script now! para aplicar as evoluções. Somente na primeira vez em que executar o projeto

  • Aplique o arquivo com os dados iniciais do banco de dados. O arquivo chama-se influunt_seed.sql e fica no root do projeto. Somente na primeira vez em que executar o projeto

      mysql -u root influuntdev < influunt_seed.sql
    
  • Inicie o app web:

    1. Entre na pasta do projeto, e depois entre na pasta influunt-app

    2. Rode o seguinte comando:

       gulp serve
      
  • Coloque no navegador o endereço http://localhost. O Influunt deve abrir e mostrar a tela de login. Para entrar utiliz o login root e a senha 1234.

Ambiente de Produção (único servidor)

Dependências

As dependências do ambiente de produção são as mesmas do ambiente de desenvolvimento. O passo-a-passo abaixo irá mostrar como configurar um servidor linux (CentOS) de produção para rodar a aplicação.

Configurar servidor de produção

O passo-a-passo abaixo se refere a um servidor linux CentOS!

Primeiramente entre no servidor com o usuário root.

Java 8

Baixe o arquivo RPM de instalação do Java em http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html e salve no servidor. Execute o seguinte comando para instalar (substituindo o nome do arquivo pelo o nome do que você baixou):

rpm -ivh jdk-8uxxx-linux-x64.rpm

MySQL

Primeiramente, instale a versão aberta do MySQL:

yum install mariadb-server

Em seguida rode o comando para deixar a instalação segura (todas as opções sugeridas pelo programa são seguras de serem aceitas):

mysql_secure_installation

Entre no MySQL com o usuário root, utilizando a senha cadastrada no comando anterior, e crie um novo banco de dados:

CREATE DATABASE influunt;

Crie um novo usuário para acessar o banco de dados da aplicação, alterando o valor <SENHA> por uma senha da sua preferência:

CREATE USER 'influunt'@'localhost' IDENTIFIED BY '<SENHA>';
GRANT ALL PRIVILEGES ON influunt.* TO 'influunt'@'localhost';

MongoDB

Crie o arquivo /etc/yum.repos.d/mongodb-org-3.4.repo com o seguinte conteúdo:

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

Em seguida, instale o mongoDB:

yum install mongodb-org

Inicie o mongoDB:

mongod

Configure o mongoDB para iniciar automaticamente:

systemctl enable mongod

eMQTT (MQTT Broker)

Para instalar o eMQTT, entre no site e baixe o arquivo .zip de acordo com o servidor: http://emqtt.io/downloads. faça o upload do arquivo para o servidor, e descompacte o arquivo zip.

Entre na pasta descompactada, e altere o seguintes valores no arquivo etc/emq.conf:

Na seção "Node Args", altere as seguintes configurações:

  • node.name = emqttd@<IP_DO_SERVIDOR>

Na seção "MQTT Session", altere as seguintes configurações:

  • mqtt.session.max_inflight = 1000

Na seção "MQTT Listeners", altere as seguintes configurações:

  • mqtt.listener.tcp = 1883
  • mqtt.listener.tcp.max_clients = 4096
  • mqtt.listener.http = 1884

Após alterar as configurações, crie o arquivo etc/emq_auth_http.conf com o seguinte conteúdo (substituindo <IP_DO_SERVIDOR> pelo IP do servidor):

##--------------------------------------------------------------------
## HTTP Auth/ACL Plugin
##--------------------------------------------------------------------

## Variables: %u = username, %c = clientid, %a = ipaddress, %P = password, %t = topic, %A access (2 - publish, 1 - subscribe)

auth.http.auth_req = http://<IP_DO_SERVIDOR>/api/v1/mqtt/auth
auth.http.auth_req.method = post
auth.http.auth_req.params = clientId=%c,username=%u,password=%P

auth.http.super_req = http://<IP_DO_SERVIDOR>:8080/mqtt/superuser
auth.http.super_req.method = post
auth.http.super_req.params = clientid=%c,username=%u

## 'access' parameter: sub = 1, pub = 2
auth.http.acl_req =  http://<IP_DO_SERVIDOR>/api/v1/mqtt/acl
auth.http.acl_req.method = get
auth.http.acl_req.params = username=%u,clientId=%c,topic=%t,password=%P,access=%A

auth.http.acl_nomatch = deny

Rode o eMQTT:

bin/emqttd

Depois que o eMQTT estiver rodando, execute o seguinte comando para habilitar o plugin de autenticação:

bin/emqttd_ctl plugins load emq_auth_http

OBS: Depois de instalado, é necessário alterar o arquivo de configuração dos controladores (no seu computador). Esse arquivo está em influunt/influunt-app/app/resources/controlador.conf. Basta alterar a chave host (endereço) para o endereço onde o eMQTT está instalado.

NginX

Instale o NginX:

yum install nginx

Configure o NginX para servir a aplicação. Abra o arquivo /etc/nginx/nginx.conf e adicione o bloco server abaixo dentro do bloco http:

http {
    # outras configurações...

    server {
        listen 80;
        charset UTF-8;
        server_name     influunt.com.br;
        send_timeout    600;
        gzip             on;
        gzip_comp_level  8;
        gzip_types       text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
        client_max_body_size 100M;
        location /api {
            try_files $uri @influuntapi;
        }
        # the notification server
        location @influuntapi {
            proxy_http_version 1.1;
            proxy_pass  http://localhost:9000;
            proxy_redirect off;
            proxy_buffering off;
            proxy_connect_timeout       600;
            proxy_send_timeout          600;
            proxy_read_timeout          600;
            proxy_set_header        Host               $host;
        }
        location /assets {
            proxy_pass  http://localhost:9000;
        }
        location / {
            root   /app/influunt-app/current;
            index  index.html;
        }
    }

}

Inicie o NginX com o comando

nginx

Usuário para deploy

Crie um novo usuário e desabilite o seu login:

adduser raro
passwd -l raro

Em seguida adicione a sua chave SSH pública no servidor, executando os seguintes comandos (substitua CHAVE_SSH_PUBLICA pela sua chave SSH pública):

su - raro
cd ~
mkdir .ssh
echo CHAVE_SSH_PUBLICA >> .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
exit

Estrutura de pastas do app

Os nomes de pastas utilizados são muito importantes para a configuração do servidor web, não modifique.

Execute os seguintes comandos para criar a estrutura de pastas da central e do app web.

Configuração de pastas da central:

deploy_to=/app/influunt-api
mkdir -p ${deploy_to}
chown raro:raro ${deploy_to}
umask 0002
chmod g+s ${deploy_to}
mkdir ${deploy_to}/{releases,shared}
mkdir ${deploy_to}/shared/{imagens,logs}
chown -R raro ${deploy_to}/{releases,shared}

Configuração de pastas do app web:

deploy_to=/app/influunt-app
mkdir -p ${deploy_to}
chown raro:raro ${deploy_to}
umask 0002
chmod g+s ${deploy_to}
mkdir ${deploy_to}/{releases,shared}
chown raro ${deploy_to}/{releases,shared}

Configuração do app

Crie o arquivo de configuração da central, e altere os valores necessários. Primeiro copie o arquivo influunt/influunt-api/conf/application.conf do seu computador para o servidor, e o coloque na pasta /app/influunt-api/shared/conf. Altere os seguintes valores:

play.evolutions {
  enabled = true
  autoApply = true
  autoApplyDowns = true
}

db {
  default.driver=com.mysql.jdbc.Driver
  default.url="jdbc:mysql://localhost/influunt"
  default.username=influunt
  default.password="SENHA"                # <--- substitua SENHA pela senha escolhida para o usuário influunt no banco de dados

  default.logSql=true
  default.jndiName=DefaultDS
}

playjongo.uri="mongodb://127.0.0.1:27017/influunt"

play.mailer {
    host = smtp.gmail.com                 # <--- Substitua pelo seu host do seu serviço de email
    port = 587
    user = USUARIO_DO_EMAIL               # <--- Substitua pelo seu usuário de email
    password = "SENHA_DO_EMAIL"           # <--- Substitua pela senha do seu usuário de email
    from = "naoresponda@rarolabs.com.br"  # <--- Substitua pelo seu email
    tls = yes
    ssl = no
}

influuntUrl = "ENDERECO SERVIDOR"         # <--- Substitua pelo endereço do servidor ex: http://influunt.com.br

central {
    mqtt {
        host = "SERVIDOR MQTT"            # <--- Substitua esse valor pelo endereço onde o Mosquitto foi instalado.
        port = 1883
        login = ""
        senha = "SENHA DE ACESSO DA CENTRAL" # <--- Coloque uma senha para a central
        acl = {
            device = {
                publish: ["controladores/conn/online", "controladores/conn/offline", "central/transacoes/$USERNAME/+", "central/alarmes_falhas", "central/troca_plano", "central/configuracao", "central/mudanca_status_controlador", "central/info"],
                subscribe: ["controlador/$USERNAME/+"]
            }
            simulador_web = {
                publish: ["simulador/$USERNAME/morreu", "simulador/$USERNAME/proxima_pagina", "simulador/$USERNAME/detector", "simulador/$USERNAME/alternar_modo_manual", "simulador/$USERNAME/trocar_estagio"],
                subscribe: ["simulador/$USERNAME/estado"]
            }
            simulador_api = {
                publish: ["simulador/$USERNAME/estado", "simulador/$USERNAME/morreu"],
                subscribe: ["simulador/$USERNAME/proxima_pagina", "simulador/$USERNAME/detector", "simulador/$USERNAME/alternar_modo_manual", "simulador/$USERNAME/trocar_estagio"]
            }
            app = {
                subscribe: ["app/controlador/+/dados", "app/transacoes/+/status", "app/conn/offline", "app/conn/online", "app/troca_plano", "app/alarmes_falhas", "app/mudanca_status_controlador"],
                publish: ["central/app/transacoes/+"]
            }
        }
    }
}

Após as alterações, adicione os seguintes valores no final do arquivo:

application.mode=PROD
pidfile.path = "/app/influunt-api/shared/influunt.pid"

Ambiente de produção (vários servidores)

É possível configurar o app em vários servidores, para uma melhor performance. Para essa configuração, são necessários pelo menos 5 servidores:

  • 2 servidores para a API (podem ser adicionados mais servidores)
  • 1 servidor para a CENTRAL (a central deve funcionar em somente 1 servidor)
  • 1 servidor de DADOS
  • 1 servidor para servir a aplicação WEB

As dependências são as mesmas do ambiente de produção com somente um servidor, mas com essa configuração os servidores devem ser configurados individualmente.

Configuração

Java 8

O Java 8 deve ser instalado em todos os servidores para a API e no servidor para a CENTRAL. As intruções de instalação são as mesmas do ambiente de produção com somente um servidor.

MySQL

O MySQL deve ser instalado no servidor de DADOS. As intruções de instalação são as mesmas do ambiente de produção com somente um servidor, com uma diferença: devem ser rodados dois comandos a mais:

CREATE USER 'influunt'@'%' IDENTIFIED BY '<SENHA>';
GRANT ALL PRIVILEGES ON influunt.* TO 'influunt'@'&';

Lembrando que o valor <SENHA> deve ser substituído pela mesma senha cadastrada no passo anterior.

MongoDB

O MongoDB deve ser instalado no servidor de DADOS. As intruções de instalação são as mesmas do ambiente de produção com somente um servidor.

eMQTT

O eMQTT deve ser instalado somente no servidor da CENTRAL. As intruções de instalação são as mesmas do ambiente de produção com somente um servidor. A diferença está na configuração do plugin de autenticação.

Ao criar o arquivo de confiugração do plugin, ao invés de substituir o valor <IP_DO_SERVIDOR> pelo IP do servidor onde o eMQTT está instalado, deve ser substituído pelo IP do servidor WEB.

NginX

O MongoDB deve ser instalado no servidor WEB. As intruções de instalação são as mesmas do ambiente de produção com somente um servidor, mas a configuração é diferente.

Abra o arquivo /etc/nginx/nginx.conf e adicione os seguintes blocos server e upstream abaixo dentro do bloco http

http {
    # outras configurações...


    upstream influuntapi {
        server <IP API 1>:9000; # API-01
        server <IP API 2>:9000; # API-02
    }

    server {
        listen 80;
        charset UTF-8;
        server_name     influunt.com.br;
        send_timeout    600;
        gzip             on;
        gzip_comp_level  8;
        gzip_types       text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        client_max_body_size 100M;

        location /assets {
            proxy_http_version 1.1;
            proxy_redirect off;
            proxy_buffering off;
            proxy_connect_timeout       600;
            proxy_send_timeout          600;
            proxy_read_timeout          600;
            proxy_pass  http://influuntapi;
        }

        location /api {
            proxy_http_version 1.1;
            proxy_redirect off;
            proxy_buffering off;
            proxy_connect_timeout       600;
            proxy_send_timeout          600;
            proxy_read_timeout          600;
            proxy_pass  http://influuntapi;
            proxy_set_header Host "IP DESSE SERVIDOR"; # <--- Substitua pelo IP desse servidor (load balancer)
        }

        location / {
            root   /app/influunt-app/current;
            index  index.html;
        }
    }


}

Usuário para deploy

Deve ser criado um usuário para realizar o deploy em cada um dos servidores. As instruções para criar os usuários são as mesmas do ambiente de produção com somente um servidor.

Há uma diferença, porém: atualmente a aplicação está configurada para o deploy em produção com vários servidores usando o usuário "cet" (nas outras instruções foi criado o usuário "raro"). Para não precisar fazer mais alterações, o usuário deve ser criado como "cet".

Estrutura de pasta do app

Execute os seguintes comandos nos servidores para a API:

deploy_to=/app/influunt-api
mkdir -p ${deploy_to}
chown cet:cet ${deploy_to}
umask 0002
chmod g+s ${deploy_to}
mkdir ${deploy_to}/{releases,shared}
mkdir ${deploy_to}/shared/{imagens,logs}
chown -R cet ${deploy_to}/{releases,shared}

Execute os seguintes comandos no servidor para a CENTRAL:

deploy_to=/app/influunt-central
mkdir -p ${deploy_to}
chown cet:cet ${deploy_to}
umask 0002
chmod g+s ${deploy_to}
mkdir ${deploy_to}/{releases,shared}
mkdir ${deploy_to}/shared/{imagens,logs}
chown -R cet ${deploy_to}/{releases,shared}

Execute os seguintes comandos no servidor WEB:

deploy_to=/app/influunt-app
mkdir -p ${deploy_to}
chown cet:cet ${deploy_to}
umask 0002
chmod g+s ${deploy_to}
mkdir ${deploy_to}/{releases,shared}
chown cet ${deploy_to}/{releases,shared}

Configuração do app

Para a configuração do app é necessário configurar a API e a CENTRAL. Para configurar a API, primeiramente copie o arquivo influunt/influunt-api/modules/influunt-api/conf/api.conf do seu computador para os servidores API, e o coloque na pasta /app/influunt-api/shared/conf. Altere os seguintes valores:

play.evolutions {
  enabled = true
  autoApply = true
  autoApplyDowns = true
}

db {
  default.driver=com.mysql.jdbc.Driver
  default.url="jdbc:mysql://IP_SERVIDOR_BD/influunt" # <--- substitua IP_SERVIDOR_BD pelo IP do servidor de banco de dados
  default.username=influunt
  default.password="SENHA"             # <--- substitua SENHA pela senha escolhida para o usuário influunt no banco de dados

  default.logSql=true
  default.jndiName=DefaultDS
}

playjongo.uri="mongodb://IP_SERVIDOR_BD:27017/influunt" # <--- substitua IP_SERVIDOR_BD pelo IP do servidor de banco de dados

play.mailer {
    host = smtp.gmail.com
    port = 587
    user = USUARIO_DO_EMAIL            # <--- Substitua pelo seu usuário no gmail
    password = "SENHA_DO_EMAIL"        # <--- Substitua pela senha do seu usuário no gmail
    from = "naoresponda@rarolabs.com.br"
    tls = yes
    ssl = no
}

influuntUrl = "ENDERECO SERVIDOR"      # <--- Substitua pelo endereço do servidor WEB

central {
    mqtt {
        host = "SERVIDOR MQTT"         # <--- Substitua esse valor pelo endereço onde o EMQTT foi instalado.
        port = 1883
        login = ""
        senha = "<SENHA DE ACESSO DA CENTRAL>" # <--- Coloque uma senha para a central
        acl = {
            device = {
                publish: ["controladores/conn/online", "controladores/conn/offline", "central/transacoes/$USERNAME/+", "central/alarmes_falhas", "central/troca_plano", "central/configuracao", "central/mudanca_status_controlador", "central/info"],
                subscribe: ["controlador/$USERNAME/+"]
            }
            simulador_web = {
                publish: ["simulador/$USERNAME/morreu", "simulador/$USERNAME/proxima_pagina", "simulador/$USERNAME/detector", "simulador/$USERNAME/alternar_modo_manual", "simulador/$USERNAME/trocar_estagio"],
                subscribe: ["simulador/$USERNAME/estado"]
            }
            simulador_api = {
                publish: ["simulador/$USERNAME/estado", "simulador/$USERNAME/morreu"],
                subscribe: ["simulador/$USERNAME/proxima_pagina", "simulador/$USERNAME/detector", "simulador/$USERNAME/alternar_modo_manual", "simulador/$USERNAME/trocar_estagio"]
            }
            app = {
                subscribe: ["app/controlador/+/dados", "app/transacoes/+/status", "app/conn/offline", "app/conn/online", "app/troca_plano", "app/alarmes_falhas", "app/mudanca_status_controlador"],
                publish: ["central/app/transacoes/+"]
            }
        }
    }
}

Após as alterações, adicione os seguintes valores no final do arquivo: application.mode=PROD pidfile.path = "/app/influunt-api/shared/influunt.pid" play.http.router = "api.Routes"

Para configurar a CENTRAL, devem ser seguidos os mesmos passos da API, com as seguintes modificações:

  • o arquivo que deve ser copiado para o servidor é o influunt/influunt-api/modules/influunt-central/conf/central.conf

  • As configurações a serem adicionadas no final do arquivo são:

      application.mode=PROD
      pidfile.path = "/app/influunt-api/shared/influunt.pid"
      play.http.router = "central.Routes"
    

Deploy da aplicação

Para realizar o deploy (atualizar o código no servidor), primeiramente instale o ruby no seu computador (Instruções de Instalação).

Em seguida execute o seguinte comando para instalar a ferramenta de deploy:

gem install capistrano -v 3.5.0

Deploy em ambiente de produção com somente um servidor:

Altere os arquivos (no seu computador) influunt/influunt-api/conf/capistrano/deploy/production.rb e influunt/influunt-app/config/deploy/production.rb, e insira o endereço do servidor de produção no local apropriado de cada arquivo:

server 'xxx.xxx.xxx.xxx', user: 'raro', roles: %w{app db web}

Para executar o deploy, primeiro entre na pasta influunt/influunt-api e execute o comando:

cap production deploy

Em outra janela do terminal, entre na pasta influunt/influunt-app e execute o mesmo comando novamente:

cap production deploy

Se este for o primeiro deploy feito no servidor, é necessário inserir o arquivo de seed no banco de dados. Para isso, faça o upload do arquivo influunt/influunt-api/influunt_seed.sql para o servidor, e execute o arquivo no Mysql:

mysql -u root -p influunt < influunt_seed.sql

Deploy em ambiente de produção com vários servidores

Altere os seguintes arquivos (no seu computador):

influunt/influunt-api/modules/influunt-api/conf/capistrano/deploy/production.rb

  • insira os endereços dos servidores da API, uma linha para cada um:

      server 'xxx.xxx.xxx.xxx', user: 'cet', roles: %w{app db web}
    

influunt/influunt-api/modules/influunt-central/conf/capistrano/deploy/production.rb

  • insira o endereço do servidor da CENTRAL:

      server 'xxx.xxx.xxx.xxx', user: 'cet', roles: %w{app db web}
    

influunt/influunt-app/config/deploy/production.rb

  • insira o endereço do servidor WEB:

      server 'xxx.xxx.xxx.xxx', user: 'cet', roles: %w{app db web}
    

Para executar o deploy em vários servidores, primeiro entre na pasta influunt/influunt-api e execute o comando activator dist.

Em seguida, entre na pasta influunt/influunt-api/modules/influunt-api e execute o comando:

cap production deploy

Em outra janela do terminal, entre na pasta influunt/influunt-api/modules/influunt-central e execute o comando:

cap production deploy

Por último, em outra janela do terminal, entre na pasta influunt/influunt-app e execute o mesmo comando novamente:

cap production deploy

Se este for o primeiro deploy feito no servidor, é necessário inserir o arquivo de seed no banco de dados. Para isso, faça o upload do arquivo influunt/influunt-api/influunt_seed.sql para o servidor DADOS, e execute o arquivo no MySQL:

mysql -u root -p influunt < influunt_seed.sql

72c

O 72c pode ser executado em qualquer sistema operacional que suporte uma máquina virtual java (JVM) standard edition (SE) 1.8 ou superior. Dessa forma, antes de instalar o 72c certifique-se que a JVM está instalada e a versão é compatível:

java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

Se você estiver utilizando uma versão de linux compatível com gerenciador de pacotes do debian ou rpm, você poderá instalar diretamente os binários:

Baixe o pacote binário correspondente à versão do influunt que deseja instalar. Download

No caso do debian, instale o pacote no sistema operacional utilizando o comando dpkg -i:

sudo dpkg -i 72c_linux_1_0.deb

Após a instalação execute o comando baixo para parar a execução do 72c.

sudo /etc/init.d/72c stop

Edite o arquivo de configurações de acordo com sua necessidade:

sudo vim /opt/72c/conf/application.conf`

Execute o 72c em foreground para verificar se sua configuração é válida.

sudo /etc/init.d/72c run

Se o 72c executou com sucesso. Pare o processo com o comando ctrl+c e inicie como um serviço do sistema operacional:

sudo /etc/init.d/72c start

Nesse caso, o 72c será iniciado automaticamente quando o sistema operacional for reinciado.

Protótipo 72c com Raspberry PI + Arduino

Para montar um prótipo de controlador utilizando o Raspberry PI em conjunto com uma placa Arduino siga as seguintes instruções:

Preparando o Arduino
  1. Monte seu protótipo de acordo com esse schema
  2. Instale o Arduino IDE
  3. Abra o projeto influunt.ino no Arduino IDE. O projeto encontra-se na pasta /influunt-arduino
  4. Conecte o ardunino com o cabo USB e faça o upload do arquivo binário.
Preparando o Raspberry PI
  1. Instale o raspbian no cartão de memória
  2. Configure o acesso a internet
Conectando o PI + Arduino
  1. Conecte a porta USB do PI no Arduino
  2. Verifique qual porta serial foi criada no sistema operacional (ls /dev/tty*)
  3. Instale o 72c conforme orientação anterior. Utilize o pacote .deb
  4. No arquivo de configuração do arquivo configure a porta serial com o valor obtido no item 2 e o baud rate para 9600.
  5. Inicie o 72c

##Status

Master

Build Status Codacy Badge Codacy Badge

Staging

Build Status Codacy Badge Codacy Badge

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 12