Instalar a suíte OpenGEO no Linux – Ubuntu

Publicado: 01/05/2012 em Linux, Programação, Serviços IP
Tags:, , , ,

Neste post estaremos focando a OpenGeo Suite –  Community Edition.   A suíte OpenGeo, Community Edition, é uma versão completa da suíte OpenGeo. Está licenciada através da GNU General Public License (GPL). A OpenGeo é uma divisão geoespacial da OpenPlans, uma organização sem fins lucrativos que tem a proposta de usar a tecnologia para contribuir com a mudança da maneira com que as cidades e os cidadãos interagem. A opção pelo código aberto, dados abertos e mobilidade sustentável é entendida como possibilidade para melhorar milhões de vidas. A organização tem oferecido assistência técnica a órgãos públicos, e construído comunidades em torno de iniciativas que semeiam um ecossistema aberto de ferramentas de tecnologias de interesse público.

No momento da publicação deste post, o download do OpenGeo Community Edition pode ser obtido aqui.  Existe também instruções para instalação da suíte através do apt para o Linux/Ubuntu 10.04 e 10.10 (e mais recentes) em http://suite.opengeo.org/opengeo-docs/usermanual/installation/linux/suite.html:

1. Iniciar importando a chave GPG OpenGeo:

# wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -

2. Adicionar o repositório APT OpenGeo:

# echo "deb http://apt.opengeo.org/ubuntu lucid main" >> /etc/apt/sources.list

3. Atualizar APT:

# apt-get update


4. Instalar o pacote da suíte OpenGeo (opengeo-suite):

# apt-get install opengeo-suite

5. Lançar o  “Dashboard OpenGeo Suite”
Com isto pode-se verificar se a instalação teve sucesso. Acessar a seguinte URL:
http://localhost:8080/dashboard/

6. Acessar as aplicações web

Application URL
OpenGeo Suite Dashboard  http://localhost:8080/dashboard/
GeoServer  http://localhost:8080/geoserver/
OpenGeo Suite Documentation  http://localhost:8080/docs/
GeoExplorer  http://localhost:8080/geoexplorer/
Styler  http://localhost:8080/styler/
GeoEditor  http://localhost:8080/geoeditor/
OpenGeo Recipe Book  http://localhost:8080/recipes/

No caso da aplicação GeoServer, para fazer login, utilize:
usuário: admin
Password: geoserver

Uma verificação interessante é requisitar o serviço WFS (GetCapabilities) do servidor:
http://<ip-servidor&gt;:8080/geoserver/wfs?request=GetCapabilities

7. Accessar o PostGIS

O acesso ao PostGIS pode ser feito de duas maneiras: via linha de comando atarvés da aplicação psql, ou via uma interface gráfica com a aplicação pgadmin3. No caso do usuário ser não familiar com o PostGIS, iniciar com o pgadmin3.  A versão atual do PostGIS é acessível através da porta 5432, com usuário e senha de administrador opengeo / opengeo.

8. Iniciar/Parar a suíte OpenGeo e PostGIS

GeoServer, GeoExplorer, e todos os outros containers web-based incluindo a documentação estão instalados dentro da instância Tomcat existente. Iniciar e parar estas aplicações são, portanto, realizadas gerenciando a instância padrão do Tomcat. Tomcat é instalado como um serviço de nome tomcat6, e pode ser gerenciado da seguinte forma:

/etc/init.d/tomcat6 start
/etc/init.d/tomcat6 stop

PostGIS é instalado também como um serviço, com o nome postgresql, e pode ser gerenciado da mesma maneira que o Tomcat:

/etc/init.d/postgresql-8.4 start
/etc/init.d/postgresql-8.4 stop

Ambos os serviços são iniciados e configurados para serem executados automaticamente quando a suíte OpenGeo é instada.

9. Usando o PgAdminIII
a) Se desejar utilizar o PgAdminIII a partir da própria máquina em que está instalado o Opengeo-suite, utilize inicialmente a seguinte configuração:
Máquina: localhost
porta:   5432
Manutenção do BD: postgres
Nome de usuário: opengeo
Senha: opengeo

b) Utilizando o PgAdminIII de outra máquina e tentando acessar o postgres como usuário opengeo (com a mesma configuração do caso anterior), ocorrerá um erro conforme ilustra a figura a seguir.
Erro de acesso do PgAdminIII

Este erro significa que a tentativa de conexão ao servidor de banco Postgres foi bloqueada. Isto se deve ao fato de que o arquivo de configuração do Postgres não está permitindo conexão remota. Altere esta configuração em /etc/postgresql/8.4/main/postgresql.conf:

DE:
#listen_addresses = 'localhost'
PARA:
listen_addresses = '*'

Reinicie e Postgres:
# /etc/init.d/postgresql-8.4 restart

Agora, após a alteração do arquivo postgresql.conf, e tentando fazer a mesma conexão de uma máquina remota, obtemos um outro erro conforme ilustra a figura abaixo:

Erro do PgAdminIII devido configuração do pg_hba.conf

Isto se deve ao fato que no arquivo de configuração pg_hba.conf não foi previsto o acesso as bases do postgres a partir da máquina remota em uso. Há necessidade de habilitar o acesso a partir da máquina em uso (IP 192.168.0.106). Altere este arquivo em /etc/postgresql/8.4/main/pg_hba.conf inserindo a seguinte linha:

host all all 192.168.0.106/32 md5

Reiniciar o Postgres:
# /etc/init.d/postgresql-8.4 restart

Agora obtem-se sucesso na tentativa de acesso do PgAdminIII a partir de uma máquina remota a base de dados do Postgres (usando opengeo/opengeo).

10. Usando o PhpPgAdmin
Adicionalmente, caso se queira, pode ser instalado também o PhpPgAdmin. Neste caso, proceda da seguinte forma:
a) Instalar o Apache e PHP
Detalhes desta tarefa podem ser encontrados no post deste blog “Instalar servidor LAMP (Linux + Apache + PHP + MySQL) no Debian“. Em resumo:

# apt-get install apache2 php5
# /etc/init.d/apache2 restart

b) Testar o Apache
Acessar o endereço http://<IP_servidor&gt; . Se uma mensagem “It Works” for mostrada, como a figura abaixo, o Apache está funcionando bem.

Tela inicial do Apache

Tela inicial do Apache

c) Testar o funcionamento do Apache + PHP

Para isto, basta criar o arquivo /var/www/index.php com o seguinte conteúdo:

<?php
phpinfo();
?>

Acessar o endereço http://<IP_servidor>/index.php . Se as informações de configuração do PHP forem mostradas, isto significará que o Apache e o interpretador PHP foram instalados corretamente e estão funcionando.

d) Instalar o PhpPgAdmin

# apt-get install phppgadmin

Acessar o endereço http://<IP_servidor>/phppgadmin/
Uma mensagem de erro deve ser mostrada, caso não se esteja trabalhando em “localhost” (mas sim, quando instalando o PhpPgAdmin numa máquina remota): “client denied by server configuration: /usr/share/phppgadmin/”.

A mensagem de erro é fruto de uma regra de segurança: a configuração default é só permitir acesso ao PhpPgAdmin em localhost. Para solucionar este erro, edite o arquivo /etc/apache2/conf.d/phppgadmin da seguinte forma:

COMENTAR A LINHA: “allow from 127.0.0.0/255.0.0.0”
DESCOMENTAR A LINHA:  “#allow from all”

OBS: ou de uma forma mais segura, restrinja mais o acesso utilizando a notação CIDR:
allow from 192.168.0.100/24 (neste exemplo, permitindo apenas as máquinas em uma rede classe C 192.168.0.xxx fazerem acesso ao PhpPgAdmin.

E claro, falta reiniciar o Apache pelo comando “# /etc/init.d/apache2 restart“.
Pronto, através do navegador acessar a URL do PhpPgAdmin. Obtendo a tela abaixo significa que está tudo pronto para o aplicativo ser utilizado normalmente.

Tela inicial do PhpPgAdmin

e) Fazer login no PhpPgAdmin
Fornecer as mesmas informações quando do login no uso do PgAdminIII:
Nome do usuário: opengeo
Senha: opengeo

11. Importar arquivos shapefiles para o PostGis
Instalada a suíte OpenGeo, deve-se importar os arquivos shapes para o banco de dados PostGIS e visualizá-los com a suíte.

a) Criar uma nova base de dados para deter as informações dos arquivos shapes

postgres$ createdb -T template_postgis -O opengeo teste

No caso acima, utilizou-se a tabela template “template_postgis” que já é padrão na instalação da suíte OpenGeo para criar um banco intitulado “teste”. No caso, o proprietário deste banco é o usuário “opengeo” (que também é o default da instalação da suíte OpenGeo).

b) Criar os arquivos .sql
Após criar a nova base de dados espacial, vamos inserir dados no banco de dados PostGIS/PostgreSQL usando o carregador/descarregador de arquivos ESRI Shape (shp2pgsql). O carregador de dados shp2pgsql converte arquivos ESRI Shape em declarações adequadas SQL para inserção em seguida em um banco de dados PostGIS/PostgreSQL (executando este arquivo sql) tanto no formato de geometria como no de geografia. Vejamos um exemplo:

$ shp2pgsql -s 4674 -W LATIN1 VARJAO_PDAD.shp > varjao.sql
$ psql -d teste -h localhost -U opengeo -f varjao.sql

OBS:
i) a chave “-s”:
Dará ao PostGIS a informação do “Spatial Reference System Identifier” (SRID) dos dados. É um valor único usado para identificar inequivocamente definições de sistemas de coordenadas espaciais locais, projetadas e não projetadas. Estes sistemas de coordenadas formam o coração de todas as aplicações de SIG. O “Sistema de Referência Geocêntrico para as Américas” (SIRGAS) é o sistema de referenciamento espacial padrão do Brasil, definido pelo IBGE. Seu SRID, num sistema geográfico, é EPSG: 4674. Na prática o SIRGAS utiliza o mesmo elipsóde de referência do WGS84 – GRS 1980.

ii) a chave “-W”:
Especifica a codificação dos caracteres utilizada nos atributos dos arquivos shapes. Se esta opção é utilizada, a saída será codificada em UTF-8. A forma como fora utilizada no exemplo acima é muito comum quando se importa arquivos que foram gerados utilizando máquinas com sistema operacional Windows.

12. Automatizar a importação de arquivos para o PostGis
a) Gerar um arquivo texto “lista_arquivos_shp.txt” com o nome de todos os arquivos shapes (que devem estar dentro de uma única pasta).
Existindo uma grande quantidade de arquivos shapes, é mais prático criar um script para gerar todos os arquivos sql em lote. Execute o seguinte comando:
$ find <caminho>  -iname "*.shp" > lista_arquivos_shp.txt

Onde caminho é o endereço onde estão os arquivos shapes.  Exemplos:
$ find ../  -iname "*.shp" > lista_arquivos_shp.txt  ; se os arquivos estiverem na pasta superior
$ find  -iname "*.shp" > lista_arquivos_shp.txt      ; se os arquivos estiverem na pasta atual

b) Com o arquivo anterior criado, vamos gerar os arquivos sql de forma automática, correspondentes a cada arquivo shape existente.
Primeiro, vamos criar um arquivo de script com o seguinte conteúdo:

#!/bin/bash
if [ -e $geracao_sql.log ]; then
rm geracao_sql.log
fi
while read linha; do
novo=$(basename $linha)
novo=${novo%%.*}
echo "\n ------ Gerando o arquivo "$novo".sql"
echo "gerando o arquivo "$novo".sql" >> geracao_sql.log
shp2pgsql -s 4674 -W LATIN1 "$linha" > $novo."sql"
done < lista_arquivos_shp.txt

Agora é só mandar executar o script.   Mensagens serão enviadas para a tela, e será gerado um arquivo de log do processo de geração dos arquivos sql (geracao_sql.log) .

Se desejar verificar a quantidade de arquivos na pasta, comparando as quantidades de arquivos .shp e .sql utilize os comandos:


$ ls <caminho>/*.shp | wc -l
$ ls <caminho>/*.sql | wc -l

c) Com os arquivos sql criados, executar estes arquivos para inserir os dados dos shapes no banco PostGIS.  Como podem existir vários arquivos sql, vamos realizar esta tarefa executando um arquivo de lote:

c.1) Gerar um arquivo texto “lista_arquivos_sql.txt” contendo o nome de todos os arquivos sql (os quais devem estar dentro de uma única pasta). Execute o seguinte comando:
$ find <caminho>  -iname "*.sql" > lista_arquivos_sql.txt

Onde caminho é o endereço onde estão os arquivos shapes.  Exemplos:
$ find ../  -iname "*.sql" > lista_arquivos_sql.txt  ; se os arquivos estiverem na pasta superior
$ find  -iname "*.sql" > lista_arquivos_sql.txt      ; se os arquivos estiverem na pasta atual

c.2) Preparar arquivo de autenticação (password) para que o arquivo de lote contendo comandos psql não seja interrompido a cada arquivo para solicitar ao usuário a senha de acesso ao banco.
O arquivo .pgpass no diretório home do usuário é um arquivo que pode conter senhas para ser usado para conexão que requer senha de acesso (e se nenhuma senha tenha sido especificada de outra forma). Desta forma o usuário PostgreSQL pode conectar no banco em localhost sem informar senha, pois a mesma já estará informada neste arquivo. Veja mais detalhes no manual do PostgreSQL.  O formato deste arquivo é o seguinte:

hostname:port:database:username:password

No nosso caso, o seu conteúdo será:

localhost:5432:*:opengeo:opengeo

Se for executar o arquivo de lote (descrito logo abaixo) como root, criar este arquivo em /root/.pgpass

ATENÇÃO: este arquivo deve ter obrigatoriamente a permissão 0600 (comando “$chmod 0600 .pgpass”). Se a permissão for mesnos restritiva que isto, o arquivo será ignorado.

c.3) Executar o arquivo de lote
Crie o arquivo de lote abaixo, e execute-o (comando “$sh inserir_postgis.sh”).  Dê atribuição de execução ao mesmo (comando “$chmod +x inserir_postgis.sh”).

#!/bin/bash
# script para inserir shape no banco PostGIS
# inserir_postgis.sh
if [ -e $inserir_postgis.log ]; then
rm inserir_postgis.log
fi
while read linha; do
novo=$(basename $linha)
# psql -a -L inserir_postgis.log -d teste -h localhost -U opengeo -f $novo
# psql -L inserir_postgis.log -d teste -h localhost -U opengeo -f $novo
psql -d teste -h localhost -U opengeo -f $novo
done < lista_arquivos_sql.txt

OBS: as duas linhas comentadas acima no comando psql se referem a opções do comando para gerar arquivo de log ou uma saída no console mais detalhada. Veja o manual do comando psql para mais detalhes (comando “$man psql”).
Bom proveito!

Referências:
1- Autenticação no PostgreSQL
2- PostgreSQL Prático
3- Documentação do PostgreSQL 8 – Autenticação de clientes
4- CIDR: Classless Inter-Domain Routing
5- Sistema de Referenciamento Espacial

comentários
  1. Albuquerque disse:

    O Valentina pode ser até legal. Desde que você não ligue para o fato de estar utilizando uma ferramenta proprietária. Os termos do licenciamento, que são bastante restritivos, podem ser lidos em http://bit.ly/1gBWoyp

  2. Mark disse:

    Eu gosto de usar com o PostgreSQL no linux – Free ferramenta Valentina Studio, faz tudo o que eu preciso, e faz isso muito bem http://www.valentina-db.com/en/valentina-studio-overview

Deixe um comentário, pois isto é muito motivante para continuarmos este trabalho

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s