Programación SIG

viernes, septiembre 08, 2006

Instalación Mapserver en Linux

Rebuscando en el disco duro, he dado con este documento que generé hace un par de años. No contempla las últimas versiones, pero puede servir de guía para alguien.

INSTALACIÓN DE UN SERVIDOR DE MAPAS OPEN SOURCE BASADO EN MAPSERVER EN SISTEMAS LINUX

1. Requisitos previos
Para instalar Mapserver en Linux, necesitaremos compilar los fuentes del programa, así como las librerías necesarias para su funcionamiento. Por lo tanto, el sistema ha de tener instalado el compilador de C GNUCompiler (gcc), se recomienda una versión actual, y también el programa MAKE para generar el script de instalación. Estos programas son bastante estándar y vienen incluídos en todas las distribuciones actuales de Linux. Por otro lado, ya que vamos a servir mapas por internet, será necesario tener un servidor web, la opción lógica y más recomendable es Apache. Mapserver se compilará como un script CGI que Apache utilizará para procesar las peticiones de mapas.

2. librerías necesarias
Las librerías necesarias para que funcione Mapserver son GD (librería de gráficos) y poco más, puesto que el resto son opcionales. Sin embargo, la funcionalidad queda muy pobre si no instalamos al menos las de uso más común. Nosostros hemos instalado las siguientes:

- GD : instalada con el sistema operativo (opción recomendada), en nuestro caso SUSE 9.1 Professional
- PROJ4: librería que permitirá la reproyección de datos al vuelo, si los datos que se le solicitan a Mapserver no están en el mismo Sistema de Proyección. Evidentemente se produce una penalización en el rendimiento, pero es una opción interesante debido a su flexibilidad, sobre todo si pensamos en servicios OGC Web Map Service en "cascada".
- GDAL & OGR : permite manejar multitud de formatos tanto vectoriales como ráster, es una librería estándar de uso muy común.
- PostGIS: necesaria si queremos tener un servidor con este formato espacial. En teoría sólo es necesario tener instaladas las librerias cliente de PostgreSQL para poder acceder a un servidor de datos Postgis, pero hemos preferido instalar la base de datos en el mismo servidor que atiende las peticiones de mapas.
- CURL : librería de utilidades de transferencia de información a través de la web.

3. Instalación de librerías

GD.
En este caso, simplemente hemos instalado el paquete binario que venía con nuestra distribución. Esto puede variar de una distribución de Linux a otra, en SUSE es muy sencillo realizarla mediante el uso de YAST2.

PROJ4.
Esta librería la descargamos de internet (http://proj.maptools.org/) y la compilamos e instalamos a mano. Para ello ejecutamos los comandos estándar de instalación de programas en Linux

tar -zxvf proj-4.4.8.tar.gz
cd proj-4.4.8
./configure
make
make install (como root)

Para comprobar que hemos instalado correctamente la librería, escribimos en un terminal proj, deberíamos obtener una respuesta similar a la siguiente:

Rel. 4.4.8, 3 May 2004
usage: proj [ -beEfiIlormsStTvVwW [args] ] [ +opts[=arg] ] [ files ]

GDAL & OGR.
Descargaremos la librería GDAL de internet (http://gdal.org/dl/) y realizaremos una instalación estándar :

tar -zxvf gdal-1.2.3.tar.gz
cd gdal-1.2.3
./configure
make
make install (como root)

POSTGIS.

Esta es la instalación más larga y compleja, porque vamos a instalar un servidor de datos PostGIS completo. Para ello lo mejor es leer el manual de instalación de PostGIS, presentamos aquí un resumen del proceso de instalación, dividido en tres partes:

1)Instalación de librerías necesarias
PostGIS puede hacer uso de la librería PROJ4 para proyectar datos almacendados en la base de datos y de la librería GEOS para implementar funciones de SIG (Buffer, Union, etc.) según el estándar OGC Simple Features for SQL.
La librería PROJ4 ya la hemos instalado en un paso anterior. Procederemos a instalar la libreria GEOS (http://geos.refractions.net/) . Primero la descomprimimos, viene en formato bz2. Para esto, hemos utilizado el navegador de arcvhivos konqueror, instalado con nuestra distribución de linux. Posteriormente realizamos una instalación estándar:

./configure
make
make install (como root)

2) Instalación del servidor de base de datos PostgreSQL (http://www.postgresql.org/)
Aunque nuestra distribución de Linux incorpora esta base de datos, la tenemos que instalar desde código fuente porque es necesario tener el árbol de instalación para parchear posteriormente la base de datos con la extensión espacial PostGIS.

Para instalar la base de datos con soporte para GEOS, realizaremos un link explícito entre PostgreSQL y la librería estándar de C++, para evitar problemas. El procedimiento de instalación será el siguiente:

LDFLAGS=-lstdc++ ./configure --enable-debug
gmake check (opcional, realiza test de regresión de la instalación y del funcionamiento del servidor de base de datos)
gmake
gmake install (como root)

Además, tendremos que poner la siguiente variable de entorno en el fichero .bashrc (o equivalente):

LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH

También podemos ejecutar el siguiente comando (como root):
/sbin/ldconfig /usr/local/pgsql/lib

Por último, hay que añadir la ruta de los ejecutables a la variable de entorno PATH. Esto último no es imprescindible para el funcionamiento del servidor de base de datos pero resulta más cómodo, para poder acceder desde cualquier directorio

PATH=/usr/local/pgsql/bin:$PATH
export PATH

Creamos una cuenta de usuario que maneje el servidor postgres (usualmente postgres)

mkdir /usr/local/pgsql/data (directorio donde se almacenarán los datos)

Como root:

mkdir /home/postgres
adduser postgres -d /home/postgres
chown postgres /usr/local/pgsql/data

Como postgres:

initdb -D /usr/local/pgsql/data
postmaster -i -D /usr/local/pgsql/data
createdb (creamos base de datos sig
psql (conectamos a la base de datos de prueba)


3) Instalación de la extensión espacial PostGIS.

Descargamos la librería postgis de internet (http://postgis.refractions.net/) y la descomprimimos:

tar -zxvf postgis-0.9.0.tar.gz

A continuación movemos el directorio postgis-0.9.0 al directorio contrib del árbol de código fuente de PostgreSQL. Una vez dentro de este directorio, ejecutamos como root:

make
make install

Como usuario postgres, desde el directorio de postgis:

psql -f postgis.sql -d
psql -f spatial_ref_sys.sql -d

CURL
Hemos instalado la librería que venía con nuestra distribución.

4. Instalación de mapserver (http://mapserver.gis.umn.edu/)
Una vez descargado de internet, lo descomprimimos:

tar -zxvf mapserver-4.2.4.tar.gz
cd mapserver-4.2.4

Existen varias opciones de configuración para la compilación de mapserver. Todas ellas vienen explicadas en el archivo README.CONFIGURE que se encuentra en el directorio de configuración e instalación. Nosotros hemos utilizado el siguiente comando:

./configure --with-proj --with-gdal --with-ogr --with-postgis=/usr/local/pgsql/bin/pg_config --with-wfs --with-wmsclient --with-wfsclient --with-curl-config
make

Para realizar la instalación en Apache, copiamos el archivo mapserv en el directorio cgi-bin del servidor web. Con esto queda instalado y configurado mapserver con las opciones que hemos elegido. Para servir mapas a través de la web tan sólo necesitaremos crear un fichero .map que configure las capas a servir, formatos, etc.

3 Comments:

  • Juan el tutorial esta increible... la verdad es muy practico y entendible. Solo tengo una duda, cuando pones "Para realizar la instalación en Apache, copiamos el archivo mapserv en el directorio cgi-bin del servidor web." podrias especificar cual es concretamente el archivo mapserv y donde se encontraria?? .... saludos y te felicito por tu blog

    By Blogger jose, at 1:12 a. m.  

  • Cual de los archivos de mapserv se copia al directorio cgibin

    By Blogger edukoski, at 3:40 a. m.  

  • Cual de los archivos de mapserv se copia al directorio cgibin

    By Blogger edukoski, at 3:40 a. m.  

Publicar un comentario

<< Home