home Page History
LightBase Instalação - Infraestrutura Completa
Índice
1 Antes de começar
1.1 O que é esse tutorial?
1.2 A que público se destina?
1.3 A que distribuições Linux se destina?
1.4 Logar como root
1.5 Recomendações
1.5.1 Setar a linguagem e o “charset” do terminal
1.5.2 Atualizar o sistema antes de proceder com a instalação!
1.5.3 Configurar o SElinux
2 Baixar o pacote lbinstaller.tar.gz
3 Instalação do LBGenerator, liblightbase e LBApp
3.1 Instalar os componentes de base necessários
3.2 Instalar o postgresql
3.3 Instalar o Python-3.2.2
3.3.1 Instalar o virtualenv-1.11.6 no python3.2
3.3.2 Criar o ambiente virtual no python3.2
3.4 Instalar o mod_wsgi-4.3.2
3.5 Baixar os códigos fonte do LBGenerator, liblightbase e LBApp
3.5.1 Criar diretório de fontes no virtenvlb3.2
3.5.2 liblightbase (python3.2)
3.5.3 LBGenerator
3.5.4 LBApp
3.6 Instalar o LBGenerator, liblightbase e LBApp
3.6.1 Instalar a liblightbase no python3.2
3.6.2 Instalar o LBGenerator
3.6.2.1 Configurar LBGenerator
3.6.2.2 Configurar o Apache (httpd) para o LBGenerator
3.6.3 Instalar o LBApp
3.6.3.1 Configurar o LBApp
3.6.3.2 Configurar o Apache (httpd) para o LBApp
4 Instalação do LBIndex e LBConverter
4.1 Dependências
4.1.1 Instalar o virtualenv-1.11.6 no python2.6
4.1.2 Criar o ambiente virtual no python2.6
4.2 Baixar os códigos fonte do liblightbase (se necessário), LBIndex e LBConverter
4.2.1 Criar diretório de fontes no virtenvlb2.6
4.2.2 liblightbase (python2.6)
4.2.3 LBIndex
4.2.4 LBConverter
4.3 Instalar o liblightbase (python2.6), LBIndex e LBConverter
4.3.1 Instalar a liblightbase no python2.6
4.3.2 Instalar o LBIndex
4.3.2.1 Configurar LBIndex
4.3.3 Instalar o LBConverter
4.3.3.1 Configurar o LBConverter
5 Apêndice
5.1 Tratar pacotes Python
5.1.1 Checar pacotes instalados
5.1.2 Remover pacote
5.1.3 Instalar determinada versão de pacote
5.2 Dar permissões ao usuário Apache
5.3 Instalar e configurar o postgresql
5.3.1 Acessar o postgresql e configurar
5.3.2 Criar a base para subir o "dump" (se for este o caso)
5.3.3 Importar um "dump" de base
5.4 SElinux
5.5 Tratar dependências do LBConverter
5.6 Extrair novamente conteúdo dos arquivos
5.7 Instalar o Tesseract
5.8 Instalar o ElasticSearch
5.9 Recriar indexação LBIndex
5.10 Dicas extra
5.10.1 Enviar arquivos via SFTP
5.10.2 Acesso remoto com SSH
5.10.3 Edição básica com o vi
1. Antes de começar
Esse tutorial visa (no momento) a instalação em ambientes CentOS6/RHEL6 e correlatos. Esclarecemos que o LB é instalável em outras distribuições (Debian e correlatos, para citar exemplo) e poderá ser usado regularmente assim como o presente roteiro necessitando apenas alguns ajustes.
Recomendamos usar esse roteiro nos casos onde o usuário deseja conhecer em mais detalhes o processo de instalação do LB ou otimizar esse processo para as suas necessidades e nos casos em que se quer fazer a intalação em distribuições não abrangidas pelo script de instalação - funciona nas distribuições CentOS6/RHEL6 e correlatos - que consta no pacote "lbinstaller.tar.gz" citado mais à frente.
1.1 O que é esse tutorial?
Trata-se do processo de instalação dos componentes de persistência e administração da infraestrutura do LightBase (Instalação do LBGenerator, liblightbase e LBApp) e dos componentes de indexação e extração de conteúdo (Instalação do LBIndex e LBConverter).
1.2 A que público se destina?
Como orientação na sua construção esse roteiro pressupõe indivíduos sem conhecimento das tecnologias de base e auxiliares usadas nesse processo de instalação de maneira a abranger todos os públicos!
DICA: Nesse tutorial há uma seção chamada "Dicas Extras" onde damos algumas dicas como, por exemplo, "Edição básica com o vi"!
1.3 A que distribuições Linux se destina?
Inicialmente esse tutorial atende as distribuições CentOS6/RHEL6 e correlatos!
1.4 Logar como root
Executar todos os procedimentos como "root"!
su
DICA I: Em "Acesso remoto com SSH" constam informações sobre como acessar remotamente usando SSH!
DICA II: A instalação em pauta visa primariamente o uso em ambiente de desenvolvimento (para "produção" alguns ajustes podem se fazer necessários). Servidores à serem criados para essa instalação devem, preferencialmente, ser instalações "minimal" (ou equivalente).
1.5 Recomendações
1.5.1 Setar a linguagem e o "charset" do terminal
Essas configurações evitam possíveis problemas de compatibilidade na execução dos comandos deste tutorial.
NOTA: O procedimento descrito nessa seção não tem que ser necessariamente executado. Entretanto, nas situações onde o acesso SSH é feito via clientes executados em ambientes Windows (PuTTY, por exemplo) esse procedimento se tornará obrigatório!
Verificar se a linguagem "pt_BR" está disponível...
locale -a | grep pt_BR
Setar a linguagem e o "charset"...
export LANG=pt_BR.utf8
1.5.2 Atualizar o sistema antes de proceder com a instalação:
Executar o comando...
yum update
1.5.3 Configurar o SElinux
Configure o SElinux devidamente. Veja mais informações em SElinux.
2. Baixar o pacote lbinstaller.tar.gz
Todos os componentes em uso aqui constam no pacote "lbinstaller.tar.gz" que pode ser baixado no portal. Recomendamos seguir esse caminho ao invés de baixar cada componente individualmente! Se optar por baixar individualmente os componentes dos seus respectivos repositórios, será disponibilizado em cada caso as devidas instruções.
NOTA: No momento algums repositórios não estão com acesso público liberado ainda!
DICA: Onde houver "" substitua pelo valor da versão!
DICA I: Os parâmetros entre "" são obrigatórios e devem ser substituídos por seus respectivos valores onde couber, exemplo "" se torna "/usr/local/src". Já os parâmetros entre "[]" são opcionais e podem ser substituídos por seus respectivos valores onde couber seguindo a mesma regra!
DICA II: Em "Enviar arquivos via SFTP" constam informações sobre como enviar arquivos a um servidor usando sftp!
Crie uma pasta para guardar os fontes a serem baixados individualmente (o copie do pacote "lbinstaller.tar.gz", conforme cada caso) com o seguinte comando...
rm -rf /usr/local/src/inst-lbneo
mkdir /usr/local/src/inst-lbneo
3. Instalação do LBGenerator, liblightbase e LBApp
Tratam-se dos componentes de persistência e administração da infraestrutura do LightBase.
3.1 Instalar os componentes de base necessários:
Executar o comando...
yum install gcc-c++ zlib-devel openssl-devel postgresql-devel httpd httpd-devel git wget xz
3.2 Instalar o postgresql
Se já não possuir um serviço postgresql disponível, em "Instalar e configurar o postgresql" ensinamos como instalar o "postgresql", criar a estrutura de dados mínima e outros procedimentos! Crie a estrutura de dados mínima usando o script "lbn_basic_dt_strt.sql" que está no pacote de "lbinstaller.tar.gz" (ver pasta "lbn-basic-dt-strt")!
3.3 Instalar o Python-3.2.2
O Python-3.2.2 é utilizado pelas aplicações LBGenerator, liblightbase e LBApp e será executado isoladamente em um "virtualenv".
Executar o comando...
cd /usr/local/src/inst-lbneo
[wget http://python.org/ftp/python/3.2.2/Python-3.2.2.tar.xz --no-check-certificate]
tar xf Python-3.2.2.tar.xz
cd Python-3.2.2
./configure --prefix=/usr/local/lbneo/ --with-threads --enable-shared LDFLAGS=-Wl,-rpath=/usr/local/lbneo/lib/
make && make install
3.3.1 Instalar o virtualenv-1.11.6 no python3.2
Instalar:
cd /usr/local/src/inst-lbneo
[wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.11.6.tar.gz --no-check-certificate]
tar -zxvf virtualenv-1.11.6.tar.gz
cd virtualenv-1.11.6
/usr/local/lbneo/bin/python3.2 setup.py install
3.3.2 Criar o ambiente virtual no python3.2
O nome do ambiente virtual python utilizado será virtenvlb3.2.
Executar o comando...
cd /usr/local/lbneo
bin/virtualenv-3.2 -p bin/python3.2 virtenvlb3.2
3.4 Instalar o mod_wsgi-4.3.2
Abra o arquivo...
vi /etc/ld.so.conf
... e adicione a seguinte linha...
/usr/local/lbneo/lib
... feche o arquivo, e digite o seguinte comando (atualizar o sistema):
ldconfig
Instalar:
cd /usr/local/src/inst-lbneo
[wget https://pypi.python.org/packages/source/m/mod_wsgi/mod_wsgi-4.3.2.tar.gz --no-check-certificate]
tar -zxvf mod_wsgi-4.3.2.tar.gz
cd mod_wsgi-4.3.2
./configure --with-python=/usr/local/lbneo/bin/python3.2
make && make install
3.5 Baixar os códigos fonte do LBGenerator, liblightbase e LBApp
Iremos usar o GIT!
DICA: Para "clonar" usando o GIT talvez seja necessário "passar" o nome de usuário e senha conforme o exemplo:
git clone http://<user>:<password>@git.lightbase.cc/<package_name>.git
3.5.1 Criar diretório de fontes no virtenvlb3.2
Executar o comando...
mkdir -p /usr/local/lbneo/virtenvlb3.2/src
3.5.2 liblightbase (python3.2)
Baixar fontes...
cd /usr/local/lbneo/virtenvlb3.2/src
git clone http://git.lightbase.cc/liblightbase.git
3.5.3 LBGenerator
Baixar fontes:
cd /usr/local/lbneo/virtenvlb3.2/src
git clone http://git.lightbase.cc/LBGenerator.git
3.5.4 LBApp
Baixar fontes:
cd /usr/local/lbneo/virtenvlb3.2/src
git clone http://git.lightbase.cc/LBApp.git
3.6 Instalar o LBGenerator, liblightbase e LBApp
Trata-se do processo de instalação dos componentes de persistência e administração da infraestrutura do LightBase.
NOTA: Para tratar dependências relativas a pacotes Python veja o item "Tratar pacotes Python"! Em caso de falha de aplicação em tempo de execução verifique os pacotes Python instalados conforme as instruções!
DICA: Para ambiente de desenvolvimento usar develop ao invês de install nos processos de instalação (setup.py). Esse procedimento permite que o Python "reinstale" o pacote em caso de mudança no seus códigos fontes automaticamente!
3.6.1 Instalar a liblightbase no python3.2
Trata-se de um módulo API para o LBGenerator.
NOTA: Esses são os pacotes esperados no python3.2 para o liblightbase...
decorator (3.4.2) jsonpath-rw (1.4.0) ply (3.6) python-dateutil (2.4.2) requests (2.7.0) six (1.9.0) voluptuous (0.8.7)
(Para mais informações sobre como tratar pacotes Python veja o item "Tratar pacotes Python"!)
cd /usr/local/lbneo/virtenvlb3.2/src/liblightbase
/usr/local/lbneo/virtenvlb3.2/bin/python3.2 setup.py install
DICA: Se houver problemas com o pacote "requests", tente o que vai abaixo e depois repita o processo de instalação logo acima:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 install requests
3.6.2 Instalar o LBGenerator
Trata-se do módulo que provê e manipula os dados dentro da especificação LightBase.
NOTA: Esses são os pacotes esperados no python3.2 para o LBGenerator:
liblightbase (0.3dev) alembic (0.7.5.post2) Beaker (1.7.0) Mako (1.0.1) PasteDeploy (1.5.2) psycopg2 (2.6) pyramid (1.6a1) pyramid-beaker (0.8) pyramid-restler (0.1a4) repoze.lru (0.6) requests (2.7.0) SQLAlchemy (0.9.9) translationstring (1.3) venusian (1.0) voluptuous (0.8.7) waitress (0.8.9) WebOb (1.4.1) zope.deprecation (4.1.2) zope.interface (4.1.2)
Para mais informações sobre como tratar pacotes Python veja o item Tratar pacotes Python!
Instalar:
cd /usr/local/lbneo/virtenvlb3.2/src/LBGenerator
/usr/local/lbneo/virtenvlb3.2/bin/python3.2 setup.py install
DICA I: Se houver problemas com o pacote "Mako", tente o que vai abaixo e depois repita o processo de instalação:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 install Mako
DICA II: Se houver problemas com o pacote "PasteDeploy", tente o que vai abaixo e depois repita o processo de instalação:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 install PasteDeploy
DICA III: Se houver problemas com o pacote "WebOb", tente o que vai abaixo e depois repita o processo de instalação:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 install WebOb
3.6.2.1Configurar LBGenerator
Faça uma cópia do arquivo lbgenerator.wsgi:
cp /usr/local/lbneo/virtenvlb3.2/src/LBGenerator/lbgenerator.wsgi-dist /usr/local/lbneo/virtenvlb3.2/src/LBGenerator/lbgenerator.wsgi
Abra o arquivo lbgenerator.wsgi...
vi /usr/local/lbneo/virtenvlb3.2/src/LBGenerator/lbgenerator.wsgi
... e apague todo o conteúdo do arquivo, e cole o seguinte...
from pyramid.paster import get_app
application = get_app(
'/usr/local/lbneo/virtenvlb3.2/src/LBGenerator/production.ini', 'main')
Abra o arquivo production.ini...
vi /usr/local/lbneo/virtenvlb3.2/src/LBGenerator/production.ini
... e altere a seguinte linha (ocorre duas vezes), mudando para o usuário do banco, para senha do banco, para o ip do servidor do banco e para o nome do banco de dados:
sqlalchemy.url = postgresql://<user>:<passwd>@<ip>/<db>
Exemplo:
sqlalchemy.url = postgresql://rest:rest@127.0.0.1/xxx
3.6.2.2 Configurar o Apache (httpd) para o LBGenerator
NOTA: O "Apache" ("httpd") já foi instalado em processo realizado mais acima!
Habilite o serviço "Apache"...
chkconfig httpd on
Crie o arquivo de configuração lightbase.conf...
vi /etc/httpd/conf.d/lightbase.conf
... e copie e cole estas configurações (altere onde couber)...
# Use only 1 Python sub-interpreter. Multiple sub-interpreters
# play badly with C extensions.
LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
WSGISocketPrefix /var/run/wsgi
ServerAdmin admin@lightbase.com.br
ServerName <ip>
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess lbgenerator user=<user> group=<group> threads=8 \
python-path=/usr/local/lbneo/virtenvlb3.2/lib/python3.2/site-packages
WSGIScriptAlias /lbgenerator /usr/local/lbneo/virtenvlb3.2/src/LBGenerator/lbgenerator.wsgi
<Directory /usr/local/lbneo/virtenvlb3.2>
WSGIProcessGroup lbgenerator
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd/neo-lightbase-error.log
CustomLog /var/log/httpd/neo-lightbase-access.log combined
NOTA I: As informações de , e devem ser ajustadas!
Exemplo: ServerName 172.16.13.168 user=apache group=root
NOTA II: -> Normalmente o ip/nome da máquina que abriga o Apache! -> Normalmente "apache" para CentOS/RHEL! -> Normalmente "root" ("apache" é mais seguro, mas precisa dar acesso)!
Dê as permissões ao usuário apache conforme instruímos em Dar permissões ao usuário Apache.
Inicializar/reiniciar o apache...
service httpd restart
Abrir o firewall para o Apache (se necessário for)...
iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart
Para testar o "LBGenerator" use o caminho...
http://<ip>/lbgenerator
... e se tudo deu certo será exibido um json no corpo da página!
Log do Apache (padrão):
less /var/log/httpd/error_log
Log de erros do LBGenerator:
less /var/log/httpd/neo-lightbase-error.log
Log de acessos do LBGenerator:
less /var/log/httpd/neo-lightbase-access.log
3.6.3 Instalar o LBApp
Trata-se do portal de administração do LightBase.
NOTA: Esses são os pacotes esperados no python3.2 para o LBApp...
Chameleon (2.22) pyramid (1.6a1) pyramid-chameleon (0.3) requests (2.7.0) waitress (0.8.9)
Para mais informações sobre como tratar pacotes Python veja o item Tratar pacotes Python!
Instalar:
cd /usr/local/lbneo/virtenvlb3.2/src/LBApp
/usr/local/lbneo/virtenvlb3.2/bin/python3.2 setup.py install
DICA: Se houver problemas com o pacote "Chameleon", tente o que vai abaixo e depois repita o processo de instalação:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 install Chameleon
3.6.3.1 Configurar o LBApp
Faça uma cópia do arquivo "lbapp.wsgi-dist" com o nome "lbapp.wsgi"...
cp /usr/local/lbneo/virtenvlb3.2/src/LBApp/lbapp.wsgi-dist /usr/local/lbneo/virtenvlb3.2/src/LBApp/lbapp.wsgi
Abra o arquivo lbapp.wsgi...
vi /usr/local/lbneo/virtenvlb3.2/src/LBApp/lbapp.wsgi
... apague todo o conteúdo do arquivo, e cole o seguinte...
from pyramid.paster import get_app
application = get_app(
'/usr/local/lbneo/virtenvlb3.2/src/LBApp/production.ini', 'main')
Faça uma cópia do arquivo "production.ini-dist" com o nome "production.ini"...
cp /usr/local/lbneo/virtenvlb3.2/src/LBApp/production.ini-dist /usr/local/lbneo/virtenvlb3.2/src/LBApp/production.ini
... abra o arquivo production.ini...
vi /usr/local/lbneo/virtenvlb3.2/src/LBApp/production.ini
... na seção "[app:main]" altere o item rest_url para o IP em que o LBGenerator estará disponível...
rest_url = http://<rest_url>/lbgenerator
Exemplo:
rest_url = http://127.0.0.1/lbgenerator
3.6.3.2 Configurar o Apache (httpd) para o LBApp
No arquivo de configuração...
vi /etc/httpd/conf.d/lightbase.conf
... criado para o "LBGenerator" adicione o que segue após o útimo "" seguindo as mesmas instruções para "" e "":
WSGIDaemonProcess lbapp user=<user> group=<group> threads=8 \
python-path=/usr/local/lbneo/virtenvlb3.2/lib/python3.2/site-packages
WSGIScriptAlias / /usr/local/lbneo/virtenvlb3.2/src/LBApp/lbapp.wsgi
<Directory /usr/local/lbneo/virtenvlb3.2>
WSGIProcessGroup lbapp
Order allow,deny
Allow from all
</Directory>
Por fim, inicialize/reinicie o Apache...
service httpd restart
Para testar use o caminho...
http://<ip>/base/list
... e se tudo deu certo será exibida uma lista de bases!
Log do Apache (padrão):
less /var/log/httpd/error_log
4. Instalação do LBIndex e LBConverter
Tratam-se dos componentes de indexação e extração de conteúdo do LightBase.
NOTA I: Os aplicativos desse roteiro dependem do "LBGenerator" e seus componentes.
4.1 Dependências
Os componentes de base necessários para essa instalação constam em Instalar os componentes de base necessários. Realize o processo apenas se necessário! O Python utilizado será o python2.6 que é nativo de diversas distribuições na data deste tutorial.
4.1.1 Instalar o virtualenv-1.11.6 no python2.6
NOTA: O "virtualenv-1.11.6" será instalado no Python nativo da máquina, qual seja, o python2.6! Baixe o pacote "virtualenv-1.11.6.tar.gz" apenas se não foi baixado em Instalar o virtualenv-1.11.6 no python3.2:
cd /usr/local/src/inst-lbneo
[wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.11.6.tar.gz --no-check-certificate]
[tar -zxvf virtualenv-1.11.6.tar.gz]
cd virtualenv-1.11.6
python setup.py install
4.1.2 Criar o ambiente virtual no python2.6
O nome do ambiente virtual python utilizado será virtenvlb2.6.
Executar o comando...
cd /usr/local/lbneo
virtualenv-2.6 virtenvlb2.6
4.2 Baixar os códigos fonte do liblightbase (se necessário), LBIndex e LBConverter
Utilizaremos o GIT valendo as mesmas orientações que constam em Baixar os códigos fonte do LBGenerator, liblightbase e LBApp para o mesmo!
4.2.1 Criar diretório de fontes no virtenvlb2.6:
Executar o comando...
mkdir -p /usr/local/lbneo/virtenvlb2.6/src
4.2.2 liblightbase (python2.6)
NOTA: Os fontes do liblightbase podem já ter sido baixados em procedimento anterior (liblightbase (python3.2)). Se for esse o caso faça uma cópia com o comando abaixo:
cp -avr /usr/local/lbneo/virtenvlb3.2/src/liblightbase /usr/local/lbneo/virtenvlb2.6/src
Baixar fontes:
cd /usr/local/lbneo/virtenvlb2.6/src
git clone http://git.lightbase.cc/liblightbase.git
4.2.3 LBIndex
Baixar fontes:
cd /usr/local/lbneo/virtenvlb2.6/src
git clone http://git.lightbase.cc/LBIndex.git
4.2.4 LBConverter
Baixar fontes:
cd /usr/local/lbneo/virtenvlb2.6/src
git clone http://git.lightbase.cc/LBConverter.git
4.3 Instalar o liblightbase (python2.6), LBIndex e LBConverter
Trata-se do processo de instalação dos componentes de indexação e extração de conteúdo do LightBase.
NOTA: Para tratar dependências relativas a pacotes Python veja o item "Tratar pacotes Python"! Em caso de falha de aplicação em tempo de execução verifique os pacotes Python instalados conforme as instruções!
4.3.1 Instalar a liblightbase no python2.6
Trata-se de um módulo API para o LBGenerator.
NOTA: Esses são os pacotes esperados no python2.6 para o liblightbase:
decorator (3.4.2) jsonpath-rw (1.4.0) ply (3.6) python-dateutil (2.4.2) requests (2.7.0) six (1.9.0) voluptuous (0.8.7)
Para mais informações sobre como tratar pacotes Python veja o item Tratar pacotes Python!
cd /usr/local/lbneo/virtenvlb2.6/src/liblightbase
/usr/local/lbneo/virtenvlb2.6/bin/python2.6 setup.py install
4.3.2 Instalar o LBIndex
Trata-se do módulo que indexa "textualmente" conteúdos para o LightBase:
NOTA: Esses são os pacotes esperados no python2.6 para o LBIndex:
liblightbase (0.3dev) argparse (1.3.0) configparser (3.5.0b2) elasticsearch (1.4.0) linecache2 (1.0.0) ordereddict (1.1) pyelasticsearch (1.2.3) requests (2.7.0) simplejson (3.6.5) six (1.9.0) traceback2 (1.4.0) unittest2 (1.0.1) urllib3 (1.10.4)
Para mais informações sobre como tratar pacotes Python veja o item Tratar pacotes Python!
Instalar dependências do LBIndex:
Instalar o ElasticSearch:
Instalar...
cd /usr/local/lbneo/virtenvlb2.6/src/LBIndex
/usr/local/lbneo/virtenvlb2.6/bin/python2.6 setup.py install
4.3.2.1 Configurar LBIndex
Faça uma cópia do arquivo "production.ini-dist" com o nome "production.ini"...
cp /usr/local/lbneo/virtenvlb2.6/src/LBIndex/production.ini-dist /usr/local/lbneo/virtenvlb2.6/src/LBIndex/production.ini
Abra o arquivo production.ini...
vi /usr/local/lbneo/virtenvlb2.6/src/LBIndex/production.ini
... modifique o item "rest_url" para o IP em que o LBGenerator estará disponível...
rest_url: http://<rest_url>/lbgenerator
Exemplo:
rest_url: http://127.0.0.1/lbgenerator
Crie o script de inicialização do LBIndex...
vi /etc/init.d/lbindex
... insira o seguinte conteúdo...
#!/bin/bash
# chkconfig: 2345 99 01
# description: Serviço de inicialização do LBIndex
# processname: lbindex
cd /usr/local/lbneo/virtenvlb2.6/src/LBIndex
Name=lbindex
Start="/usr/local/lbneo/virtenvlb2.6/bin/python /usr/local/lbneo/virtenvlb2.6/src/LBIndex/lbindex/ start"
Stop="/usr/local/lbneo/virtenvlb2.6/bin/python /usr/local/lbneo/virtenvlb2.6/src/LBIndex/lbindex/ stop"
Pid=$(ps auxf | grep ${Name} | grep -v grep | awk '{print $2}')
function startProgram(){
if [ -z "${Pid}" ]; then
echo "${Name} is running"
else
echo "starting ${Name}"
${Start}
fi
}
function stopProgram(){
if [ -n "$Pid" ]; then
${Stop}
else
echo "${Name} not is running"
fi
}
case "$1" in
start)
startProgram
;;
stop)
stopProgram
;;
restart)
stopProgram
startProgram
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
... atribua a permissão de escrita, leitura e execução...
chmod 755 /etc/init.d/lbindex
... e especifique o nível de execução...
cd /etc/init.d/
chkconfig --level 2345 lbindex on
Iniciar o LBIndex:
cd /usr/local/lbneo/virtenvlb2.6/src/LBIndex && /usr/local/lbneo/virtenvlb2.6/bin/python lbindex/ start
Parar o LBIndex:
cd /usr/local/lbneo/virtenvlb2.6/src/LBIndex && /usr/local/lbneo/virtenvlb2.6/bin/python lbindex/ stop
Log do LBIndex:
less /var/log/lbindex.log
NOTA: Para que o ElasticSearch trate variações em caracteres latinos (Ex.: Encontrar por "decisão" e por "decisao", encontrar por "ação" e por "acao"...), caixa ALTA e baixa, etc... Execute o comando que vai abaixo no LBIndex
/usr/local/lbneo/virtenvlb2.6/bin/python2.6 lbindex index
NOTA I: Para funcionar, o(s) índice(s) já deve(m) estar criado(s). Ou seja, a primeira indexação já deve ter acontecido.
NOTA II: Para mais informações há ainda um outro método alternativo veja a seção Instalar o ElasticSearch.
DICA I: Para configurar o LBIndex para usar o ElasticSearch abra a tabela "lb_base" (base postgres no "dump" modelo, se houver) e altere os valores pertinentes nos campos "struct" e "idx_exp_url"! Perceba que esses registros são criados pelo LBApp/LBGenerator tratando-se esta dica, apenas, de um "workaround" para facilitar! As bases que "indexam" no ElasticSearch são aquelas que possuem o valor "true" em "idx_exp"!
DICA II: Se tudo estiver okay com o LBIndex, o ElasticSearch irá exibir através do comando abaixo as bases que possuem conteúdo indexado!
NOTA: O LBindex só irá criar índices no ElasticSearch se houver conteúdo e configuração para isso (ver "DICA I" logo acima) e/ou se for submetida alguma operação no LBGenerator que dispare esse processo ou se for executada uma reindexação conforme consta em "Recriar indexação LBIndex!"
curl 'http://<ip>:9200/_mapping'
Exemplo:
curl 'http://127.0.0.1:9200/_mapping'
4.3.3 Instalar o LBConverter
Trata-se do módulo que extrai conteúdos de arquivos submetidos para o LightBase.
NOTA: Esses são os pacotes esperados no python2.6 para o LBConverter:
configparser (3.5.0b2) ordereddict (1.1) pdfminer (20140328) requests (2.7.0)
Para mais informações sobre como tratar pacotes Python veja o item Tratar pacotes Python!
Instalar dependências do LBConverter:
Instalar o catdoc:
cd /usr/local/lbneo/virtenvlb2.6/lib
[wget http://ftp.wagner.pp.ru/pub/catdoc/catdoc-0.94.2.tar.gz]
tar -zxvf catdoc-0.94.2.tar.gz
cd catdoc-0.94.2
./configure
make && make install
Instalar o unzip e o ImageMagick:
yum install unzip ImageMagick
Instalar o Tesseract:
cd /usr/local/lbneo/virtenvlb2.6/src/LBConverter
/usr/local/lbneo/virtenvlb2.6/bin/python2.6 setup.py install
4.3.3.1 Configurar o LBConverter
Faça uma cópia do arquivo "production.ini-dist" com o nome "production.ini"...
cp /usr/local/lbneo/virtenvlb2.6/src/LBConverter/production.ini-dist /usr/local/lbneo/virtenvlb2.6/src/LBConverter/production.ini
... abra o arquivo "production.ini"...
vi /usr/local/lbneo/virtenvlb2.6/src/LBConverter/production.ini
... modifique o item "rest_url" para o IP em que o LBGenerator estará disponível...
rest_url: http://<rest_url>/lbgenerator
Exemplo:
rest_url: http://127.0.0.1/lbgenerator
Verifique no arquivo "production.ini" as configurações de suas dependências e altere se couber.
NOTA: Na seção "Tratar dependências do LBConverter" damos mais informações sobre como tratar e configurar as dependências do LBConverter!
Crie o script de inicialização do "LBConverter"...
vi /etc/init.d/lbconverter
... insira o seguinte conteúdo...
#!/bin/bash
# chkconfig: 2345 99 01
# description: Serviço de inicialização do LBConverter
# processname: lbconverter
cd /usr/local/lbneo/virtenvlb2.6/src/LBConverter
Name=lbconverter
Start="/usr/local/lbneo/virtenvlb2.6/bin/python /usr/local/lbneo/virtenvlb2.6/src/LBConverter/lbconverter/ start"
Stop="/usr/local/lbneo/virtenvlb2.6/bin/python /usr/local/lbneo/virtenvlb2.6/src/LBConverter/lbconverter/ stop"
Pid=$(ps auxf | grep ${Name} | grep -v grep | awk '{print $2}')
function startProgram(){
if [ -z "${Pid}" ]; then
echo "${Name} is running"
else
echo "starting ${Name}..."
${Start}
fi
}
function stopProgram(){
if [ -n "$Pid" ]; then
${Stop}
else
echo "${Name} not is running"
fi
}
case "$1" in
start)
startProgram
;;
stop)
stopProgram
;;
restart)
stopProgram
startProgram
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
... atribua a permissão de escrita, leitura e execução...
chmod 755 /etc/init.d/lbconverter
... especifique o nível de execução...
cd /etc/init.d/
chkconfig --level 2345 lbconverter on
Iniciar o LBConverter:
cd /usr/local/lbneo/virtenvlb2.6/src/LBConverter && /usr/local/lbneo/virtenvlb2.6/bin/python lbconverter/ start
Parar o LBConverter:
cd /usr/local/lbneo/virtenvlb2.6/src/LBConverter && /usr/local/lbneo/virtenvlb2.6/bin/python lbconverter/ stop
Log do LBConverter:
less /var/log/lbconverter.log
DICA: Veja em "Extrair novamente conteúdo dos arquivos" como extrair novamente conteúdo dos arquivos que constam na persistência e que serão indexados no LightBase.
5. Apêndice
5.1 Tratar pacotes Python
Abaixo vão algumas instruções básicas de como adiministrar pacotes Python...
DICA: Não faça confusão com as versões do Python (2.6 ou 3.2) em seus respectivos "virtualenv". Ou seja, se o pacote que você quer tratar está no "virtenvlb3.2" ou no "virtenvlb2.6"!
5.1.1 Checar pacotes instalados:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 list
5.1.2 Remover pacote:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 uninstall <package_name>
5.1.3 Instalar determinada versão de pacote:
/usr/local/lbneo/virtenvlb3.2/bin/pip3.2 install <package_name>==<package_version>
5.2 Dar permissões ao usuário Apache
Confirmar o usuário apache...
egrep -i '^user|^group' /etc/httpd/conf/httpd.conf
... se confirmado dê as devidas permissões...
chown apache /var/www
chmod -R 700 /var/www
5.3 Instalar e configurar o postgresql
Instalar o pacote (rpm) "postgres" a partir da URL...
yum localinstall http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm
Instalar o serviço postgresql...
yum install postgresql94-server
Inicializar o ambiente de bases...
service postgresql-9.4 initdb
Setar o serviço postgresql para iniciar junto ao servidor...
chkconfig postgresql-9.4 on
Iniciar o serviço postgresql...
service postgresql-9.4 start
5.3.1 Acessar o postgresql e configurar
Passar credenciais para poder manipular o postgresql...
sudo su postgres
Abrir o cliente default do postgresql...
psql
Criar um "superuser" (no "psql")...
CREATE USER <user_name> INHERIT SUPERUSER CREATEROLE CREATEDB;
Exemplo:
CREATE USER rest INHERIT SUPERUSER CREATEROLE CREATEDB;
Criar senha para o usuário logo acima...
ALTER USER <user_name> PASSWORD '<password>';
Exemplo:
ALTER USER rest PASSWORD 'rest';
DICA: Para sair use "Ctrl+d"!
Abra o arquivo de configuração pg_hba.conf...
vi /var/lib/pgsql/9.4/data/pg_hba.conf
NOTA: As conexões "trust" e "md5" têm que ser as primeiras dentro da lista que consta em "IPv4 local connections"! Sempre deve constar a conexão "ident"!
... e acrescente no item "IPv4 local connections" o valor:
host <db_name> all <client_ip>/32 trust
Exemplo:
host all all 127.0.0.1/32 trust
Abra o arquivo de configuração postgresql.conf...
vi /var/lib/pgsql/9.4/data/postgresql.conf
... e acrescente no item "Connection Settings" o valor mais abaixo ou descomente e modifique o que lá está...
listen_addresses = '*'
Reiniciar o serviço postgres...
service postgresql-9.4 restart
5.3.2 Criar a base para subir o "dump" (se for este o caso):
sudo su postgres
... então...
psql
Criar a nova base (psql)...
CREATE DATABASE <db_name>;
Exemplo:
CREATE DATABASE xxx;
DICA I: No caso de comando indevidamente digitado no psql proceda conforme o modelo (digite ";" então tecle Enter)...
postgres-# ;
ERROR: syntax error at or near "psql"
LINE 1: psql
^
postgres=#
DICA II: Ajuda:
psql --help
DICA III: Para acessar uma base estando ela como "trust":
psql xxx
5.3.3 Criar a estrutura básica de dados do LB
No terminal do postgresql ("sudo su postgres") abrir o caminho de pasta do script de criação das estruturas de dados básicas...
cd <caminho de pasta do script de criação das estruturas de dados básicas>
... e executar o seguinte para criar...
cp ./lbn-basic-dt-strt/lbn_basic_dt_strt.sql /tmp
cd /tmp
chmod 700 lbn_basic_dt_strt.sql
chown postgres lbn_basic_dt_strt.sql
chown :postgres lbn_basic_dt_strt.sql
sudo -u postgres psql <db_name> -f lbn_basic_dt_strt.sql
rm -f lbn_basic_dt_strt.sql
Exemplo:
cp ./lbn-basic-dt-strt/lbn_basic_dt_strt.sql /tmp
cd /tmp
chmod 700 lbn_basic_dt_strt.sql
chown postgres lbn_basic_dt_strt.sql
chown :postgres lbn_basic_dt_strt.sql
sudo -u postgres psql xxx -f lbn_basic_dt_strt.sql
rm -f lbn_basic_dt_strt.sql
DICA I: Caso deseje acessar o postgres fora do ambiente local usando um cliente. Libere a porta no firewall...
iptables -I INPUT 1 -m tcp -p tcp --dport 5432 -j ACCEPT
service iptables save
service iptables restart
... e no postgres no arquivo de configuração pg_hba.conf...
vi /var/lib/pgsql/9.4/data/pg_hba.conf
... no item "IPv4 local connections" acrecente...
host <db_name> all <client_ip>/32 md5
Exemplo:
host all all 172.16.13.1/32 md5
No arquivo de configuração "postgresql.conf"...
vi /var/lib/pgsql/9.4/data/postgresql.conf
... no item "Connection Settings" deve constar (caso já não esteja assim)...
listen_addresses = '*'
... e por fim reinicie o "postgres"...
service postgresql-9.4 restart
DICA II: Para instalar o "psql" na sua máquina remota use:
(Exemplo abaixo para Debian/Ubuntu e correlatos!)
apt-get install postgresql-client-common
apt-get install postgresql-client-9.3
(Perceba que "9.3" é a versão!)
NOTA III: Algumas outras boas opções de cliente (gráficos no caso) são o...
DBeaver - http://dbeaver.jkiss.org/
... e o:
pgAdmin - http://www.pgadmin.org/
DICA III Usar (no psql) um determinado usuário (que não seja dono da base), se criado e liberado:
psql -U <user_name> -h <server> -d <db_name> -W
Exemplo:
psql -U rest -h localhost -d xxx -W
5.4 SElinux
O "SElinux" pode ser um fator complicador durante a instalação, recomendamos proceder como segue...
Verificar se o SElinux está no modo "Enforcing"...
getenforce
... se o SELinux estiver no modo "Enforcing", alterar para "Permissive"...
setenforce 0
Para desabilitar o SELinux definitivamente abra o arquivo...
vi /etc/sysconfig/selinux
... e modifique a linha abaixo conforme o modelo...
SELINUX=disabled
5.5 Tratar dependências do LBConverter
Alguns componentes necessitam estar instalados para o LBConverter funcionar. Eis um exemplo de comando para poder checar se estão presentes e/ou onde se encontram:
NOTA: Verifique em...
vi /usr/local/lbneo/virtenvlb2.6/src/LBConverter/production.ini
... quais são os componentes necessários.
find /bin /usr -name "<pacote>" | grep "<pacote>"
Exemplo:
find /bin /usr -name "convert" | grep "convert"
5.6 Extrair novamente conteúdo dos arquivos
Nessa seção instruímos como extrair novamente conteúdo dos arquivos que constam na persistência e que serão indexados no LightBase (ElasticSearch).
Alterne para o usuário postgres...
sudo su postgres
Abra a base...
psql <base_name>
Exemplo:
psql xxx
... "limpe" o campo "dt_ext_text" da base a receber novamente a extração dos arquivos...
update lb_file_<base_name> set dt_ext_text=null;
Exemplo:
update lb_file_db_reg_anot_teses_arq set dt_ext_text=null;
Após realizar este procedimento o serviço "LBConverter" vai extrair novamente o conteúdo dos arquivos em alguns minutos! Entretanto, que para reindexar esse conteúdo no ElasticSearch faz-se necessário realizar o procedimento em Recriar indexação LBIndex!
NOTA: Há situações onde o LBConverter não extrai conteúdo de determinados arquivos porque estes itens possuem registro de erro na tabela "lb_doc_log_lbconverter". Para resolver isso faz-se necessário "limpar" essa tabela:
TRUNCATE TABLE public.lb_doc_log_lbconverter;
(Os registros de arquivos ficam cada um na sua "tabela file" pertinente conforme o modelo lb_file_!)
5.7 Instalar o Tesseract
O LightBase (LBConverter) conta, também, com o Tesseract para poder extrair o conteúdo de arquivos!
Instalar os seguintes componentes...
yum install libpng-devel libjpeg-devel libtiff-devel libtool automake autoconf
Baixar o Leptonica...
cd /usr/local/lib
[wget http://www.leptonica.org/source/leptonica-1.71.tar.gz]
tar -zxvf leptonica-1.71.tar.gz
Compilar e instalar o Leptonica...
cd leptonica-1.71
./configure
make & make install
Baixar o Tesseract...
cd /usr/local/lib
[wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz]
tar -zxvf tesseract-ocr-3.02.02.tar.gz
Compilar e instalar o Tesseract...
cd /usr/local/lib/tesseract-ocr
./autogen.sh
./configure
make & make install
ldconfig
Configurar o Tesseract:
Baixe as linguagens necessárias para o OCR...
cd /usr/local/lib/tesseract-ocr
[wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.01.eng.tar.gz]
tar -zxvf tesseract-ocr-3.01.eng.tar.gz
[wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.por.tar.gz]
tar -zxvf tesseract-ocr-3.02.por.tar.gz
cp /usr/local/lib/tesseract-ocr/tesseract-ocr/tessdata/eng.traineddata /usr/local/share/tessdata/
Setar variável de ambiente...
export TESSDATA_PREFIX=/usr/local/lib/tesseract-ocr/tesseract-ocr
5.8 Instalar o ElasticSearch
O LightBase (LBIndex) conta com o ElasticSearch para indexação e busca textual.
Verificar se o JAVA está instalado...
java -version
Instalar o JAVA caso o mesmo não esteja instalado ou a versão seja inferior à 6 (oficial) ou 1.6 (openjdk)...
yum install java-1.7.0-openjdk
Baixar o pacote do ElasticSearch...
NOTA I: Usar a versão "1.1.1" do ElasticSearch!
cd /usr/local/src/inst-lbneo
rpm -Uvh https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.noarch.rpm
Iniciar o ElasticSearch na inicialização da máquina...
/sbin/chkconfig --add elasticsearch
Iniciar o ElasticSearch...
service elasticsearch start
Abra o arquivo de configuração "elasticsearch.yml"...
vi /etc/elasticsearch/elasticsearch.yml
... e na linha...
# cluster.name: elasticsearch
... mude para...
DICA: Em usar um identificador qualquer e único que além de identificar o host não permita conflitos de "cluster.name" com outras máquinas. Uma dica seria usar o último octeto de bits do ip da máquina, por exemplo, em "192.168.10.145" usar o "145".
cluster.name: lbneo-es-<id>
Reiniciar o ES...
service elasticsearch restart
Para testar o ElasticSearch execute...
curl http://127.0.0.1:9200
... e se tudo estiver okay um json será retornado!
NOTA II: Por vias "normais" o LBIndex só irá criar bases LightBase em determindo índice (ElasticSearch) a partir da primeira operação submetida no LBGenerator que dispare esse processo!
DICA I: ...Abrir o firewall para o ElasticSearch, se necessário for:
iptables -I INPUT 1 -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT service iptables save service iptables restart
DICA II: Para verificar a indexação do robo (LBIndex) faça um GET para:
http://<ip>:9200/<index>/<db_name>/_search
Exemplo:
curl 'http://127.0.0.1:9200/pgfn/db_reg_anot_teses/_search'
...Para verificar a se determinado índice foi criado faça um GET para (estará no item mappings):
http://<ip>:9200/_mapping
Exemplo:
curl 'http://127.0.0.1:9200/_mapping'
DICA III: Configurar o índice de buscas para o vocabulário latino...
(Recomendamos, preferencialmente, para tratar a necessidade em pauta utilizar o procedimento descrito na seção Configurar LBIndex no item "Nota".)
(Recomendamos os procedimentos abaixo apenas no caso ter problemas com buscas que envolvem caracteres latinos (ç, á, ã...) e caixa de texto (alta/baixa)!)
Criar índice (caso não esteja criado)...
curl -XPUT 'http://<ip>:9200/<index>'
Exemplo:
curl -XPUT 'http://127.0.0.1:9200/pgfn'
Fechar o índice...
curl -XPOST 'http://<ip>:9200/<index>/_close'
Exemplo:
curl -XPOST 'http://127.0.0.1:9200/pgfn/_close'
Atualizar as configurações do índice...
curl -XPUT 'http://<ip>:9200/<index>/_settings' -d '{"index.analysis.analyzer.default.tokenizer":"standard","index.analysis.analyzer.default.filter.0":"lowercase","index.analysis.analyzer.default.filter.1":"asciifolding"}'
Exemplo:
curl -XPUT 'http://localhost:9200/pgfn/_settings' -d '{"index.analysis.analyzer.default.tokenizer":"standard","index.analysis.analyzer.default.filter.0":"lowercase","index.analysis.analyzer.default.filter.1":"asciifolding"}'
Abrir o índice...
curl -XPOST 'http://<ip>:9200/<index>/_open'
Exemplo:
curl -XPOST 'http://localhost:9200/pgfn/_open'
(Para reindexar os conteúdos com as novas configurações proceda conforme consta em Recriar indexação LBIndex!)
DICA IV: Deletar indexação de uma base (ElasticSearch)...
curl -XDELETE 'http://<ip>:9200/<index_name>/<base_name>'
Exemplo:
curl -XDELETE 'http://127.0.0.1:9200/pgfn/db_reg_anot_teses'
Deletar uma indexação com todas as suas bases (ElasticSearch)...
curl -XDELETE 'http://<ip>:9200/<index_name>'
Exemplo:
curl -XDELETE 'http://127.0.0.1:9200/pgfn'
5.9 Recriar indexação LBIndex
Alterne para o usuário postgres...
sudo su postgres
... abra a base...
psql <base_name>
Exemplo:
psql xxx
... e "limpar" o campo "dt_idx" da base a ser reindexada...
update lb_doc_<base_name> set dt_idx=null;
Exemplo:
update lb_doc_db_reg_anot_teses_arq set dt_idx=null; update lb_doc_db_reg_anot_teses set dt_idx=null; update lb_doc_db_access set dt_idx=null; update lb_doc_db_logs set dt_idx=null;
Após realizar este procedimento o robo LBIndex vai reindexar os documentos em alguns minutos!
DICA: Como último recurso caso o LBIndex não esteja indexando conteúdo, tente deletar a base de logs e reinicia-lo!
Execute este GET para o LBGenerator...
curl -XDELETE 'http://<ip>/lbgenerator/log_lbindex/doc?$$={"limit": null}'
Exemplo:
curl -XDELETE 'http://127.0.0.1/lbgenerator/log_lbindex/doc?$$={"limit": null}'
(Você pode usar algum "rest client" para executar o comando citado aqui. Recomendamos o "Postman" (extensão do Chrome) ou o "curl" conforme consta no exemplo!)
5.10 Dicas extra
5.10.1 Enviar arquivos via SFTP:
sftp <user>@<hostname>
put <caminho_pasta_origem_mais_nome_arquivo> [pasta_destino]
bye
5.10.2 Acesso remoto com SSH:
ssh <user>@<hostname>
5.10.3 Edição básica com o vi
- Para abrir o arquivo para edição no vi tecle "i";
- Para colar texto no terminal use "Ctrl+Shift+v";
- Para sair da edição tecle "Esc";
- Para salvar as alterações e sair tecle ":", digite "wq" e tecle "Enter";
- Para pesquisar um valor tecle "/" e digite ou cole o valor a ser procurado.