Os arquivos disponíveis para instalação do SEI são os seguintes:
SEI-Fontes-<VERSÃO>.zip
SEI-BD-MySQL-<VERSÃO>.zip
SEI-BD-SqlServer-<VERSÃO>.zip
SEI-BD-Oracle-<VERSÃO>.zip
SEI-Novidades-<VERSÃO>.pdf
SEI-Instalacao-<VERSÃO>.pdf
SEI-Atualizacao-<VERSÃO>.pdf
SEI-Web-Services-<VERSÃO>.pdf
SEI-Publicacao-<VERSÃO>.pdf
SEI-Digitalizacao-Maio-2012.pdf
SEI-Arquitetura-Março-2015.pdf
Eles serão necessários ao longo da instalação do SEI e deverão ser copiados para os respectivos servidores conforme for necessário sua utilização.
Outra dica importante é sempre certificar que o repositório do gerenciador de pacotes do OS esteja atualizado.
# yum -y update
4.1 MySQL Server (versão 5.*)
4.1.1 Instalar o gerenciador de banco de dados MySQL 5.*
# yum install mysql-server-5.*
4.1.2 Configure o Mysql para permite acesso remoto
Editar o arquivo de configuração do MySql localizado em /etc/my.cnf e adicionar a linha abaixo na sessão [mysqld]
# vi /etc/my.cnf
e adicionar/alterar o parâmetro conforme descrito na linha abaixo na sessão [mysqld].
bind-address=<IP_LOCAL_SERVIDOR_BD: 192.168.10.40>
4.1.3 Inicialização do banco de dados MySQL
# /usr/bin/mysql_install_db
4.1.4 Configurar a inicialização automática do serviço
# chkconfig --add mysqld # chkconfig mysqld on # service mysqld start
4.1.5 Validar instalação do MySQL
Verifique se o MySQL foi corretamente instalado e encontra-se em execução analisando a saída do comando abaixo.
# netstat -tln | grep 3306
Resultado esperado:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
Obs: Revise as regras de firewall aplicadas neste servidor (iptables, pfsense, etc.)
4.1.6 Restauração do Banco de Dados
As bases do SEI e do SIP estão disponíveis em 3 formatos: MySQL Enterprise Edition 5.5 (SEIBD-MySQL-v2.6.0.zip), Microsoft SQL Server 2008 (SEI-BD-SqlServer-v2.6.0.zip) e Oracle 11g(SEI-BD-Oracle-v2.6.0.zip).
Para os órgãos do Poder Executivo, existe uma base de dados pré-configurada, reduzindo consideravelmente todo o trabalho de implantação e parametrização do sistema para esses órgãos. Para maiores detalhes sobre essa instância do banco de dados, acesse o link Base de Dados para Poder Executivo
O formato utilizado nessa documentação será o MySQL, conforme discutido anteriormente.
4.1.7 Criar banco de dados do SEI e SIP
Conecte no MySQL localmente a partir do servidor de banco de dados
# mysql -uroot -p
4.1.8 Criar as bases de dados do SIP e SEI
mysql: create database sei; mysql: create database sip;
4.1.9 Descompactar scripts de criação e carga inicial do SEI e SIP
# unzip <ARQUIVOS_INSTALACAO_SEI>/SEI-BD-MySQL<VERSAO>.zip
4.1.10 Restaurar banco de dados do SIP e SEI
Obs: O formato de datas do banco deve estar no padrão “aaaa-mm-dd hh:mm:ss”.
# mysql -uroot -p sei < sei_<VERSAO>.sql # mysql -uroot -p sip < sip_<VERSAO>.sql
4.1.11 Atualização da base de dados do SIP
Após a restauração, será necessário criar um usuário e senha para acesso e, com algum aplicativo cliente do banco (como o MySQL Workbench ou Microsoft SQL Server Management Studio), abrir a base do SIP e atualizar as tabelas de órgãos e sistemas com a sigla e descrição da instituição.
mysql: use sip; mysql: update orgao set sigla='<SIGLA_ORGAO>', descricao='<NOME_ORGAO>' where id_orgao=0; mysql: update sistema set pagina_inicial='http://<IP_SERVIDOR_SIP>/sip' where sigla='SIP'; mysql: update sistema set pagina_inicial='http://<IP_SERVIDOR_SEI>/sei/inicializar.php', web_service='http://<IP_SERVIDOR_SEI>/sei/controlador_ws.php?servico=sip' where sigla='SEI';
4.1.12 Atualizar a tabela de órgãos do SEI
Abrir a base do SEI e atualizar a tabela de órgão:
mysql: use sei; mysql: update orgao set sigla='<SIGLA_ORGAO>', descricao='<NOME_ORGAO>' where id_orgao=0;
Obs: A sigla do órgão utilizada na tabela de órgãos do SIP deve ser a mesma utilizada na tabela correspondente do SEI.
4.1.13 Criar usuários dos sistemas SEI e SIP
mysql: CREATE USER 'sei_user'@'<MASCARA_IP_SERVIDOR_APP_SEI: 192.168.10.%>' IDENTIFIED BY '<PASSWORD_A_DEFINIR>'; mysql: CREATE USER 'sip_user'@'<MASCARA_IP_SERVIDOR_APP_SIP: 192.168.10.%>' IDENTIFIED BY '<PASSWORD_A_DEFINIR>';
4.1.14 Liberar acesso às bases de dados
mysql: GRANT ALL PRIVILEGES ON sei.* TO 'sei_user'@'<MASCARA_IP_SERVIDOR_APP_SEI: 192.168.10.%>'; mysql: GRANT ALL PRIVILEGES ON sip.* TO 'sip_user'@'<MASCARA_IP_SERVIDOR_APP_SIP: 192.168.10.%>';
4.1.15 Testar permissões de acesso
Acessar o servidores de aplicação e teste se o acesso e máscaras foram definidas corretamente.
# mysql -u sei_user -h <IP_SERVIDOR_BD> sei -p # mysql -u sip_user -h <IP_SERVIDOR_BD> sip -p
4.2 Apache Web Server (versão 2.2.*)
Todas as instalações descritas abaixo devem ser realizadas em plataforma 64 bits.
4.2.1 Instalar o servidor web Apache 2 e suas dependências
# yum -y install httpd-2.2.*, OU # yum -y install httpd.x86_64 (para CentOS 6.6)
4.2.2 Instalar demais ferramentas necessárias
# yum -y install openssl
4.2.3 Configurações adicionais do VirtualHost da aplicação
A seguintes configurações são sugestões para serem aplicadas às configurações do apache para o correto funcionamento e maior segurança ao SEI e SIP. Esse parâmetros precisão ser revisados pela equipe de infraestrutura e segurança de TI durante a implantação do sistema em ambiente de produção.
Criar o arquivo de configuração do VirtualHosts do Apache
# vi /etc/httpd/conf.d/sei.conf
e editar o seguinte parâmetro, mudando para:
<VirtualHost *:80> DocumentRoot /var/www/html ServerAdmin admin@dominio.gov.br ServerName <ENDERECO_SERVIDOR_APLICACAO> DirectoryIndex index.php index.html IndexIgnore * HostnameLookups Off ServerSignature Off AddDefaultCharset iso-8859-1 # Bloqueia acesso à qualquer arquivo ou diretório externo ao DocumentRoot <Directory /> Order Deny,Allow Deny from all Options None AllowOverride None </Directory> # Configura opções padrões dos diretórios da aplicação <Directory /var/www/html > Options -ExecCGI -MultiViews -Includes -Indexes FollowSymLinks AllowOverride None Order Allow,Deny Allow from all </Directory> # Remove acesso direto ao arquivo de configuração do SEI <Directory /var/www/html/sei > <Files "ConfiguracaoSEI.php" > Order allow,deny Deny from all </Files> </Directory> # Remove acesso aos diretórios privados do SEI <Directory ~ "/var/www/html/sei/(upload|ferramentas)" > Order allow,deny Deny from all </Directory> # Remove acesso direto ao arquivo de configuração do SIP <Directory /var/www/html/sip > <Files "ConfiguracaoSip.php" > Order allow,deny Deny from all </Files> </Directory> # Remove acesso aos diretórios privados do SIP <Directory /var/www/html/sip/upload > Order allow,deny Deny from all </Directory> </VirtualHost>
4.2.4 Configurar a inicialização automática do serviço
# chkconfig --add httpd # chkconfig httpd on # service httpd start
4.2.5 Validar instalação do Apache Web Server
Verifique se o Apache foi corretamente instalado e encontra-se em execução analisando a saída do comando abaixo.
# netstat -tln | grep 80
Resultado esperado:
tcp 0 0 :::80 :::* LISTEN
Obs: Revise as regras de firewall aplicadas neste servidor (iptables, pfsense, etc.)
4.3 Memcache (versão 3.0.*)
4.3.1 Instalar o serviço de cache Memcache e suas dependências
# yum -y install memcached
4.3.2 Configurar a inicialização automática do serviço
# chkconfig --add memcached # chkconfig memcached on # service memcached start
4.3.3 Validar instalação do Memcache
Verifique se o memcache foi corretamente instalado e encontra-se em execução analisando a saída do comando abaixo.
# netstat -tln | grep 11211
Resultado esperado:
tcp 0 :::11211 :::* LISTEN
4.4 PHP 5 (versão 5.3.*)
4.4.1 Instalar o PHP 5
# yum -y install php-5.3.*
4.4.2 Instalar dependências diversas exigidas pelas extensões do PHP
# yum install openssl libxml2 curl unzip gcc java-1.7.0-openjdk
<<PENDENTE: Instalar pacote de fontes do MS Windows>>
4.4.3 Instalar extensões do PHP exigidas pelo SEI e SIP
# yum -y install php-common php-cli php-pear php-bcmath php-gd php-gmp php-imap php-intl php-ldap php-mbstring php-mysql php-odbc php-pdo php-pecl-apc php-pspell php-zlib php-snmp php-soap php-xml php-xmlrpc php-zts php-devel php-pecl-apc-devel php-pecl-memcache php-calendar php-shmop
# pecl install uploadprogress
# echo "extension=uploadprogress.so" >> /etc/php.d/uploadprogress.ini
4.4.4 Reconfigurar parâmetros do PHP 5
Editar arquivo de configurações php.ini
# vi /etc/php.ini
E alterar os seguintes parâmetros:
Obs: Após definir o tamanho máximo permitido para os arquivos externos adicionados ao sistema (PDFs, DOCs, planilhas,...), será necessário configurar os valores post_max_size e upload_max_filesize, sendo que post_max_size deve ser ligeiramente maior que upload_max_filesize.
Além desta configuração no php.ini, também é necessário alterar o parâmetro SEI_TAM_MB_DOC_EXTERNO na tabela de parâmetros do SEI (ver seção “Tabela de Parâmetros”);
Nome do Parâmetro | Valor |
---|---|
post_max_size | <TAMANHO_MAXIMO_POST: 100M> |
upload_max_filesize | <TAMANHO_MAXIMO_UPLOAD: 90M> |
default_charset | "iso-8859-1" |
session.gc_maxlifetime | 43200 |
short_open_tag | On |
default_socket_timeout | 60 |
4.5 Cliente de Banco de Dados (MySQL-Client)
# yum install mysql-5.1.*
4.5.1 Alternativa: Utilização do MS SQL Server
Utilizando SQL Server com PHP em Linux: MSSQL/FreeTDS (atenção - utilizar versão 0.91), ex.:
# wget ftp://fr2.rpmfind.net/linux/epel/5/x86_64/freetds-0.91-2.el5.x86_64.rpm # rpm -ivh freetds-0.91-2.el5.x86_64.rpm # yum install php-mssql
Obs: A extensão também está disponível no diretório de fontes em: sei/ferramentas/freetds-0.64-1.el6.rf.x86_64.rpm
4.6 Instalação do SEI e SIP
O arquivo SEI-Fontes-<VERSÃO DO SISTEMA>.zip contém os fontes PHP do SEI (Sistema Eletrônico de Informações), do SIP (Sistema de Permissões) e do framework PHP. Após a descompactação copiar o conteúdo para o diretório raiz do apache (normalmente /srv/www/htdocs ou /var/www/html) que deve ficar com a estrutura de diretórios abaixo:
- infra_php
- infra_js
- infra_css
- sei
- sip
Caso a arquitetura de servidores possua instalações em separado para o SEI e o SIP, os diretórios infra_php
, infra_js
e infra_css
devem ser instalados em todos os servidores. O diretório sei
deve ser instalado apenas nos nós de aplicação do SEI e o diretório sip
apenas no servidor do SIP. Nos outros servidores que formam a arquitetura da solução (Solr, JOD Converter, etc), não é necessário instalar nenhum dos diretórios descritos acima.
Diretórios “upload”
Criar os diretórios sei/upload e sip/upload que devem ter permissão de escrita para o usuário do servidor que estiver executando a aplicação PHP (no Linux usuário do apache). Recomenda-se que seja adicionada no servidor uma rotina para excluir durante a noite todos os arquivos destes diretórios.
Uma configuração indispensável que precisa ser realizada durante a configuração do Apache é remover qualquer acesso externo à esse diretório por questões de segurança. Essa configuração é realizada no VirtualHosts do Apache e será explicada com maiores detalhes nas próximas seções
4.6.1 Descompactar Código Fonte do SEI e SIP no Apache
# unzip <ARQUIVOS_INSTALACAO_SEI>/SEI-Fontes-<VERSÃO DO SISTEMA>.zip
# mv infra_css/ infra_js/ infra_php/ sei/ sip/ /var/www/html/
4.6.2 Configurar infra_php no include_path do PHP 5
Adicione ao include_path
o caminho da pasta infra_php
(/var/www/html/infra_php)
Editar arquivo de configurações php.ini
# vi /etc/php.ini
E alterar os seguintes parâmetros:
include_path = ".:/php/includes:/var/www/html/infra_php"
Obs: Para adicionar, separe com ':' (dois pontos) cada diretório já listado. Não esquecer de descomentar include_path caso esteja comentado.
4.6.3 Criar diretórios de Upload
Criar os diretórios sei/upload e sip/upload que devem ter permissão de escrita para o usuário do servidor que estiver executando a aplicação PHP (no Linux usuário do apache). Recomenda-se que seja adicionada no servidor uma rotina para excluir durante a noite todos os arquivos destes diretórios.
# mkdir /var/www/html/sei/upload # chmod 640 /var/www/html/sei/upload
# mkdir /var/www/html/sip/upload # chmod 640 /var/www/html/sip/upload
4.6.4 Liberar permissão de execução para wkhtmltopdf
Necessário liberar permissão de execução no arquivo wkhtmltopdf
para o usuário do Apache
# chown apache:apache /var/www/html/sei/ferramentas/wkhtmltopdf-amd64
Abrir o arquivo /var/www/html/sip/ConfiguracaoSip.php
e alterar as seguintes entradas:
Parâmetro | Valor |
---|---|
SIP | |
URL | http://[IP_SERVIDOR_APP_SIP]/sip |
SessaoSIP | |
SiglaOrgaoSistema | '<SIGLA_ORGAO>' |
URL | 'http://<IP_SERVIDOR_SIP>/sip' |
PaginaLogin | 'http://<IP_SERVIDOR_SIP>/sip/login.php' |
SipWsdl | 'http://<IP_SERVIDOR_SIP>/sip/controlador_ws.php?servico=wsdl' |
BancoSIP | |
Servidor | '<IP_SERVIDOR_BD>' |
Porta | '3306' |
Banco | 'sip' |
Usuario | 'sip_user' |
Senha | '<PASSWORD_BD_SIP>' |
Tipo | 'MySql' |
HostWebService | |
Sip | array('<IP_SERVIDOR_APP_SIP>', '<HOSTNAME_SERVIDOR_APP_SIP>') |
Obs: Maiores informações sobre os demais parâmetros do SIP podem ser encontrados em 05. Configurações do Sistema.
4.6.6 Configurar parâmetros do SEI
Abrir o arquivo /var/www/html/sei/ConfiguracaoSEI.php
e alterar as seguintes entradas:
Parâmetro | Valor |
---|---|
Sei | |
URL | http://[IP_SERVIDOR_APP_SEI]/sei |
RepositorioArquivos | <diretório/compartilhamento do repositório de arquivos (vide sessão 4.6) |
SessaoSEI | |
SiglaOrgaoSistema | '<SIGLA_ORGAO>' |
SiglaSistema | 'SEI' |
PaginaLogin | 'http://<IP_SERVIDOR_SEI>/sip/login.php' |
SipWsdl | 'http://<IP_SERVIDOR_SEI>/sip/controlador_ws.php?servico=wsdl' |
BancoSEI | |
Servidor | '<IP_SERVIDOR_BD>' |
Porta | '3306' |
Banco | 'sei' |
Usuario | 'sei_user' |
Senha | '<PASSWORD_BD_Sei>' |
Tipo | 'MySql' |
Pesquisa | |
Banco | true |
Solr | false |
HostWebService | |
Sip | array('<IP_SERVIDOR_APP_SEI>', '<HOSTNAME_SERVIDOR_APP_SEI>') |
Obs: Maiores informações sobre os demais parâmetros do SEI podem ser encontrados em 05. Configurações do Sistema.
4.6.7 Alterar permissões dos arquivos de configuração
Para facilitar futuras atualizações de versões deixar os arquivos abaixo como somente-leitura:
# chmod -w /var/www/html/sei/ConfiguracaoSEI.php # chmod -w /var/www/html/sip/ConfiguracaoSip.php
4.6.8 Reiniciar o Apache
# service httpd restart
4.6.9 Testar instalação do SEI e SIP
Após isso a aplicação já estará acessível:
http://<IP_SERVIDOR_APP_SEI>/sei http://<IP_SERVIDOR_APP_SIP>/sip
Obs: Usuário e senha inicial: teste.
4.7 Agendamentos
Os sistemas possuem alguns agendamentos de tarefas para manutenção. No SEI (menu Infra/Agendamentos) as tarefas agendadas são:
- Remoção de dados temporários de estatísticas
- Remoção de dados temporários de auditoria
- Remoção de arquivos do repositório relativos a documentos externos excluídos
- Envio de comando de otimização de índices para o Solr
- Agendamento de teste para auxílio na configuração
- Confirmação de publicações do veículo interno
E no SIP (menu Infra/Agendamentos):
- Remoção de dados temporários de login
- Agendamento de teste para auxílio na configuração
- Replicação de todos os usuários para o SEI (desativado por padrão)
- Replicação de todas as unidades da hierarquia para o SEI (desativado por padrão)
Se necessário, os horários de execução podem ser alterados através do menu Infra/Agendamentos evitando conflito com o horário de backup;
É necessário criar agendamentos nos servidores do SEI e do SIP para execução de hora em hora dos arquivos sei/AgendamentoTarefaSEI.php esip/AgendamentoTarefaSip.php, lembrando que tal script deverá ser executado o mesmo contexto de usuário do Apache por questões de segurança. Exemplo crontab Linux:
00 * * * * /usr/bin/php -c /etc/php.ini /var/www/html/sei/AgendamentoTarefaSEI.php 2>&1 >> /root/infra_agendamento_sei.log
00 * * * * /usr/bin/php -c /etc/php.ini /var/www/html/sip/AgendamentoTarefaSip.php 2>&1 >> /root/infra_agendamento_sip.log
As tarefas agendadas nos sistemas podem ser visualizadas através do menu Infra/Agendamentos. É possível disparar um agendamento manualmente através da ação“Executar Agendamento”. Todos os agendamentos, quando executados, gravam um registro na tabela de logs (menu Infra/Log). Caso ocorra um erro os detalhes serão gravados no log e um email será enviado para os endereços cadastrados no parâmetro EMAIL_ADMINISTRADOR (menu Infra/Parâmetros).
Em ambos os sistemas serão configurados agendamentos de teste. As únicas operações realizadas por estes agendamentos são a gravação de um registro no log e o envio de um email para os administradores. Após o funcionamento automático destes agendamentos (programados para executar de hora em hora) eles podem ser desativados através da ação “Desativar Agendamento” (menu Infra/Agendamentos no SEI e SIP).
4.8 Configuração de Acesso aos Web Services
A comunicação entre o SEI e o SIP ocorre via Web Services. Como estes sistemas costumam estar disponíveis na Web, existe uma configuração que permite especificar quais máquinas possuem permissão para chamar os serviços. Essa configuração é feita através da chave HostWebService
existente nos arquivos ConfiguracaoSEI.php
eConfiguracaoSip.php
.
Cada sub-chave de HostWebService
representa um conjunto de serviços disponíveis e pode conter mais de um valor, pois, muitas vezes, a máquina de origem (requisitante do serviço) é identificada no PHP pelo IP, outras vezes pelo nome da máquina. Já ocorreram casos em que a identificação ocorria de forma alternada: em uma chamada era o IP e na próxima o nome da máquina. Esta resolução de nome é diretamente influenciada pela configuração do ambiente de rede.
A configuração dos valores para as sub-chaves pode ser feita utilizando o caractere curinga “*”,
exemplos:
'HostWebService' => array(
'Replicacao' => array('10.100.10.5'), //sistema de RH ou deixar vazio ''
'Pesquisa' => array('*'), //qualquer máquina, NÃO RECOMENDADO colocar nós do SEI
'Autenticacao' => array('10.100.200.*', 'no*.trf4.jus.br') //IPs e nós do SEI)
Será processado apenas um curinga por valor cadastrado, por exemplo, o valor “*.100.50.*” não é válido. Se uma máquina tentar chamar um serviço e não estiver autorizada então um erro de “Acesso Negado” será lançado e gravado na tabela de logs informando qual máquina tentou acesso (menu Infra/Log).
4.9 Servidor NFS - Repositório de Arquivos (Opcional)
Este componente da infraestrutura é opcional, sendo utilizado como estratégia de compartilhamento dos arquivos entre diversos servidores web em uma infraestrutura de balanceamento de carga. Outras estratégias também podem ser utilizadas para prover acesso aos documentos externos do SEI, como criar um ponto de montagem em cada um dos servidores web referenciando um determinado volume em um storage.
Obs: Instalação descrita a seguir deve ser aplicada no servidor de arquivos NFS
4.9.1 Instalação do serviço de compartilhamento de arquivos NFS
# yum -y install nfs-utils nfs-utils-lib
4.9.2 Configuração da inicialização automática dos serviços
# chkconfig --add rpcbind
# chkconfig rpcbind on
# service rpcbind start
# chkconfig --add nfs
# chkconfig nfs on
# service nfs start
4.9.3 Criar diretório de compartilhamento de arquivos
# mkdir /var/nfs # chmod 777 /var/nfs
4.9.4 Exportar diretório de compartilhamento
Editar arquivo de exports do nfs
# vi /etc/exports
E adicionar o conteúdo abaixo
/var/nfs <FAIXA_IP_COM_ACESSO: 192.168.10.20/32>(rw,sync,no_subtree_check)
4.9.5 Atualizar compartilhamento NFS
# exportfs -a
4.9.6 Reiniciar serviço NFS
# /etc/init.d/nfs restart
Cliente NFS - Montagem de Volume de Arquivos Compartilhados (Opcional)
Este componente da infraestrutura é opcional, sendo utilizado como estratégia de compartilhamento dos arquivos entre diversos servidores web em uma infraestrutura de balanceamento de carga. Outras estratégias também podem ser utilizadas para prover acesso aos documentos externos do SEI como criar um ponto de montagem em cada um dos servidores web referenciando um determinado volume em um storage.
Obs: Instalação descrita a seguir deve ser aplicada nos servidor web Apache integrantes do balanceamento de carga
4.9.7 Instalação dos utilitários do NFS
# yum -y install nfs-utils nfs-utils-lib
4.9.8 Criar diretório para montagem do compartilhamento
# mkdir -p /mnt/nfs
4.8.9 Montar compartilhamento de arquivos
# mount <IP_SERVIDOR_NFS: 192.168.10.50>:/var/nfs /mnt/nfs
4.9.10 Verificar a correto funcionamento do compartilhamento
Verifique se o compartilhamento é listado na saída do comando anterior
# df -h # touch /mnt/nfs/test.txt
4.9.11 Adicionar mapeamento no arquivo fstab
# vi /etc/fstab
Adicionar linha abaixo no arquivo
<FAIXA DE IP COM PERSMISSÃO DE ACESSO: 192.168.10.50>:/var/nfs /mnt/nfs nfs defauls 0 0
4.10 Apache Solr (versão 4.0)
A instalação deste mecanismo de indexação é altamente recomendada mas não obrigatória.
Somente a pesquisa utilizando o Solr possibilitará a busca no conteúdo de documentos externos (pdf, doc, xls,...). Se o mecanismo não for instalado a chave Pesquisa/Solr deve ficar com o valor false no arquivo sei/ConfiguracaoSEI.php.
Obs 1: Nos passos seguintes, serão utilizados as seguintes referências para instalação:
- <DIR_INSTALACAO_SEI>: diretório de instalação dos arquivos infra_php, sei e sip
- <DIR_INSTALACAO_SOLR>: diretório de instalação do Solr
- <DIR_INDICES_SOLR>: diretório de armazenamento dos índices do Solr
Obs 2: O pacote de instalação do Solr vem com o servidor web Jetty embarcado que será utilizado nesta instalação, entretanto é possível a utilização do Tomcat 6, conforme descrito na documentação oficial localizada em http://wiki.apache.org/solr/SolrTomcat.
Obs 3: Por questões didáticas, será utilizado as configurações de exemplo do Solr, por isso, esta instalação não é recomendado para um ambiente de produção. Maiores detalhes podem ser obtidos na documentação oficial do Apache Solr localizado em http://lucene.apache.org/solr/
Obs 4: Repositorios com todas as versões do Solr: http://archive.apache.org/dist/lucene/solr/
4.10.1 Instalar Java VM
# yum -y install java-1.7.0-openjdk-devel
4.10.2 Obter Apache Solr 4.0
Nos passos seguintes, o diretório de instalação do Solr passa a ser referenciado como <DIR_INSTALACAO_SOLR>, neste exemplo localizado em /opt/solr/solr-4.0.0
# mkdir /opt/solr && cd /opt/solr # wget http://archive.apache.org/dist/lucene/solr/4.0.0/apache-solr-4.0.0.tgz # tar xfvz apache-solr-4.0.0.tgz
4.10.3 Criar usuário de serviço Solr
# useradd -d <DIR_INSTALACAO_SOLR>/example/ -s /bin/bash solr
4.10.4 Criar pasta para logs do solr
# mkdir /var/log/solr # chown solr:solr -R /var/log/solr
4.10.5 Configurar os parâmetros padrões de inicialização do jetty
# vi /etc/default/jetty
Adicione o conteúdo abaixo, informando corretamente o diretório de localização do Solr:
JAVA_OPTIONS="-Dsolr.solr.home=<DIR_INSTALACAO_SOLR>/example/solr $JAVA_OPTIONS" JETTY_HOME=<DIR_INSTALACAO_SOLR>/example JETTY_USER=solr
4.10.6 Configurar os script de inicialização do solr
Criar o arquivo de configuração padrão
# wget -q -O /etc/init.d/solr https://raw.githubusercontent.com/eclipse/jetty.project/jetty-7/jetty-distribution/src/main/resources/bin/jetty.sh # chmod +x /etc/init.d/solr
4.10.7 Configurar a inicialização automática do Solr
# chkconfig --add solr # chkconfig solr on # service solr start
Neste ponto já será possível visualizar os índices no Solr acessando a URL http://[servidor_solr]:8080/solr
4.10.8 Criar diretório de armazenamento de índices
Necessário criar um diretório específico para armazenamento dos índices do Solr <DIR_INDICES_SOLR>.
# mkdir <DIR_INDICES_SOLR> # mkdir <DIR_INDICES_SOLR>/sei-protocolos && ln -s <DIR_INDICES_SOLR>/sei-protocolos <DIR_INSTALACAO_SOLR>/example/solr/ # mkdir <DIR_INDICES_SOLR>/sei-bases-conhecimento && ln -s <DIR_INDICES_SOLR>/sei-bases-conhecimento <DIR_INSTALACAO_SOLR>/example/solr/ # mkdir <DIR_INDICES_SOLR>/sei-publicacoes && ln -s <DIR_INDICES_SOLR>/sei-publicacoes <DIR_INSTALACAO_SOLR>/example/solr/
4.10.9 Copiar o conjunto de configurações padrão do Solr para os diretórios de índices:
# cp -R <DIR_INSTALACAO_SOLR>/example/solr/collection1/conf <DIR_INDICES_SOLR>/sei-protocolos/ # cp -R <DIR_INSTALACAO_SOLR>/example/solr/collection1/conf <DIR_INDICES_SOLR>/sei-bases-conhecimento/ # cp -R <DIR_INSTALACAO_SOLR>/example/solr/collection1/conf <DIR_INDICES_SOLR>/sei-publicacoes/
4.10.10 Remover arquivos schema.xml e solrconfig.xml das cópias:
# rm <DIR_INDICES_SOLR>/sei-protocolos/conf/schema.xml # rm <DIR_INDICES_SOLR>/sei-bases-conhecimento/conf/schema.xml # rm <DIR_INDICES_SOLR>/sei-publicacoes/conf/schema.xml # rm <DIR_INDICES_SOLR>/sei-protocolos/conf/solrconfig.xml # rm <DIR_INDICES_SOLR>/sei-bases-conhecimento/conf/solrconfig.xml # rm <DIR_INDICES_SOLR>/sei-publicacoes/conf/solrconfig.xml
4.10.11 Configurar Solr com índices do SEI
Dentro do diretório de fontes do SEI existe um diretório solr
com os novos arquivos XML de configuração para os índices.
Esse arquivo deve ser obtido dentro do diretório de instalação do SEI (<DIR_INSTALACAO_SEI>) definido previamente.
# cp <DIR_INSTALACAO_SEI>/sei/solr/xml/sei-protocolos-schema.xml <DIR_INDICES_SOLR>/sei-protocolos/conf # cp <DIR_INSTALACAO_SEI>/sei/solr/xml/sei-bases-conhecimento-schema.xml <DIR_INDICES_SOLR>/sei-bases-conhecimento/conf # cp <DIR_INSTALACAO_SEI>/sei/solr/xml/sei-publicacoes-schema.xml <DIR_INDICES_SOLR>/sei-publicacoes/conf # cp <DIR_INSTALACAO_SEI>/sei/solr/xml/sei-protocolos-config.xml <DIR_INDICES_SOLR>/sei-protocolos/conf # cp <DIR_INSTALACAO_SEI>/sei/solr/xml/sei-bases-conhecimento-config.xml <DIR_INDICES_SOLR>/sei-bases-conhecimento/conf # cp <DIR_INSTALACAO_SEI>/sei/solr/xml/sei-publicacoes-config.xml <DIR_INDICES_SOLR>/sei-publicacoes/conf
4.10.12 Criar diretório de conteúdo para os índices:
# mkdir <DIR_INDICES_SOLR>/sei-protocolos/conteudo # mkdir <DIR_INDICES_SOLR>/sei-bases-conhecimento/conteudo # mkdir <DIR_INDICES_SOLR>/sei-publicacoes/conteudo
4.10.13 Configurar links simbólicos para os índices
Criar atalhos dentro dos diretórios de índices para os diretórios contrib
, lib
e dist
que estão localizados em <DIR_INSTALACAO_SOLR>:
# cd <DIR_INDICES_SOLR>/sei-protocolos # ln -s <DIR_INSTALACAO_SOLR>/contrib/ contrib # ln -s <DIR_INSTALACAO_SOLR>/dist/ dist # ln -s <DIR_INSTALACAO_SOLR>/example/lib/ lib # cd <DIR_INDICES_SOLR>/sei-bases-conhecimento # ln -s <DIR_INSTALACAO_SOLR>/contrib/ contrib # ln -s <DIR_INSTALACAO_SOLR>/dist/ dist # ln -s <DIR_INSTALACAO_SOLR>/example/lib/ lib # cd <DIR_INDICES_SOLR>/sei-publicacoes # ln -s <DIR_INSTALACAO_SOLR>/contrib/ contrib # ln -s <DIR_INSTALACAO_SOLR>/dist/ dist # ln -s <DIR_INSTALACAO_SOLR>/example/lib/ lib
4.10.14 Faça usuário Solr dono das pastas do solr
# chown solr:solr -R <DIR_INSTALACAO_SOLR> # chown solr:solr -R <DIR_INDICES_SOLR>
4.10.15 Criar os índices do SEI no Solr
Usando um navegador criar os índices no Solr (executar os 4 comandos em sequência):
Obs: Não esquecer de substituir o valor <DIR_INDICES_SOLR> das URLs pelo diretório correspondente.
http://<SERVIDOR_SOLR>/solr/admin/cores?action=CREATE&name=seiprotocolos&instanceDir=<DIR_INDICES_SOLR>/sei-protocolos&config=sei-protocolosconfig.xml&schema=sei-protocolos-schema.xml&dataDir=<DIR_INDICES_SOLR>/sei-protocolos/conteudo
http://<SERVIDOR_SOLR>/solr/admin/cores?action=CREATE&name=sei-basesconhecimento&instanceDir=<DIR_INDICES_SOLR>/sei-bases-conhecimento&config=sei-bases-conhecimentoconfig.xml&schema=sei-bases-conhecimento-schema.xml&dataDir=<DIR_INDICES_SOLR>/sei-basesconhecimento/conteudo
http://<SERVIDOR_SOLR>/solr/admin/cores?action=CREATE&name=seipublicacoes&instanceDir=<DIR_INDICES_SOLR>/sei-publicacoes&config=sei-publicacoesconfig.xml&schema=sei-publicacoes-schema.xml&dataDir=<DIR_INDICES_SOLR>/sei-publicacoes/conteudo
http://<SERVIDOR_SOLR>/solr/admin/cores?action=RELOAD
4.10.16 Configurar a utilização do Solr nas configurações do SEI
Configurar as chaves de pesquisa no arquivo <DIR_INSTALACAO_SEI>/sei/ConfiguracaoSEI.php para ativar o uso do Solr, lembrando de informar corretamente a localização do servidor do Apache Solr.
'Pesquisa' => array('Banco' => false,
'Solr' => true,
'SqlServerFullTextSearch' => false),
'Solr' => array('Servidor' => 'http://<SERVIDOR_SOLR>/solr',
'CoreProtocolos' => 'sei-protocolos',
'CoreBasesConhecimento' => 'sei-bases-conhecimento',
'CorePublicacoes' => 'sei-publicacoes'),
4.10.17 Configurações Finais
- Disparar a indexação de protocolos acessando o menu “Desenvolvimento/Indexação” e clicando no botão “Gerar Indexação Completa de Processos e Documentos”
- Disparar a indexação de publicações acessando o menu “Desenvolvimento/Indexação” e clicando no botão “Gerar Indexação Publicações”;
4.10.18 Comandos auxiliares
Caso, seja preciso reindexar todos os dados do SEI, será necessário limpar antes os índices usando os comandos abaixo:
http://<SERVIDOR_SOLR>/solr/seiprotocolos/update?stream.body=<delete><query>*:*</query></delete>&commit=true http://<SERVIDOR_SOLR>/solr/sei-basesconhecimento/update?stream.body=<delete><query>*:*</query></delete>&commit=true http://<SERVIDOR_SOLR>/solr/seipublicacoes/update?stream.body=<delete><query>*:*</query></delete>&commit=true
4.11 JOD Converter
4.11.1 Instalação do Java JDK 1.7
# yum -y install java-1.7.0-openjdk-devel
4.11.2 Instalação do LibreOffice
# yum -y install libreoffice libreoffice-headless
4.11.3 Configurar inicialização automática do LibreOffice headless
# cd /etc/init.d && vi libreoffice-headless
Adicionar o conteúdo abaixo
#!/bin/bash # libreoffice.org headless server script # # chkconfig: 2345 80 30 # description: headless libreoffice server script # processname: libreoffice # # Author: Vic Vijayakumar # Modified by Federico Ch. Tomasczik # Modified by Manuel Vega Ulloa OOo_HOME=/usr/bin SOFFICE_PATH=$OOo_HOME/soffice PIDFILE=/var/run/libreoffice-server.pid set -e case "$1" in start) if [ -f $PIDFILE ]; then echo "LibreOffice headless server has already started." sleep 5 exit fi echo "Starting LibreOffice headless server" $SOFFICE_PATH --headless --nologo --nofirststartwizard --accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1 PID=`ps ax | grep "soffice.bin --headless"| grep -v grep|cut -d \ -f 1` echo $PID> $PIDFILE ;; stop) if [ -f $PIDFILE ]; then echo "Stopping LibreOffice headless server." kill `cat $PIDFILE` rm -f $PIDFILE exit fi echo "LibreOffice headless server is not running." exit ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
4.11.4 Configure o script no chkconfig
# chmod +x libreoffice-headless # chkconfig --add libreoffice-headless # chkconfig libreoffice-headless on # service libreoffice-headless start
4.11.5 Instalar JODConverter
O arquivo de instalação do JODConveter está localizado na pasta <DIR_INSTALACAO_SEI>/sei/ferramentas. Copie o arquivo JODConverter para a pasta /opt do servidor onde será configurado o JOD.
# scp <USUARIO>@<SERVIDORJOD>:<DIR_INSTALACAO_SEI>/sei/ferramentas/jodconverter-tomcat-2.2.2.zip /opt
Descompacte os arquivos de instalação no diretório /opt
# unzip /opt/jodconverter-tomcat-2.2.2.zip
4.11.6 Configurar a inicialização automática do JODConverter-Tomcat
Entre no diretório /etc/init.d e crie um arquivo vazio "tomcat":
# cd /etc/init.d && vi tomcat
Adicione o seguinte conteúdo no script de inicialização do tomcat
#!/bin/bash #ss description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 #JAVA_HOME=/usr/java/jdk1.7.0_05 #export JAVA_HOME #PATH=$JAVA_HOME/bin:$PATH #export PATH CATALINA_HOME=/opt/jodconverter-tomcat-2.2.2 case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0
4.11.6 Configure o script no chkconfig
# chmod +x /etc/init.d/tomcat # chkconfig --add tomcat # chkconfig tomcat on # service tomcat start
4.11.7 Configuração da localização do servidor JODConverter no SEI
# vi /var/www/html/sei/ConfiguracaoSEI.php
4.11.8 Alterar o seguinte parâmetro com a localização do servidor JODConveter
'JODConverter' => array('Servidor' => 'http://<SERVIDOR_JOD_CONVERTER>/converter/service'),