Instalação e sincronização I-Diário Ubuntu 18.04

Instalação I-Diário Ubuntu 18.04

Instalação Postgresql

$ sudo apt update

$ sudo apt upgrade

$ sudo apt install postgresql libpq-dev -y

$ sudo vim /etc/postgresql/9.6/main/pg_hba.conf (vai depender da versão do postgres)

Altere as linhas 90 e 92
“local” is for Unix domain socket connections only

local all all peer

host all all 127.0.0.1/ md5 # Apenas localhost

Para:

“local” is for Unix domain socket connections only
local all all md5 # Altera a forma de envio de senha

IPv4 local connections:

host all all 0.0.0.0/0 md5 # liberar a conexão para qualquer IP

Salve e saia do arquivo.

$ sudo vim /etc/postgresql/9.6/main/postgresql.conf

Criar usuário do banco de dados:

$ sudo -u postgres createuser idiario

Acesse console do postegres:

$ sudo -u postgres psql # Caso precise altere a senha do postgres

alter user postgres with encrypted password ‘sua_senha’;

Mudar a senha do usuário ieducar:

alter user idiario with encrypted password ‘sua_senha’;

Concede permissões ao usuário de criar banco de dados e regras:

alter user idiario with SUPERUSER;

sair do console postgres:

\q

Reiniciar o serviço do banco de dados:

$ sudo service postgresql restart

Instala o Ruby usando o RVM

O RVM é a ferramenta para instalar, gerenciar e trabalhar com vários ambientes Ruby.

$ sudo apt install gnupg2

$ gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

7D2BAF1CF37B13E2069D6956105BD0E739499BDB

$ sudo apt install curl

$ \curl -sSL https://get.rvm.io | bash -s stable

$ source /home/usuario/.rvm/scripts/rvm

$ rvm install “ruby-2.3.7”

Verificar a versão

$ ruby --version

Instalação do i-Diário

Caso o git não esteja instalado use o comando

$sudo apt install git

Baixar o i-Diário:

$ git clone https://github.com/portabilis/i-diario.git

$ cd i-diario

Copiar o exemplo de configurações de banco de dados e configurar:

$ cp config/database.sample.yml config/database.yml

Adicionar um banco de dados no final do arquivo config/database.yml

$ vim config/database.yml

Altere as linhas 5 e 6 adicionando o usuário que foi criado nos passos anteriores:

username:idiario

password:sua_senha

Para o modo Produção, adicione no fim do arquivo o seguinte bloco, caso contrário ignore essa e salve o arquivo :

production:

<<: *default

database: educacao

Apenas para o Modo Produção

Altera as linhas do arquivo /config/enviroments/production.rb

$ /config/enviroments/production.rb

config.serve_static_files = true

config.assets.compile = true

Modo Develop

$ gem install bundler -v ‘1.17.3’

$ vim Gemfile

Insira as seguintes linhas:

na linha 23 - gem ‘dry-inflector’, ‘0.1.2’

na linha 63 gem ‘signet’, ‘0.11.0’

$ bundle install

Modo Produção

Executa os comandos:

$ gem install bundler -v ‘1.17.3’

$ export RAILS_ENV=production

$ vim Gemfile

Insira as seguintes linhas:

na linha 23 - gem ‘dry-inflector’, ‘0.1.2’

na linha 63 gem ‘signet’, ‘0.11.0’

$ bundle install

$ bundle install --deployment --without development test

Criar arquivo config/secrets.yml

$ vim config/secrets.yml

development::

secret_key_base: CHAVE_SECRETA

Para modo Produção

production:

secret_key_base: CHAVE_SECRETA

SMTP_ADDRESS: SMTP_ADDRESS

SMTP_PORT: SMTP_PORT

SMTP_DOMAIN: SMTP_DOMAIN

SMTP_USER_NAME: SMTP_USER_NAME

SMTP_PASSWORD: SMTP_PASSWORD

BUCKET_NAME: S3_BUCKET_NAME

usa o comando para gerar a senha:

$ bundle exec rake secret

Edite o arquivo config/secrets.yml e acione a senha gerada

$ vim config/secrets.yml

production:

secret_key_base: senha gerada

Criar e configurar o arquivo config/aws.yml conforme o exemplo:

$ vim config/aws.yml

development:

access_key_id: AWS_ACCESS_KEY_ID

secret_access_key: AWS_SECRET_ACCESS_KEY

Criar páginas de erro simples:

$ cp public/404.html.sample public/404.html

$ cp public/500.html.sample public/500.html

Para modo Develop rode os comandos do banco de dados :

$ bundle exec rake db:create

$ bundle exec rake db:migrate

Para modo Produção rode os comandos do banco de dados :

$ bundle exec rake db:create

$ bundle exec rake db:migrate

$ bundle exec rake assets:precompile

Configuração da Aplicação

Criar uma entidade:

Com IP local ou público

bundle exec rake entity:setup NAME=prefeitura DOMAIN=192.168.0.50 DATABASE=prefeitura_diario

Com domínio

bundle exec rake entity:setup NAME=prefeitura DOMAIN=prefeitura.com.br DATABASE=prefeitura_diario2

Para a criação de mais de uma entidade, altere os campos Damain e Database.

Criar um usuário administrador:

Abra o rails console.

$ bundle exec rails console

Cole o seguinte bloco:

Entity.last.using_connection {

User.create!(

email: ‘admin@domain.com.br’,

password: ‘123456789’,

password_confirmation: ‘123456789’,

status: ‘active’,

kind: ‘employee’,

admin: true

)

}

Para sair do console digite exit ou Ctrl + C

Para iniciar o sistema:

$ bundle exec rails server -b 0.0.0.0 -p 3000

Para manter o console liberado use:

$ bundle exec rails server -b 0.0.0.0 -p 3000 -d

http://ip_do_servidor:3000

Modo Produção

Após reiniciar o servidor, executar o comando abaixo

$ RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000

$ RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000 -d

http://ip_do_servidor:3000

Configuração e Sincronização

Acesse o sistema e logue com usuário administrador

1 - acesse o menu Configurações -> Entidade

Preencha os dados da entidade e insira a logo do município

2 - Configurações -> Permissões

Crie os níveis de permissões para cada grupo de usuário, definido o que cada grupo pode fazer.

3 - No menu Administrativo -> Configurações gerais

Preencha os dados e o mais importante defina a permissão padrão para servidores, essa permissão foi criada no passo anterior.

Sincronização com i-Educar (no ambiente)

4 - No menu Configurações -> API de Integração

Preencha os dados solicitados, volte para o terminal e gere duas novas chaves secretas, usando o comando bundle exec rake secret, ou usar qualquer outro para gerar as chaves e clique em salvar para finalizar, porém não execute a sincronização, ainda falta as configurações do i-educar e do sidekiq.

5 - Acesse o terminal do I-educar e altere o arquivo .env

Na minha instalação em /var/www/html/ieducar/ adicione as chaves geradas

$ vim /var/www/html/ieducar/.env

API_ACCESS_KEY= sua_chave (Chave de acesso)

API_SECRET_KEY=sua_chave2 (Chave secreta)

Salve o arquivo e pode fechar o terminal

6 - Volte pro terminal do i-diario e rode o comando dentro do diretorio do i-diario.

$ bundle exec sidekiq

A tela abaixo deverá ser apresentada, mostrando o sidekiq rodando.

6 - Volte para a página do i-diario, no menu Configurações -> API de Integração e clique em sincronização completa.

Note que irá começar o processo de sincronização, como mostra a tela abaixo.

volte para o terminal e veja o processo sendo executado.

Tanto a página quanto a terminal não avisam o fim da atualização, espere cerca de 2min e atualize a página de sincronização, o tempo vai depender do tamanho da sua base de dados do i-educar e do hardware do servidor do i-diario, que podem variar com o tempo da sincronização, note que poderá apresenta o status atual da sincronização em porcentagem ou que já foi finalizado.

7 - No menu Configurações -> Unidades

Clique em Sincronizar

As unidades deverão aparecer, marque todas e clique em sincronizar, se tudo ocorreu bem, receberá um alerta de Unidades sincronizadas com sucesso e toda vez que criar uma nova escola, esse procedimento deverá ser refeito.

8 - No menu Calendário letivo, clique em Sincronizar.

Note que irá aparecer os calendário das escolas, marque todos e clique em sincronizar se tudo ocorreu bem, receberá um alerta de Calendários letivos sincronizados com sucesso, e os calendário das escolas saíram da tela e estão configurados.

9 - Volte para menu Configurações -> Unidades

Clique em Sincronização Completa, note que agora o sistema irá demorar um pouco mais para realizar a sincronização.

Sistema sincronizado e pronto para uso, segundo a manual do git,

Nota: Após esses primeiros passos, recomendamos que a sincronização rode pelo menos diariamente para manter o i-Diário atualizado com o i-Educar

Caso fique a formatação aqui no fórum não fique legal, deixe o link para baixar o arquivo em pdf.

Link do arquivo pdf

3 curtidas

Blz FLAVIO… amanha irei tentar seguir seu tutorial pra tentar fazer a instalação em modo de produção. Porque em modo de desenvolvimento ja fiz a instalação com ajuda do video e sua. Falta apenas a parte de sincronização em ainda nao conseguir fazer. Valeu…

Tutorial perfeito!

Eu não estou conseguindo sincronizar via docker. A sincronização recorre ao redis, e em algum lugar está setado o hostname 127.0.0.1 ao invés do criado pelo docker.

Eu não manjo de ruby. Alguem pode me ajudar?

root@7d17faaf6dcb:/app# bundle exec sidekiq


         m,
         `$b
    .ss,  $$:         .,d$
    `$$P,d$P'    .,md$P"'
     ,$$$$$bmmd$$$P^'
   .d$$$$$$$$$$P'
   $$^' `"^$$$'       ____  _     _      _    _
   $:     ,$$:       / ___|(_) __| | ___| | _(_) __ _
   `b     :$$        \___ \| |/ _` |/ _ \ |/ / |/ _` |
          $$:         ___) | | (_| |  __/   <| | (_| |
          $$         |____/|_|\__,_|\___|_|\_\_|\__, |
        .d$$                                       |_|

2021-03-18T14:03:20.305Z 40 TID-a3wfk INFO: Running in ruby 2.3.7p456 (2018-03-28 revision 63024) [x86_64-linux]
2021-03-18T14:03:20.305Z 40 TID-a3wfk INFO: See LICENSE and the LGPL-3.0 for licensing details.
2021-03-18T14:03:20.305Z 40 TID-a3wfk INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2021-03-18T14:03:20.305Z 40 TID-a3wfk INFO: Booting Sidekiq 5.0.3 with redis options {:id=>"Sidekiq-server-PID-40", :url=>nil}
Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)
/box/gems/redis-3.3.5/lib/redis/client.rb:345:in `rescue in establish_connection'
/box/gems/redis-3.3.5/lib/redis/client.rb:330:in `establish_connection'
/box/gems/redis-3.3.5/lib/redis/client.rb:101:in `block in connect'
/box/gems/redis-3.3.5/lib/redis/client.rb:293:in `with_reconnect'
/box/gems/redis-3.3.5/lib/redis/client.rb:100:in `connect'
/box/gems/redis-3.3.5/lib/redis/client.rb:364:in `ensure_connected'
/box/gems/redis-3.3.5/lib/redis/client.rb:221:in `block in process'
/box/gems/redis-3.3.5/lib/redis/client.rb:306:in `logging'
/box/gems/redis-3.3.5/lib/redis/client.rb:220:in `process'
/box/gems/redis-3.3.5/lib/redis/client.rb:120:in `call'
/box/gems/redis-3.3.5/lib/redis.rb:251:in `block in info'
/box/gems/redis-3.3.5/lib/redis.rb:58:in `block in synchronize'
/usr/local/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
/box/gems/redis-3.3.5/lib/redis.rb:58:in `synchronize'
/box/gems/redis-3.3.5/lib/redis.rb:250:in `info'
/box/gems/sidekiq-5.0.3/lib/sidekiq.rb:113:in `block in redis_info'
/box/gems/sidekiq-5.0.3/lib/sidekiq.rb:95:in `block in redis'
/box/gems/connection_pool-2.2.3/lib/connection_pool.rb:63:in `block (2 levels) in with'
/box/gems/connection_pool-2.2.3/lib/connection_pool.rb:62:in `handle_interrupt'
/box/gems/connection_pool-2.2.3/lib/connection_pool.rb:62:in `block in with'
/box/gems/connection_pool-2.2.3/lib/connection_pool.rb:59:in `handle_interrupt'
/box/gems/connection_pool-2.2.3/lib/connection_pool.rb:59:in `with'
/box/gems/sidekiq-5.0.3/lib/sidekiq.rb:92:in `redis'
/box/gems/sidekiq-5.0.3/lib/sidekiq.rb:106:in `redis_info'
/box/gems/sidekiq-5.0.3/lib/sidekiq/cli.rb:81:in `run'
/box/gems/sidekiq-5.0.3/bin/sidekiq:12:in `<top (required)>'
/box/bin/sidekiq:23:in `load'
/box/bin/sidekiq:23:in `<top (required)>'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/cli/exec.rb:74:in `load'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/cli/exec.rb:74:in `kernel_load'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/cli.rb:424:in `exec'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/cli.rb:27:in `dispatch'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/cli.rb:18:in `start'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/exe/bundle:30:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/lib/bundler/friendly_errors.rb:124:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.16.6/exe/bundle:22:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
root@7d17faaf6dcb:/app# 

@tiago.camargo, estou enfrentando o mesmo problema, conseguiria direcionar para onde devemos olhar além do arquivo config/secrets.yml ?

No meu caso está da seguinte forma o secrets.yml

  development:
    secret_key_base: minhaChave
    redis_url: redis://redis-idiario:6379

Tentei assim também:

  development:
    secret_key_base: minhaChave
    redis_url: redis://redis:6379

Meu docker-compose.yml está da seguinte forma:

redis:
    image: redis:4.0-alpine
    container_name: redis-idiario
    ports:
      - 6379

  app:
    build: .
    container_name: idiario
    command: ./script/start
    volumes:
      - .:/app
      - box:/box
    ports:
      - 3000:3000
    depends_on:
      - postgres
      - redis

Obs.: A conexão via telnet do servico app para o serviço redis, funciona perfeitamente.

@enniosousa e @tiago.camargo, consegui resolver fazer o seguinte ajuste:

Criei o arquivo: config/initializers/sidekiq_redis.rb com o conteúdo abaixo:

require 'sidekiq'

Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://redis-idiario:6379/0' }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://redis-idiario:6379/0' }
end

Não sei se é a forma correta, porém funcionou pra mim no ambiente local.

Por algum motivo, no ambiente docker o Sidekiq só tenta conectar localmente, ou seja, 127.0.0.1:6379, mesmo que no arquivo secrets.yml esteja definido corretamente a url de acesso ao Redis.

Uma outra opção que provavelmente funcionaria é adicionar a propriedade da url do redis no arquivo de environments, localizado emconfig/environments/ conforme ambiente de execução, porém não sei como seria composta a chave para o sidekiq conseguir acessar e pegar o valor da URL.

1 curtida

Não vou conseguir acrescentar nada no momento.

Anotei aqui para simular e ver o que consigo descobrir.

Mas achei estranho ele não considerar o secrets.yml.

1 curtida