TUTORIAL - SERVIDOR DE MAPAS
INTRODUÇÃO
Os passos descritos nesse tutorial são fruto da experiência obtida na realização de tais procedimentos para instalação de um Servidor de Mapas, sendo que tais procedimentos podem variar de acordo com o sistema operacional, distribuição, e versão dos pacotes utilizados. Os passos seguidos foram aplicados na distribuição linux Slackware 10.0.
Este tutorial não inclui passos de instalação do Linux, para tais detalhes consulte a documentação da sua distribuição.
No Servidor de Mapas, podem ser utilizados diversos recursos, como customização da interface, utilizando recursos de JavaScript, PHP, entre outras recursos dinâmicos, além da disponibilização dos dados geográficos, fazendo a opção de utilização de consulta em arquivos shape ou banco de dados robustos, como o PostGreSql. Neste projeto, um primeiro passo foi a realização de teste de conceito, apenas com consulta de arquivos shapes e customização de interface gráfica, estendendo-se a consulta e alimentação de banco de dados. As informações contidas neste tutorial incluem, ainda que superficialmente, a utilização de banco de dados.
INSTALAÇÃO E CONFIGURAÇÃO
É sabido que para a instalação e configuração é necessária autenticação como usuário com privilégios de administrador (root).
Pacotes são necessários para instalação e configuração do Servidor de Mapas: - Apache 1.3.31 - GD 2.0.33 - Geos 2.1.1 - MapServer 4.4.1 - Php 4.3.10 - PhpPgAdmin 3.5.1 - PostGis 0.9.1 - PostGreSql 7.4.6 - Proj 4.4.9
Estes pacotes podem ser facilmente na Internet, no entanto pode-se consultar os sites listados na referencia deste.
Uma vez feito download dos pacotes, iremos proceder a instalação. PACOTES - INSTALAÇÃO E VERIFICAÇÃO
Apache
O primeiro pacote a ser instalado é do Apache. Ele constitui o servidor Web. O primeiro passo é saber se, na instalação da distribuição, o apache foi instalado corretamente. Para tanto, deve abrir o navegador e digitar: http://localhost/
Laboratório de Geotecnia – EP UFBA Uma página semelhante a Figura 1 deve ser mostrada no navegador, caso o apache esteja instalado, e sendo executado.
Figura 1 – Tela inicial do apache
Algumas linhas deverão estar incluídas no arquivo de configuração do apache – httpd.conf, para isso: Edite o arquivo de configuração:
# vim /etc/apache/httpd.conf
Neste arquivo deve ser incrementado a linha de comando:
Include /etc/apache/mod_php.conf
A linha “DocumentRoot” destina-se a colocar o endereço de onde serão alocados as pastas e arquivos disponibilizados. Como sugestão mantenha /var/www/htdocs
Modificar “Options”, logo abaixo a linha do ScriptAlias, de None. para ExecCGI. Esta configuração do CGI-Bin
permitirá, ao final dos processos, a execução do MAPSERVER.
Por último deve ser acrescentado na linha “DirectoryIndex” a opção index.php Proj-4
Este pacote oferta possibilidade de se trabalhar com vários sistemas de projeção compatibilizando assim visualizar no navegador dados em sistemas diferentes.
Descompacte o Proj4 utilizando:
# tar -xzvf proj-4.4.9.tar.gz
Para instalação deste pacote proceda:
# ./configure # make # make install
Geos
Este pacote assemelha-se a ferramenta "Geoprocessing Wizard" que a ESRI implementou. Dá suporte a Cliping, Union, Merge...
Descompacte o Geos utilizando:
# tar -xJvf geos-2.1.1.tar.bz2
Para instalação deste pacote proceda:
# ./configure # make # make install
Agora, será instalado o primeiro pacote que faz referencia ao banco de dados:
PostgreSql
Descompacte o PostgreSql utilizando:
# tar -xzvf postgresql-7.4.6.tar.gz
Para instalação deste pacote proceda:
# ./configure # make # make install
Configuração:
Configure o PostgreSql, para ser executado na inicialização do sistema. Para a distribuição Slackware os passos são os seguintes:
Crie um usuário postgres:
# adduser postgres
Obs.: Na criação do usuário postgres, é importante lembrar que este usuário e senha, serão utilizados posteriormente para criação, edição e visualização do seu banco de dados através do pacote Phppgadmin.
Crie uma pasta de dados para o banco, e mude o usuário do diretório:
# mkdir /usr/local/pgsql/data
# chown postgres /usr/local/pgsql/data
Mude para usuário postgres:
# su - postgres
Vincule o DB a esta pasta:
# /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Crie um arquivo rc.postgres, dentro do diretório /etc/rc.d/ com o seguinte conteúdo: # !/bin/sh
# Script para inicializar e terminar o PostgreSQL SERVER=/usr/local/pgsql/bin/postmaster
PGCTL=/usr/local/pgsql/bin/pg_ctl PGDATA=/usr/local/pgsql/data OPTIONS=-i
Laboratório de Geotecnia – EP UFBA case "$1" in
start)
echo -n "Inicializando o PostgreSQL..."
su - postgres -c "nohup $SERVER $OPTIONS -D $PGDATA >$LOGFILE 2>&1 &" ;;
stop)
echo -n "Finalizando PostgreSQL..."
su - postgres -c "$PGCTL -D $PGDATA stop" ;;
*)
echo "Sintaxe: $0 {start|stop}" exit 1
;; esac exit 0
Mude a permissão deste arquivo para ser utilizado pelo usuário postgres:
# chmod 755 rc.postgres
Edite o /etc/rc.d/rc.M:
# vim /etc/rc.d/rc.M
Adicione no final do script essas linhas # Inicializa Servidor de Dados PostgreSql if [ -x /etc/rc.d/rc.postgres ]; then
. /etc/rc.d/rc.postgres start fi
Edite o /etc/rc.d/rc.0:
# vim /etc/rc.d/rc.0
Localize o local de descrição dos serviços dos servidores e adicione: # Finalizar o Servidor PostgreSql
if [ -x /etc/rc.d/rc.postgres ]; then . /etc/rc.d/rc.postgres stop fi
Edite o /etc/rc.d/rc.6:
# vim /etc/rc.d/rc.6
Localize o local de descrição dos serviços dos servidores e adicione: # Finalizar o Servidor PostgreSql
if [ -x /etc/rc.d/rc.postgres ]; then . /etc/rc.d/rc.postgres stop fi
Edite o /etc/rc.d/rc.K:
# vim /etc/rc.d/rc.K
# Finalizar o Servidor PostgreSql if [ -x /etc/rc.d/rc.postgres ]; then . /etc/rc.d/rc.postgres stop fi
Depois de concluído essas operações, você deve verificar se está tudo de acordo.
-Reinicie o computador. Lá deverá constar na inicialização a mensagem "Inicializando o PostgreSQL...".
- uma vez iniciado, verifique no arquivo /usr/local/pgsql/data/postmaster.log se o servidor foi iniciado corretamente.
Deverá constar mensagem "database system is ready".
Caso alguns destes passos não estejam de acordo, verifique a instalação, ou consulte a documentação do PostgreSql.
Obs.: De modo a facilitar a operação deve-se criar um banco de dados teste para dar continuidade a instalação dos outros pacotes. Proceda a seguinte operação para criação do banco teste:
Primeiro mude para o usuário postgres
# su postgres
Digite para criação do banco:
# /usr/local/pgsql/bin/createdb test
Deverá aparecer uma mensagem informando que o banco foi criado. Utilize desse comando para verificação:
# /usr/local/pgsql/bin/psql test
Nessa linha de comando poderá realizar as funções manualmente. Digite: "\q" para sair. Uma vez criado o banco "test" prosseguiremos com a instalação do pacote PostGis.
PostGis
Retorne ao usuário root:
# exit
Descompacte o PostGis dentro da pasta contrib, criada na descompactação do PostGreSql. No nosso caso acessamos a pasta contrib:
# cp postgis-0.9.1.tar.gz postgresql-7.4.6/contrib/ # cd /root/downloads/postgresql-7.4.6/contrib # tar -xzvf postgis-0.9.1.tar.gz
Dentro da pasta contrib, acesse o diretório postgis-0.91 criado:
# cd postgis-0.9.1
Edite o arquivo Makefile com algum editor:
# vim Makefile
Confirme que as variáveis USE_PROJ e USE_GEOS estejam setadas para 1(true). Confirme que as variáveis PROJ_DIR e GEOS_DIR estejam setadas para /usr/local/ .
Laboratório de Geotecnia – EP UFBA Para instalação destes pacotes proceda:
# make # make install
Configuração do PostGis: Mude para usuário postgres:
# su postgres
Digite essas linhas de comando:
# /usr/local/pgsql/bin/createlang plpgsql test
# /usr/local/pgsql/share$ /usr/local/pgsql/bin/psql -f /usr/local/pgsql/share/postgis.sql -d test
Obs.: Ao finalizar deverão aparecer diversas informações de criação de tabelas e funções associadas ao PostGis. Até o momento os pacotes relativos a banco de dados já foram instalados. Os pacotes que se seguirão, ditos pacotes básicos, serão de fundamental importância, pois caso se faça a opção de um servidor de mapas apenas com consulta de arquivos shape, eles deverão estar instalados.
GD
Este pacote é uma biblioteca gráfica e é utilizada pelo PHP, para criação de imagens e do MAPSERVER, no nosso caso para a criação dos mapas. Compilaremos a GD, com possibilidade de imagens nos formatos Jpeg, Png, Tiff e com a Freetype para inserção de textos utilizando fontes TrueType nas imagens.
Descompacte:
# tar -xzvf gd-2.0.33.tar.gz
Dentro do diretório gd-2.0.33 criado:
# cd gd-2.0.33
Informe as diretivas de compilação necessárias:
# ./configure --with-ttf=/usr --with-jpeg=/usr/lib --with-tiff=/usr/lib --with-png=/usr/lib
Para compilação deste pacote proceda:
# make # make install PHP
Caso haja um pacote do PHP previamente instalado pela distribuição, deve-se removê-lo. Isto é necessário para que não haja conflitos e problemas futuros. Há necessidade de recompilação do pacote PHP para que se faça uso do PHPPgAdmin. Continuando,
Descompacte:
# tar -xzvf php-4.3.10.tar.gz
Dentro do diretório php-4.3.10 criado:
# cd php-4.3.10
Informe as diretivas de compilação necessárias:
# ./configure '--prefix=/usr' '--disable-static' '--sysconfdir=/etc' discard-path' '--with-config-file-path=/etc/apache' enable-safe-mode' with-openssl' with-mhash' enable-bcmath' with-bz2' with-pic' enable-calendar' enable-ctype' with-gdbm' with-db3' enable-dbase' enable-ftp' with-iconv' with-exif' with-gd' enable-gd-native-ttf' with-jpeg-dir=/usr' with-png' with-gmp' with-mysql=shared,/usr' with-gettext=shared,/usr' with-expat-dir=/usr' with-xml' enable-wddx' with-mm=/usr' trans-sid' shmop' sockets' '--with-regex=system' sysvsem' sysvshm' yp'
'--enable-'--with-pgsql=/usr/local/pgsql'
Para compilação deste pacote proceda:
# make # make install
Obs.: Note que há necessidade de recompilar o PHP para que ele reconheça os outros requisitos, como o pacote do PHPpgAdmin e do PostgreSql.
O mapserver funciona como uma aplicação CGI. Caso fizesse a opção de desinstalar o pacote, o que não é recomendável, deve-se recompilar além do PHP também o Apache, com algumas diretivas, o que torna uma opção complexa para iniciantes.
PhpPgAdmin
Copie o arquivo phpPgAdmin-3.5.1.tar.gz para o diretório que foi escolhido como "DocumentRoot", configurado no Apache.
No nosso caso foi utilizado o diretório padrão do Slackware - /var/www/htdocs. Copiando:
# cp phpPgAdmin-3.5.1.tar.gz /var/www/htdocs
Descompactando
# tar -xzvf phpPgAdmin-3.5.1.tar.gz
Você pode testar o funcionamento pelo navegador, acessando:
http://localhost/phpPgAdmin/
Figura 2 – Tela inicial do phpPgAdmin
Laboratório de Geotecnia – EP UFBA Obs.: Por motivos de segurança, o usuários root e postgres não terão permissão de acessar utilizando do recurso do phpPgAdmin.
Para acessos deverá fazer uma das duas opções
1 - Poderá modificar as permissões de segurança a fim de que usuários root e postgres possam autenticar: edite o arquivo "config.inc.php" contido na pasta "/var/www/htdocs/phpPgAdmin/conf"
# vim /var/www/htdocs/phpPgAdmin/conf/config.inc.php
Sete a opção false na variavel $conf['extra_login_security'].
2 – Pode-se criar usuários diferentemente do root ou postgres para que estes autentiquem no phpPgAdmin e execute as tarefas.
Mapserver
Descompacte:
# tar -xzvf mapserver-4.4.1.tar.gz
Dentro do diretório mapserver criado:
# cd mapserver-4.4.1
Informe as diretivas de compilação necessárias:
# ./configure --with-proj=/usr/local --with-postgis=/usr/local/pgsql/bin/pg_config --enable-force-freetype1
Para compilação deste pacote proceda:
# make # make install
Ao finalizar a instalação copie o binário "mapserv" criado para o diretório cgi-bin da distribuição, em nosso caso:
# cp mapserv /var/www/cgi-bin/
Acesse o endereço abaixo no seu navegador para verificar se a instalação ocorreu com sucesso:
http://localhost/cgi-bin/mapserv?
A mensagem a seguir deverá ser mostrada:
No query information to decode. QUERY_STRING is set, but empty.
Há uma aplicação de demonstração na seção de download do site do MAPSERVER, que para verificação de recursos básicos se apresenta eficiente.
CONSIDERAÇÕES
O uso da linguagem PHP como ferramenta de customização, no início do projeto, apresentava-se como uma opção clara e facilitadora do processo, porém segundo os estudos e pesquisas realizados existe um bug ao utilizar no MAPSERVER, o PHP como módulo do Apache. Além deste fato, o uso de JavaScript, como ferramenta de customização, mostrou-se mais eficiente que PHP/MapScript.
SÍTIOS CONSULTADOS Slackware – Distribuição LINUX www.slackware.org Apache http://www.apache.org/ PHP – Download e Documentação www.php.net MAPSERVER Brasil http://mapserver.cttmar.univali.br/
MAPSERVER - University of Minnesota http://mapserver.gis.umn.edu/
GD
http://www.boutell.com/gd/ Proj
http://www.remotesensing.org/proj MapLab – Editor de Arquivos MAP http://www.maptools.org/maplab/ Lista de Usuários MAPSERVER
http://lists.gis.umn.edu/mailman/listinfo/mapserver-users Lista de Desenvolvedores MAPSERVER
http://lists.gis.umn.edu/mailman/listinfo/mapserver-dev FreeGis http://freegis.org/ MapTools http://www.maptools.org/ PostGis http://postgis.refractions.net/ PostgreSql – Brasil http://www.postgresql.org.br/