-
Notifications
You must be signed in to change notification settings - Fork 7
Iota Como instalar uma cópia no linux
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.
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.
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
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
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.