Skip to content

Iota Como instalar uma cópia no linux

Matheus Faria de Alencar edited this page May 9, 2018 · 8 revisions

02 Iota Como instalar uma cópia no linux

Como instalar o Iota localmente

Para instalar o Iota, você precisa basicamente de:

  • uma maquina linux com acesso a internet
  • postgres-9.1 ou superior
  • perl 5.10 ou superior

Os ambientes testados e suportados são ambientes linux, embora seja possivel teoricamente rodar o sistema em Windows (com ActivePerl), isso não é uma garantia.

Todo commit é automaticamente testado no Travis.

Como o sistema ainda esta em desenvolvimento constante, se você fazer uma copia hoje, para atualizar, talvez seja necessário executar scripts para atualizar seu banco de dados. Todos os scripts ficam em /documents porém você precisa saber quais executar e nos momentos certos. Caso você precise disso, pode perguntar como issue.

Instalando no debian 6 | ubuntu | debians like

Como o debian 6 nao tem o postgres 9.1 diretamente, você precisa adicionar no /etc/apt/sources.list

# backports for postgres 9.1
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

Feito isso, execute:

$ apt-get update
# apt-get -t squeeze-backports install postgresql-9.1
# apt-get -t squeeze-backports install postgresql-contrib-9.1
# apt-get -t squeeze-backports install postgresql-contrib postgresql-server-dev-9.1
# apt-get install build-essential
# apt-get install bzip2 gzip less git
# apt-get install nginx
# apt-get install libexpat1
# apt-get install libexpat1-dev libxml2-dev
# apt-get install curl exiv2 

Com tudo isso instalado, você agora precisa configurar o postgres e o nginx. Mas antes, podemos instalar o perl 5 versão 16. O melhor nesse caso, é criar um usuário apenas para a aplicação e instalar um ambiente de modulos perls inteiramente para ele.

# adduser iota-app
# su iota-app

Vamos utilizar o perlbrew para gerenciar as versões do perl na maquina, mais informações aqui.

$ curl -L http://xrl.us/perlbrewinstall | bash
$ echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc
$ . ~/.bashrc
$ perlbrew install-cpanm

No momento, a versão 16.3 é a mais recente. Como eu sei que ela funciona no debian 6, mandei instalar sem os testes. Isso demora uns 20 minutos.

$  perlbrew -n install perl-5.16.3

Se instalou com sucesso, podemos trocar a versão padrão do perl para esse usuário.

$ perlbrew switch perl-5.16.3

Agora temos que instalar os módulos.

Eu gosto de instalar especialmente o modulo DBD::Pg antes, pois ele depende do pg_config funcionando (instalado pelo binario postgresql-server-dev-9.1).

$ cpanm DBD::Pg

depois disso, baixe o código mais recente do Iota.

$ git clone git://github.com/AwareTI/Iota.git

Troque para o branch production pois apenas nele o código é estavel.

$ cd Iota; git checkout production

e agora vamos instalar todas as deps via cpanm.

$ cpanm -n Module::Install Catalyst::Devel Text::CSV JSON::Any MooseX::Types::JSON
$ cpanm -n Catalyst::Plugin::Assets
$ cpanm XML::Simple
$ cpanm -n App::Sqitch
$ cpanm -n DBIx::Class
$ cpanm -n App::installdeps .

As vezes nem todos os módulos instalam de primeira, talvez seja necessário executar novamente o cpanm -n installdeps .. Lembre-se que estão sendo instalados sem testar, pois "confio" que no debian 6 eles estão estaveis. você pode deve remover o -n em outras versões de linux.

Para verificar se tudo foi instalado, você pode executar:

$ perl script/iota_server.pl -dr

isso vai executar o servidor de desenvolvimento do catalyst. A mensagem na tela deve ser:

HTTP::Server::PSGI: Accepting connections at http://0:3000/ ou algum modulo não foi instalado ( e vai aparecer qual é ). Depois disso, você pode parar o processo com ctrl+c para dar um kill.

Agora que temos o projeto e as dependências rodando, precisamos configurar o postgres para aceitar as conexões para podemos criar o banco.

Volte para o usuario root e entre no usuario postgres.

$ exit
# su postgres

Feito isso, crie o banco de dados iota_production pois o mesmo não existe ainda.

$ createdb iota_production

Agora você precisa liberar outros usuarios para entrar no seu banco:

Você precisa editar seu arquivo /etc/postgresql/9.1/main/pg_hba.conf para que ele libere as coneções para o database;

$ vim /etc/postgresql/9.1/main/pg_hba.conf

adicione:

host    iota_production         postgres         127.0.0.1/32          trust

Isso vai liberar o usuario postgres para o banco iota_production para a maquina localhost, e não apenas o usuario peer do postgres.

depois de editar, você precisa recarregar o postgres:

/etc/init.d/postgresql reload;

você tambem deveria personalizar suas configurações de acordo com sua maquina. você pode começar por aqui

Agora você pode sair do usuario postgres e entrar novamente no usuário que você criou para o iota.

$ exit
# su iota-app

vá para a pasta raiz do projeto.

Abra o arquivo sqitch.conf e configure ele até ficar parecido com o abaixo:

[core "pg"]
    # client = psql
    username = postgres
    password = in-postgres-we-trust
    db_name =  iota_production
    host = 127.0.0.1

Depois, execute o arquivo de deploy, para popular o banco com as tabelas e funções.

$ cd Iota
$ sqitch deploy

o nome do banco por padrão é iota_production e o usuario postgres, mas você pode mudar em iota.conf

Sempre que você precisar atualizar o banco, execute sqitch deploy

Feito isso, você já tem um banco de testes populado. Para saber se esta tudo funcionando, execute:

prove -j20 -lvr t/

no final, deve aparecer a mensagem All tests successful.

Servidor Web.

Como pretendemos usar o site online, precisamos configurar o nginx para receber as conexões.

Vamos usar FastCGI para isso. Crie um script para subir o catalyst:

up.sh

#!/bin/bash

source ~/perl5/perlbrew/etc/bashrc

fuser 8000/tcp -k
sleep 2

CATALYST_DEBUG=1 /home/iota-app/Iota/script/iota_fastcgi.pl -l :8000 -n 5 -d 2>/tmp/iota.prod.err 1>/tmp/iota.prod.log

Como podemos ver, escolhi a porta 8000 para subir o FastCGI, você pode escolher outra. o número de workers aí foi 5, você pode escolher mais ou menos.

Para rodar esse script, antes precisamos instalar os modulos de FastCGI para o perl:

$ cpanm FCGI
$ cpanm FCGI::ProcManager

$ chmod +x up.sh
$ ./up.sh

Pronto, volte novamente para o usuário root e entre edite o arquivo de configuração do nginx.

$ cd /etc/nginx/sites-available/
$ vim rnsp

Dentro do arquivo, adicione:

server {
    server_name dominio-da-sua-rede.com.br;

    location /frontend {
    root /home/iota-app/public_html/;
        autoindex    on;
    }

    location /static/user/ {
        alias /home/iota-app/upload/;
    autoindex on;
    }

    location / {
    add_header Pragma "no-cache";
    add_header Cache-control "no-cache, must-revalidate, private, no-store";
    expires -1s;

    fastcgi_pass 127.0.0.1:8000;

    include /etc/nginx/fastcgi_params;
    fastcgi_param   SCRIPT_NAME     /;
    fastcgi_param   PATH_INFO       $fastcgi_script_name;

    }
}

Reload no nginx:

$ /etc/init.d/nginx reload

Frontend / Telas de administração

O projeto com o frontend da administração fica nesse outro github.

Para instalar o frotend, com o usuario root, entre na pasta escolhida:

# cd /home/iota-app
# mkdir public_html
# chown www-data:www-data public_html

Aproveite para criar a pasta de upload de arquivos:

# mkdir upload
# chown www-data:www-data upload

Entre na pasta do public_html e faça o git clone:

# cd public_html
# git clone git://github.com/AwareTI/Iota-Admin-Frontend.git

Depois de fazer o download, mude o nome da pasta Iota-Admin-Frontend para apenas "frontend"

# mv Iota-Admin-Frontend frontend

Agora já sera possivel acessar dominio-da-sua-rede.com.br/frontend/admin/ se você já configurou seu DNS para apontar para o servidor.

Dentro do arquivo iota.conf existe uma configuração chamada private_path, altera para:

private_path "/home/iota-app/upload"

Volte no usuario iota-app e reinicie o FastCGI:

# su iota-app
$ ./up.sh

Um pouco sobre as tabelas do banco

Depois de executar o deploy, você tem a API com um banco vazio, apenas com algumas variaveis básicas cadastradas.

Para acessar, antes é necessário configurar o dominio da rede. Por padrão, existem duas redes junto com o deploy, e a cidade de são paulo.

Conecte no banco e execute alguns comandos:

$ psql -U postgres iota_production

DELETE FROM "user" where network_id > 1;

DELETE FROM "network" where id > 1;

UPDATE "network" SET domain_name='dominio-da-sua-rede.com.br';

Agora você tem apenas uma rede, com o dominio dominio-da-sua-rede.com.br e os usários:

todos com senha 12345

As tabelas principais são:

  • city guarda as cidades do sistema
  • indicator guarda os indicadores do sistema
  • institute guarda as instituições do sistema, que são duas. Cada instituição tem um conjunto próprio de * usuarios para as mesmas cidades.
  • network guarda as redes, que são dominios para agrupar cidades.
  • user guarda os usuarios. todos os tipos.
  • variable guarda as variaveis que sao usadas nos indicadores
  • variable_value guarda os valores de cada variaveis para cada periodo de cada usuario.

Todas as outras tabelas são auxiliares para essas tabelas.