From 746b826810aeb124088bc7a978bf63b6d30fd1ad Mon Sep 17 00:00:00 2001 From: Gustavo274 <51173319+Gustavo274@users.noreply.github.com> Date: Mon, 16 May 2022 10:47:46 -0300 Subject: [PATCH] Solr atualizado para 8.11 distribuicao docker (#3555) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mudando docker/docker-compose.yml para dist/docker-compose.yml Alteração no readme sobre a atualização do solr no docker Mudança do caminho do solr no arquivo solr.rst --- README.rst | 11 ++++++ dist/bin/upload_configset.sh | 12 +++++++ {docker => dist}/docker-compose.yml | 53 ++++++++++++++++++++++++----- dist/solr_cloud/security.json | 13 +++++++ docs/solr.rst | 2 +- release.sh | 6 ++-- 6 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 dist/bin/upload_configset.sh rename {docker => dist}/docker-compose.yml (55%) create mode 100644 dist/solr_cloud/security.json diff --git a/README.rst b/README.rst index 816ad3958..05126c29b 100644 --- a/README.rst +++ b/README.rst @@ -6,6 +6,17 @@ SAPL - Sistema de Apoio ao Processo Legislativo *********************************************** +**UPDATE! [16/05/2022]: Devido a refatorações recentes no Solr, foi necessårio +adaptar o uso deste pelo SAPL. Para isso foram feitas mudanças no docker-compose.yml +como a adição de um container para o ZooKeeper e upload de arquivo de segurança. +Recomendamos fortemente que para a versão 3.1.62 e superior do SAPL seja feito o backup do +Banco de Dados, limpeza dos containers no host (`sudo docker system prune -a -f --volumes`), +e consequente instalação dos novos containers a partir da execução do docker-compose. É +importante frisar que o comando `docker system prune` irá apagar TODOS os containers E +TODOS os volumes (incluindo o BD) do host. Após o inicio dos novos containers, proceda +com a restauração do BD, pare os containers e reinicie novamente para indexação textual. +Além disso, o docker-compose.yml foi movido para a pasta dist/ na raiz do projeto.** + Esta página reúne informações úteis sobre o desenvolvimento atual do SAPL. Isso significa que toda a informação aqui apresentada aplica-se apenas para a versão 3.1 e superior. diff --git a/dist/bin/upload_configset.sh b/dist/bin/upload_configset.sh new file mode 100644 index 000000000..68559c56e --- /dev/null +++ b/dist/bin/upload_configset.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +SOLR_USER=solr +SOLR_PASSWORD=SolrRocks +SOLR_HOST=localhost +SOLR_PORT=8983 + +CONFIGSET_NAME=sapl_configset +CONFIGSET_FILE=sapl_configset.zip + +export SOLR_URL="http://$SOLR_USER:$SOLR_PASSWORD@$SOLR_HOST:$SOLR_PORT/solr/admin/configs?action=UPLOAD&name=$CONFIGSET_NAME&wt=json" +curl -X POST -L -F "file=@$CONFIGSET_FILE;type=application/zip" $SOLR_URL diff --git a/docker/docker-compose.yml b/dist/docker-compose.yml similarity index 55% rename from docker/docker-compose.yml rename to dist/docker-compose.yml index c45e463b8..b6907c87a 100644 --- a/docker/docker-compose.yml +++ b/dist/docker-compose.yml @@ -17,20 +17,30 @@ services: - "5433:5432" networks: - sapl-net - saplsolr: - image: solr:8.9 - restart: always - command: bin/solr start -c -f + solr1: + image: solr:8.11 + restart: unless-stopped + command: bash -c "docker-entrypoint.sh solr zk cp file:/var/security.json zk:security.json && exec solr-foreground" container_name: solr labels: NAME: "solr" - volumes: - - solr_data:/opt/solr/server/solr - - solr_configsets:/opt/solr/server/solr/configsets ports: - "8983:8983" + environment: + - ZK_HOST=zoo1:2181 + - SOLR_HEAP=1g + - SOLR_OPTS=-Djute.maxbuffer=50000000 networks: - sapl-net + depends_on: + - zoo1 + volumes: + - type: bind + source: ./solr_cloud/security.json + target: /var/security.json + - solr_data:/opt/solr/server/solr + - solr_configsets:/opt/solr/server/solr/configsets + sapl: image: interlegis/sapl:3.1.162 # build: @@ -52,18 +62,40 @@ services: EMAIL_HOST_PASSWORD: senhasmtp USE_SOLR: 'True' SOLR_COLLECTION: sapl - SOLR_URL: http://saplsolr:8983 + SOLR_URL: http://solr:SolrRocks@solr1:8983 TZ: America/Sao_Paulo volumes: - sapl_data:/var/interlegis/sapl/data - sapl_media:/var/interlegis/sapl/media depends_on: - sapldb - - saplsolr + - solr1 ports: - "80:80" networks: - sapl-net + zoo1: + image: zookeeper:3.8 + container_name: zoo1 + hostname: zoo1 + restart: unless-stopped + ports: + - 2181:2181 + - 7001:7000 + environment: + ZOO_MY_ID: 1 + ZOOKEEPER_TICK_TIME: 2000 + ZOOKEEPER_CLIENT_PORT: 2181 + JVMFLAGS: "-Xmx1024m -Djute.maxbuffer=50000000" + ZOO_SERVERS: server.1=zoo1:2888:3888;2181 + ZOO_LOG4J_PROP: "INFO,ROLLINGFILE" + ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok + ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true" + volumes: + - zoo_data:/data + - zoo_log:/datalog + networks: + - sapl-net networks: sapl-net: name: sapl-net @@ -73,4 +105,7 @@ volumes: sapl_data: sapl_media: solr_data: + solr_home: solr_configsets: + zoo_data: + zoo_log: diff --git a/dist/solr_cloud/security.json b/dist/solr_cloud/security.json new file mode 100644 index 000000000..e0b8697dd --- /dev/null +++ b/dist/solr_cloud/security.json @@ -0,0 +1,13 @@ +{ +"authentication":{ + "blockUnknown": true, + "class":"solr.BasicAuthPlugin", + "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, + "forwardCredentials": false, + "realm": "Solr Login" +}, +"authorization":{ + "class":"solr.RuleBasedAuthorizationPlugin", + "permissions":[{"name":"security-edit", "role":"admin"}], + "user-role":{"solr":"admin"} +}} diff --git a/docs/solr.rst b/docs/solr.rst index 13bdbf02c..159b4211d 100644 --- a/docs/solr.rst +++ b/docs/solr.rst @@ -7,7 +7,7 @@ Instruções para instalar o Solr Solr é uma plataforma open source de indexação e busca textual utilizada pelo SAPL 3.1 para indexar documentos (normas jurídicas, matérias legislativas e documentos acessórios). Observação: Se a execução do SAPL for mediante containers Docker então use o arquivo *docker-compose.yml* disponível em -*https://github.com/interlegis/sapl/blob/3.1.x/solr/docker-compose.yml* (verifique os mapeamentos de volume estão corretos, a verso do SAPL referenciada no arquivo docker-compose.yml, e realize o backup de seu BD **antes** de qualquer tentativa de substituição do arquivo *docker-compose.yml* em uso corrente); +*https://github.com/interlegis/sapl/blob/3.1.x/dist/docker-compose.yml* (verifique os mapeamentos de volume estão corretos, a verso do SAPL referenciada no arquivo docker-compose.yml, e realize o backup de seu BD **antes** de qualquer tentativa de substituição do arquivo *docker-compose.yml* em uso corrente); 1) Faça o download da distribuição *binária* do Apache Solr do site oficial do projeto **http://lucene.apache.org/solr** diff --git a/release.sh b/release.sh index f22d2b19b..44d7c4787 100755 --- a/release.sh +++ b/release.sh @@ -30,11 +30,11 @@ FINAL_VERSION= function change_files { - OLD_VERSION=$(grep -E 'interlegis/sapl:'$VERSION_PATTERN docker/docker-compose.yml | cut -d':' -f3) + OLD_VERSION=$(grep -E 'interlegis/sapl:'$VERSION_PATTERN dist/docker-compose.yml | cut -d':' -f3) echo "Atualizando de "$OLD_VERSION" para "$FINAL_VERSION - sed -E -i "s|$OLD_VERSION|$FINAL_VERSION|g" docker/docker-compose.yml + sed -E -i "s|$OLD_VERSION|$FINAL_VERSION|g" dist/docker-compose.yml sed -E -i "s|$OLD_VERSION|$FINAL_VERSION|g" setup.py @@ -65,7 +65,7 @@ function set_rc_version { function commit_and_push { echo "committing..." - git add docker/docker-compose.yml setup.py sapl/settings.py sapl/templates/base.html + git add dist/docker-compose.yml setup.py sapl/settings.py sapl/templates/base.html git commit -m "Release: $FINAL_VERSION" git tag $FINAL_VERSION