Skip to content

Latest commit

 

History

History
354 lines (196 loc) · 13.1 KB

instalacao31.rst

File metadata and controls

354 lines (196 loc) · 13.1 KB

Instalação do Ambiente de Desenvolvimento

Opção desenvolver utilizando docker-composer:

docker-compose -f ./docker-compose.dev.yml up --build

Opção desenvolver utilizando máquina local

  • Procedimento testado nos seguintes SO's:
  • Para esta instalação foi utilizado o usuário de sistema sapl31

Atualizar o sistema::

sudo apt-get update

sudo apt-get upgrade

Instalar as seguintes dependências do sistema::

sudo apt-get install git python3-dev libpq-dev graphviz-dev graphviz \
pkg-config postgresql postgresql-contrib pgadmin3 python-psycopg2 \
software-properties-common build-essential libxml2-dev libjpeg-dev \
libmysqlclient-dev libssl-dev libffi-dev libxslt1-dev python3-setuptools \
python3-pip poppler-utils antiword default-jre python3-venv

Instalar o virtualenv usando python 3 para o projeto.

  • Para usar virtualenvwrapper, instale com:

    sudo pip3 install virtualenvwrapper
    
    sudo mkdir -p /var/interlegis/.virtualenvs
  • Ajustar as permissões:

    sudo chown -R $USER:$USER /var/interlegis/
  • Edite o arquivo .bashrc e adicione ao seu final as configurações abaixo para o virtualenvwrapper:

    nano /home/$USER/.bashrc
    
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export WORKON_HOME=/var/interlegis/.virtualenvs
    export PROJECT_HOME=/var/interlegis
    source /usr/local/bin/virtualenvwrapper.sh
  • Carregue as configurações do virtualenvwrapper:

    source /home/$USER/.bashrc

Clonar o projeto do github, ou fazer um fork e depois clonar

  • Para apenas clonar do repositório do Interlegis:

    cd /var/interlegis
    
    git clone -b 3.1.x --single-branch git://github.com/interlegis/sapl
    
    O comando acima irá clonar a última versão estável do SAPL (3.1.x)
    Para clonar todo o repositório utilize o comando abaixo:
    
    git clone git://github.com/interlegis/sapl
  • Para fazer um fork e depois clonar, siga as instruções em https://help.github.com/articles/fork-a-repo que basicamente são:

    Será criado um domínio pelo qual será possível clonar, corrigir, customizar, melhorar, contribuir, etc:

    cd /var/interlegis
    git clone git://github.com/[SEU NOME]/sapl
  • As configurações e instruções de uso para o git estão espalhadas pela internet e possui muito coisa bacana. As tarefas básicas de git e suas interações com github são tranquilas de se aprender.

Criar o ambiente virtual de desenvolvimento para o SAPL

mkvirtualenv -a /var/interlegis/sapl -p python3 -r requirements/requirements.txt sapl

Instalação e configuração das dependências do projeto

  • Acesse o terminal e entre no virtualenv:

    workon sapl
  • Instalar dependências python:

    pip install -r /var/interlegis/sapl/requirements/dev-requirements.txt
  • Configurar Postgresql:

    sudo -u postgres psql -c "CREATE ROLE sapl LOGIN ENCRYPTED PASSWORD 'sapl' NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION;"
    
    sudo -u postgres psql -c "ALTER ROLE sapl VALID UNTIL 'infinity';"
    
    sudo -u postgres psql -c "CREATE DATABASE sapl WITH OWNER = sapl ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'pt_BR.UTF-8' LC_CTYPE = 'pt_BR.UTF-8' CONNECTION LIMIT = -1 TEMPLATE template0;"
    • Obs: no ambiente de desenvolvimento, a role deve ter permissão para criar outro banco. Isso é usado pelos testes automatizados.
    • (caso você já possua uma instalação do postrgresql anterior ao processo de instalação do ambiente de desenvolvimento do SAPL em sua máquina e sábia como fazer, esteja livre para proceder como desejar, porém, ao configurar o arquivo .env no próximo passo, as mesmas definições deverão ser usadas)
  • Ajustar as permissões - onde $USER trocar por usuário:

    eval $(echo "sudo chown -R $USER:$USER /var/interlegis/")
  • Configurar arquivo .env:

Criação da SECRET_KEY:

  • Criar o arquivo ``.env`` dentro da pasta /var/interlegis/sapl/sapl/.env:

    nano /var/interlegis/sapl/sapl/.env
    
      DATABASE_URL = postgresql://USER:PASSWORD@HOST:PORT/NAME
      SECRET_KEY = Gere alguma chave e coloque aqui
      DEBUG = [True/False]
      EMAIL_USE_TLS = [True/False]
      EMAIL_PORT = [Insira este parâmetro]
      EMAIL_HOST = [Insira este parâmetro]
      EMAIL_HOST_USER = [Insira este parâmetro]
      EMAIL_SEND_USER = [Insira este parâmetro]
      EMAIL_HOST_PASSWORD = [Insira este parâmetro]
      DEFAULT_FROM_EMAIL = [Insira este parâmetro]
      SERVER_EMAIL = [Insira este parâmetro]
    
      SOLR_URL = '[Insira este parâmetro]'
      USE_SOLR = '[Insira este parâmetro]'
      SOLR_COLLECTION = '[Insira este parâmetro]'
    
      FRONTEND_CUSTOM = [True/False]
    
      USE_CHANNEL_LAYERS = True
      HOST_CHANNEL_LAYERS: localhost
      PORT_CHANNEL_LAYERS: 6379
    
      SITE_URL = '[Insira este parâmetro]'
    
      TZ = 'America/Sao_Paulo'
    
    * Uma configuração mínima para atender os procedimentos acima seria::
    
        DATABASE_URL = postgresql://sapl:sapl@localhost:5432/sapl
        SECRET_KEY = 'cole aqui entre as aspas simples a chave gerada pelo comando abaixo'
        DEBUG = True

Rodar o comando abaixo, um detalhe importante, esse comando só funciona com o django extensions, mas ele já está presente no arquivo requirements/requirements.txt desse projeto:

python manage.py generate_secret_key

Copie a chave que aparecerá, edite o arquivo .env e altere o valor do parâmetro SECRET_KEY.

  • Posicionar-se no diretorio do Projeto:

    cd /var/interlegis/sapl
  • Atualizar e/ou criar as tabelas da base de dados para refletir o modelo da versão clonada:

    ./manage.py migrate
  • Subir o servidor do django:

    ./manage.py runserver 0.0.0.0:8001
  • Acesse o SAPL em:

    http://localhost:8001/

Instruções para criação do super usuário e de usuários de testes

  • Criar super usuário do django-contrib-admin (Será solicitado alguns dados para criação):

    python3 manage.py createsuperuser
  • Os perfis semânticos do SAPL são fixos e atualizados a cada execução do comando:

    ./manage.py migrate
  • Os perfis fixos não aceitam customização via admin, porém outros grupos podem ser criados. O SAPL não interferirá no conjunto de permissões definidas em grupos customizados e se comportará diante de usuários segundo seus grupos e suas permissões.
  • Para criar os usuários de teste, deve-se seguir os seguintes passos:

    ./manage.py shell_plus
    from sapl.rules.apps import cria_usuarios_padrao
    cria_usuarios_padrao()
  • Todos com senha "interlegis", serão:

    operador_administrativo
    operador_protocoloadm
    operador_comissoes
    operador_materia
    operador_norma
    operador_sessao
    operador_painel
    operador_geral

Sapl-Frontend

  • O Sapl foi separado em outro projeto, o SAPL Frontend que está aqui no github, no repositório do Interlegis. Veja Aqui: https://github.com/interlegis/sapl-frontend:
  • Se seu objetivo é preparar o ambiente de desenvolvimento para colaborar no backend, você não precisa se preocupar com o tutorial abaixo pois na pasta https://github.com/interlegis/sapl/tree/3.1.x/sapl/static já está o código oficial de produção exportado pelo projeto do Sapl-Frontend
  • Para colaborar com o Sapl-Frontend ou fazer seu próprio frontend a partir do oficial, siga os passos abaixo:

Preparação do ambiente:: ----------------------

  • Instalação do NodeJs LTS 10.15.x:

    sudo apt-get install curl
    curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
    sudo apt-get install -y nodejs
  • Instalação do Yarn:

    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    sudo apt-get update && sudo apt-get install yarn
  • Instalação do Vue-Cli:

    yarn global add @vue/cli

Ligando os projetos SAPL e Sapl-Frontend para implementação no Sapl-Frontend

É fundamental que o Sapl-Frontend esteja na mesma pasta que o Sapl

  • Como orientado acima, o Sapl foi clonado na pasta /var/interlegis. O mesmo deve ser feito com o sapl-frontend, ficando assim:

    /var/interlegis/sapl
    /var/interlegis/sapl-frontend
  • para tal, execute:

    cd /var/interlegis    
    git clone git://github.com/interlegis/sapl-frontend

Você pode também criar um Fork do sapl-frontend

Feito isso, e você ativando a variável de ambiente FRONTEND_CUSTOM=True (vide acima criação do .env), o Sapl (backend) desativa a pasta static no seu ambiente de desenvolvimento e no seu ambiente de produção e passa a valer para o Sapl (backend) o que você customizar em sapl-frontend. Resumindo:

  • Se você está criando um fork do sapl-frontend para ter o sapl com sua cara, ou criando funcionalidades de seu interesse:

    FRONTEND_CUSTOM=True

  • Se você está colaborando com a evolução oficial do sapl-frontend e enviará seu código para o repositório oficial através de um PR e, por consequência, gerará novos versão de produção a ser colocada na pasta static, então:

    FRONTEND_CUSTOM=False

Deste ponto em diante, é exigido o conhecimento que você pode adquirir em https://cli.vuejs.org/guide/ e em https://vuejs.org/v2/guide/ para colaborar com sapl-frontend

Sobre a pasta static

Após a separação do sapl em sapl e sapl-frontend, o conteúdo da pasta sapl/static/sapl/frontend é compilado e minificado. É gerado pelo build do sapl-frontend e não deve-se tentar customizar ou criar elementos manipulando diretamente informações na pasta sapl/static/sapl/frontend.

Para aplicar css e javascript sem sapl-frontend:

  1. Não altere diretamente o conteúdo da pasta sapl/static/sapl/frontend. Isso deve ser feito no projeto sapl-frontend. Você perderá qualquer manipulação dentro desta pasta.
  2. Caso venha a criar algum código css/js diretamente no django, crie seus arquivos na pasta sapl/static/sapl.
  3. Não crie nenhum novo conteúdo na pasta sapl/static. Projetos Django podem ser usados como app de outro projeto. É o que ocorre com o Sapl, que é usado como uma app em outros projetos. Qualquer conteúdo colocado dentro sapl/static e não em sapl/static/sapl, pode estar causando erro no uso do Sapl como app em outro projeto.

Django-Channels

Para ativar Django-Channels e a comunicação via websockets utilizada pelo entry-point sessao/online de sapl-frontend coloque no arquivo .env a variável:

USE_CHANNEL_LAYERS = True HOST_CHANNEL_LAYERS: localhost PORT_CHANNEL_LAYERS: 6379

Ao ativar o channels, no ambiente de desenvolvimento é necessário ativar um servidor redis. Utilize/Instale o docker e execute:

sudo docker run -p 6379:6379 -d redis:5.0.3-stretch

No caso de ambiente de produção, o container do docker sapl para produção já está configurado com redis.

Testes do channels

Existe uma interface mínima de comunicação para testes dentro do sapl. Pode ser acessada utilizando:

http://localhost:8001/sapl/time-refresh/

Se clicar em pull, o websocket de teste deve responder:

{"message": "OK"}

De outro modo, ficando com esta interface aberta, abra outra janela e altere/inclua/apague algo em seu sapl. Será enviado um json que segue este padrão:

{"message": {"action": "post_save", "id": 16923, "app": "materia", "model": "autoria"}}

O papel de /sapl/time-refresh/ é apenas isto, informar que houve ação no registro id, da app e model. Além de action que pode ser post_save ou pre-delete.