Compilación de MapServer y PostGIS en Linux...

28
1 Proyecto de Documentación de MapServer en Español Como compilar MapServer y PostGIS en Linux y no morir en el intento… Hacerlo Autor: René F. Viancos S. Revisión 0.1 Email: [email protected] Introducción Para realizar esta titánica tarea, nos basaremos en la documentación existente en el sitio Web de MapServer, específicamente los documentos "Verbose Linux Install" y “Unix Compilation and Instalation”. Nuestra instalación esta enfocada a un sistema productivo, para ello utilizaremos un Sistema Operativo Linux, de la Línea Enterprise, llamado CentOS, el cual es un Clon OpenSource de las soluciones Linux empresariales de RedHat, y 100% compatible con estas, con una gran ventaja, costo cero. También cubriremos la integración con unixODBC (para PHP y MapServer), para poder crear Layers Virtuales OVF, y FreeTDS, para poder mapear datos (x,y) de una Base de Datos No Espacial, por ejemplo, montada sobre el popular M$-SQLServer, dando por añadidura acceso directo a nuestro “PHP on Linux” hacia M$-SQLServer, un mal necesario . La instalación del Sistema Operativo escapa a los objetivos de este documento, pero pueden dirigirse al sitio de www.CentOS.org y obtener más información. En la instalación del S.O. debemos tener las siguientes consideraciones: Debe ser una instalación personalizada, para poder elegir que paquetes de software se instalan. No instalar Apache (Servidor Web). No instalar PHP. No instalar PostgreSQL. No instalar MySQL Instalar todas las librerías de desarrollo (paquetes xxxxx-devel.rpm) para no tener problemas en la compilación. (en revisiones futuras espero tener las librerías especificas requeridas, o espero el aporte de algún usuario) Instalar los compiladores de C y C++, y todas sus dependencias. cualquier otro tema lo arreglamos en el camino. (o sea, futuras revisiones de este documento)

Transcript of Compilación de MapServer y PostGIS en Linux...

Page 1: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

1

Proyecto de Documentación de

MapServer en Español

Como compilar MapServer y PostGIS en Linux y no morir

en el intento… Hacerlo ☺ Autor: René F. Viancos S. Revisión 0.1 Email: [email protected]

Introducción

Para realizar esta titánica tarea, nos basaremos en la documentación existente en el sitio Web de MapServer, específicamente los documentos "Verbose Linux Install" y “Unix Compilation and Instalation”.

Nuestra instalación esta enfocada a un sistema productivo, para ello utilizaremos

un Sistema Operativo Linux, de la Línea Enterprise, llamado CentOS, el cual es un Clon OpenSource de las soluciones Linux empresariales de RedHat, y 100% compatible con estas, con una gran ventaja, costo cero.

También cubriremos la integración con unixODBC (para PHP y MapServer), para

poder crear Layers Virtuales OVF, y FreeTDS, para poder mapear datos (x,y) de una Base de Datos No Espacial, por ejemplo, montada sobre el popular M$-SQLServer, dando por añadidura acceso directo a nuestro “PHP on Linux” hacia M$-SQLServer, un mal necesario ☺.

La instalación del Sistema Operativo escapa a los objetivos de este documento,

pero pueden dirigirse al sitio de www.CentOS.org y obtener más información. En la instalación del S.O. debemos tener las siguientes consideraciones:

• Debe ser una instalación personalizada, para poder elegir que paquetes de software se instalan.

• No instalar Apache (Servidor Web). • No instalar PHP. • No instalar PostgreSQL. • No instalar MySQL • Instalar todas las librerías de desarrollo (paquetes xxxxx-devel.rpm) para no tener

problemas en la compilación. (en revisiones futuras espero tener las librerías especificas requeridas, o espero el aporte de algún usuario)

• Instalar los compiladores de C y C++, y todas sus dependencias. • cualquier otro tema lo arreglamos en el camino. (o sea, futuras revisiones de este

documento)

Page 2: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

2

Compilación de Apache Web Server

Previo a la Compilación • Bajamos los fuentes desde http://httpd.apache.org y en nuestro caso instalaremos la

versión 2.2.3, descargamos el archivo httpd-2.2.3.tar.gz • Descomprimimos el archivo httpd-2.2.3.tar.gz con el siguiente comando: [root@localhost ~]# tar -xzf httpd-2.2.3.tar.gz -C /usr/local • Entramos en el directorio /usr/local/httpd-2.2.3 con el comando: [root@localhost ~]# cd /usr/local/httpd-2.2.3 Estos pasos se muestran en la Figura 1.

• Creamos un archivo de compilación llamado compile.sh (con vi o el editor que

gusten), el cual contendrá el texto del Script 1: ./configure \ --prefix=/usr/local/apache2 \ --enable-deflate \ --enable-info \ --enable-mime-magic \ --enable-rewrite \ --enable-so \ --enable-speling \ --enable-ssl \ --enable-unique_id \ --enable-usertrack \ --with-mpm=prefork \ --with-apxs2

Script 1: contenido de compile.sh para Apache

• Guardamos el archivo compile.sh (ESC, :x en VI ) y salimos del editor. • Cambiamos sus atributos para hacerlo ejecutable:

[root@localhost httpd.2.2.3]# chmod 755 compile.sh • Ejecutamos el archivo con el script de compilación:

[root@localhost httpd.2.2.3]# ./compile.sh

Figura 1

Page 3: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

3

Al final del proceso de configuración de la compilación deberíamos ver algo similar a lo que se muestra en la Figura 3:

Compilación

• Para construir los archivos ejecutables de Apache, ejecutamos make [root@localhost httpd.2.2.3]# make

y deberíamos ver secuencias de texto como se muestra en la Figura 4.

• Finalmente ejecutamos : [root@localhost httpd.2.2.3]# make install

Obteniendo secuencias de texto que se aprecian en la Figura 5.

Figura 3

Figura 4

Page 4: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

4

NOTA: Si tus secuencias de texto terminan como las que se aprecian en las capturas de pantalla, vamos por buen camino.

Pruebas de Funcionamiento • Para realizar esta tarea, debemos ejecutar el siguiente comando:

[root@localhost httpd.2.2.3]# /usr/local/apache2/bin/apachectl start

• Luego ejecutamos nuestro navegador de Internet donde ponemos la dirección IP

de nuestro servidor, en este caso la url es: http://192.168.92.128, como se aprecia en la Figura 6.

Figura 5

Figura 6

Page 5: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

5

Configuración del arranque automático de Apache Para hacer que nuestro Apache personalizado se inicie junto con los demás servicios

del sistema operativo, debemos realizar los siguientes pasos: • Copiar el script de control de Apache al directorio /etc/init.d :

[root@localhost ~]# cp /usr/local/apache2/bin/apachectl /etc/init.d/

• Después de copiar este archivo, procedemos a editarlo:

[root@localhost ~]# vi /etc/init.d/apachectl • Agregamos las siguientes líneas en azul:

#!/bin/sh # # chkconfig: - 85 15 # description: Apache is a Web server used to serve HTML and CGI. # processname: httpd # pidfile: /usr/local/apache2/logs/httpd.pid # # Copyright 2000 - 2005 The Apache Software Foundation or its licensors, as # applicable. . . .

• Luego registramos el script como servicio del sistema:

[root@localhost ~]# /sbin/chkconfig --add apachectl

Compilación de PostgreSQL

Previo a la compilación Para instalar este gran ORDBMS OpenSource, y porque no decirlo, el mejor,

debemos descargar el código fuente desde su sitio Web, http://www.postgresql.org y realizar los siguientes pasos:

• Bajar y descomprimir el archivo postgresql-8.2.1.tar.gz en el directorio

/usr/local con el siguiente comando: [root@localhost ~]# tar –xzf postgresql-8.2.1.tar.gz –C /usr/local/

• Luego debemos entrar en el directorio /usr/local/postgresql-8.2.1 [root@localhost postgresql-8.2.1]# cd /usr/local/postgresql-8.2.1

• Y crear el archivo compile.sh : [root@localhost postgresql-8.2.1]# vi compile.sh Estos pasos se ilustran en la Figura 7.

Page 6: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

6

• Copiar y pegar la secuencia de instrucciones que se muestran en el Script 2: LDFLAGS=-lstdc++ ./configure \ --prefix=/usr/local/pgsql \ --with-perl \ --with-python \ --with-krb5 \ --with-openssl

Script 2: contenido de compile.sh para PostgreSQL

• Luego hacemos ejecutable el script de compilación: [root@localhost postgresql-8.2.1]# chmod 755 compile.sh

• Para configurar la compilación de PostgreSQL debemos ejecutar el script de

compilación: [root@localhost postgresql-8.2.1]# ./compile.sh Si todo va bien, veremos una secuencia de texto como la que vemos en la Figura 8.

Compilación

• El siguiente paso es ejecutar make: [root@localhost postgresql-8.2.1]# make

Figura 7

Figura 8

Page 7: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

7

El proceso arrojará una secuencia de texto como la que muestra la Figura 9.

• Finalmente ejecutamos el comando make install:

[root@localhost postgresql-8.2.1]# make install Que nos entrega la secuencia ilustrada en la Figura 10.

Post Compilación y Configuración de PostgreSQL

Una vez que los pasos anteriores han sido ejecutados sin problemas, la base de datos necesita ser configurada con un usuario que sea su dueño, es nuestro caso crearemos el usuario postgres.

Figura 9

Figura 10

Page 8: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

8

• Para realizar lo señalado debemos ejecutar la siguiente secuencia de instrucciones:

[root@localhost ~]# /usr/sbin/adduser postgres [root@localhost ~]# mkdir /usr/local/pgsql/data [root@localhost ~]# chown postgres /usr/local/pgsql/data/ [root@localhost ~]# su – postgres [postgres@localhost ~]# /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/

La secuencia de instrucciones y su resultado satisfactorio se muestran en la Figura 11.

Pruebas de Inicio y Funcionamiento • Estas se llevan a cabo con la siguiente secuencia de comandos: (como casi todo en

aquí ;-) [postgres@localhost ~]# /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/data/logfile start

Su resultado se muestra en la Figura 12.

[postgres@localhost ~]# /usr/local/pgsql/bin/createdb test

Su resultado se muestra en la Figura 13.

Figura 11

Figura 12

Figura 13

Page 9: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

9

[postgres@localhost ~]# /usr/local/pgsql/bin/psql test Su resultado se muestra en la Figura 14.

• Luego debemos ejecutar el comando: [postgres@localhost ~]# exit

Para volver al súper usuario root

Configuración del arranque automático de PostgreSQL

Para hacer que el servicio de PostgreSQL se ejecute automáticamente al iniciar el Sistema Operativo, debemos crear un script de inicio y control, como se muestra a continuación.

• Como root, crear el archivo /etc/init.d/postgresql (o fichero, dependiendo de la versión de español que estéis utilizando ☺, para lo cual ejecutamos el comando:

[root@localhost postgresql-8.2.1]# vi /etc/init.d/postgresql

Como se muestra en la Figura 15.

Y agregamos el texto del Script 3, se recomienda copiar y pegar (siguiente página).

• Luego hacemos nuestro script ejecutable y lo agregamos como servicio del sistema:

[root@localhost postgresql-8.2.1]# chmod 700 /etc/init.d/postgresql [root@localhost postgresql-8.2.1]# /sbin/chkconfig --add postgresql Como se muestra en la Figura 16.

Figura 14

Figura 15

Figura 16

Page 10: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

10

#!/bin/sh # postgresql This is the init script for starting up the # PostgreSQL server # chkconfig: - 85 15 # description: Starts and stops the PostgreSQL backend daemon that handles all database requests. # processname: postmaster # pidfile: /usr/local/pgsql/data/postmaster.pid # # Source function library. . /etc/rc.d/init.d/functions # Get config. . /etc/sysconfig/network # Check that networking is up. # Pretty much need it for postmaster. [ ${NETWORKING} = "no" ] && exit 0 [ -f /usr/local/pgsql/bin/postmaster ] || exit 0 # See how we were called. case "$1" in start) pid=`pidof postmaster` if [ $pid ] then echo "Postmaster already running." else echo -n "Starting postgresql service: " su -l postgres -c '/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/data/logfile start' sleep 1 echo exit fi ;; stop) echo -n "Stopping postgresql service: " killproc postmaster sleep 2 rm -f /usr/local/pgsql/data/postmaster.pid echo ;; restart) $0 stop $0 start ;; *) echo "Usage: postgresql {start|stop|restart}" exit 1 esac exit 0

Page 11: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

11

Compilación de PHP con unixODBC y FreeTDS

Previo a la Compilación • Para instalar el soporte ODBC para Linux, así como la conexión (DSN) para M$

SQLServer desde PHP y MapServer, debemos instalar los paquetes unixODBC y unixODBC-devel, instalables directo desde la consola, con el siguiente comando:

[root@localhost ~]# yum install unixODBC unixODBC-devel

El proceso de esta instalación se muestra en la Figura 17.

• El siguiente paso es instalar FreeTDS, librería que nos provee acceso a los Servidores M$-SQLServer y Sybase, por medio de la implementación del protocolo Tabular DataStream. Los paquetes no están disponibles para ser instalados con la aplicación yum, por lo que deberán descargarse e instalarse manualmente utilizando la herramienta rpm.

Los paquetes los puedes descargar desde www.rmpfind.net: freetds: http://www.rpmfind.net/linux/RPM/dag/redhat/el4/i386/freetds-0.64-

1.el4.rf.i386.html freetds-devel: http://fr.rpmfind.net/linux/RPM/dag/redhat/el4/i386/freetds-

devel-0.64-1.el4.rf.i386.html

Figura 17

Page 12: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

12

Estos paquetes también los pueden buscar y bajar desde http://rpm.pbone.net

• Una vez descargados, procedemos a instalar los paquetes: [root@localhost ~]# rpm -hiv freetds-0.64-1.el4.rf.i386.rpm [root@localhost ~]# rpm -hiv freetds-devel-0.64-1.el4.rf.i386.rpm

Este proceso se muestra en la Figura 18.

• Para compilar e instalar PHP, debemos descargar el código fuente desde su sitio Web http://www.php.net. La última versión disponible al momento de realizar este documento es la 5.2.1

• En la sección “Downloads” (banner principal) procedemos a descargar el archivo

comprimido con bZip2 (menor tamaño), php-5.2.1.tar.bz2

• Descomprimir el archivo php-5.2.1.tar.bz2: [root@localhost php-5.2.1]# tar –xjf php-5.2.1.tar.bz2 –C /usr/local/

• Luego ir al directorio /usr/local/php-5.2.1

[root@localhost php-5.2.1]# cd /usr/local/php-5.2.1 • Crear un script de compilación llamado compile.sh

[root@localhost php-5.2.1]# vi compile.sh

• Y pegar en su interior la secuencia del Script 4. ./configure \ --prefix=/usr/local/apache2/php \ --with-apxs2=/usr/local/apache2/bin/apxs \ --disable-cgi \ --with-config-file-path=/usr/local/apache2/php \ --with-openssl \ --with-kerberos \ --with-zlib \ --with-bz2 \ --with-curl \ --enable-dbase \ --with-gd \ --with-pgsql \ --with-xsl \ --with-gettext \ --with-regex=system \ --with-unixODBC=/usr/ \ --with-mssql

Script 4: compile.sh para configurar la compilación de PHP

Figura 18

Page 13: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

13

• Cambiamos los atributos de compile.sh para hacerlo ejecutable: [root@localhost php-5.2.1]# chmod 755 compile.sh

• Ejecutamos compile.sh

[root@localhost php-5.2.1]# ./compile.sh

La secuencia de texto de la ejecución de compile.sh se muestra en la Figura 19.

• Luego ejecutamos make y make install obteniendo las secuencias de texto en las Figuras 20 y 21.

[root@localhost php-5.2.1]# make [root@localhost php-5.2.1]# make install

Figura 19

Figura 20

Figura 21

Nota: si en la compilación aparece el siguiente error u otro similar: If configure fails try --with-jpeg-dir=<DIR> configure: error: libpng.(a|so) not found. Ejecutar como root (para resolver dependencia): yum install libpng-devel

Page 14: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

14

Configuración de PHP (Post-Compilación)

PHP requiere la presencia de su archivo de configuración (php.ini), el cual no se crea por defecto durante el proceso de compilación, pero la distribución viene acompañada de un archivo de ejemplo ubicado en el directorio de los fuentes de PHP en nuestro sistema.

• Debemos copiar y renombrar este archivo en el directorio /usr/local/apache2/php/ tal como se muestra a continuación:

[root@localhost php-5.2.1]# cp php.ini-recommended /usr/local/apache2/php/php.ini

• Editamos el archivo de configuración php.ini para varias las configuraciones respecto al despliegue de warnings, errores, etc., para depurar, para entregar mayores recursos de memoria y tiempo de procesamiento a PHP y señalar el directorio de las extensiones, para colocar, posteriormente, nuestro modulo de PHP/MapScript.

[root@localhost php-5.2.1]# vi /usr/local/apache2/php/php.ini Cerca de la línea 300: max_execution_time = 150 ; Maximum execution time of each script, in seconds max_input_time = 300 ; Maximum amount of time each script may spend parsing request data memory_limit = 256M ; Maximum amount of memory a script may consume (128MB) Cerca de la línea 349: error_reporting = E_ALL & ~E_NOTICE Cerca de la línea 356: display_errors = On Cerca de la línea 453, por compatibilidad con aplicaciones antiguas: register_long_arrays = On Cerca de la línea 520, definimos el directorio de extensiones: extension_dir = "/usr/local/apache2/php/ext/"

Guardamos el archivo php.ini reconfigurado Creamos el directorio de las extensiones de PHP: [root@localhost php-5.2.1]# mkdir /usr/local/apache2/php/ext/

• También debemos editar archivo de configuración de Apache para agregar y/o verificar que las siguientes líneas marcadas en azul se encuentren en él.

Page 15: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

15

[root@localhost php-5.2.1]# vi /usr/local/apache2/conf/httpd.conf

Cerca de la línea 53: # Example: # LoadModule foo_module modules/mod_foo.so LoadModule php5_module modules/libphp5.so # Cerca de la línea 165: <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> Cerca de la línea 307: AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps

• Luego reiniciamos el servicio de Apache (reiniciamos el Servidor Web) para que vuelva a leer la configuración que le hemos agregado en php.ini y httpd.conf.

[root@localhost php-5.2.1]# /usr/local/apache2/bin/apachectl restart

Pruebas de Funcionamiento de PHP

Para ver si nuestro PHP personalizado trabaja adecuadamente, debemos realizar varias tareas:

• Crear y editar un archivo llamado index.php en la ruta /usr/local/apache2/htdocs/

[root@localhost ~]# vi /usr/local/apache2/htdocs/index.php

Con el siguiente contenido:

<?php phpinfo(); ?> Código a la usanza de DREAMWEAVER por el resaltado de sintaxis ☺

• Luego abrimos el navegador de Internet, y en mi caso, coloco la IP de mi servidor

de desarrollo, http://192.168.92.132, y deberíamos ver la ilustración de la Figura 22.

Page 16: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

16

Compilación de PostGIS

Previo a la Instalación

Instalación de Proj4

PostGIS y MapServer utilizan la librería de protecciones cartográficas Proj4. Esta librería se utiliza para poder realizar reproyecciones y Cambio de Datum o Sistema de Coordenadas (Si… leyeron bien, CAMBIO DE DATUM… pronto en otro documento) dentro del motor de datos.

Debemos descargar la última versión del Código Fuente desde la dirección Web

http://www.remotesensing.org/proj/ La URL de la Versión 4.5.0 de proj es ftp://ftp.remotesensing.org/proj/proj-4.5.0.tar.gz • Descomprimimos el archivo proj-4.5.0.tar.gz [root@localhost ~]# tar -xzf proj-4.5.0.tar.gz -C /usr/local • Entramos en el directorio /usr/local/proj-4.5.0 [root@localhost ~]# cd /usr/local/proj-4.5.0 • Ejecutamos el Script de configuración de la compilación [root@localhost proj-4.5.0]# ./configure Las secuencias de texto de este proceso se muestran en la Figura 23

Figura 22

Page 17: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

17

• Luego ejecutamos make y make install [root@localhost proj-4.5.0]# make [root@localhost proj-4.5.0]# make install Las secuencias de texto se muestran en la Figuras 24 y 25.

Figura 23

Figura 24

Figura 25

Page 18: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

18

Instalación de GEOS

PostGIS y MapServer también emplean la librería geométrica GEOS, empleada para realizar pruebas entre geometrías: touches(), contains(), intersects(); y operaciones de GeoProcesamiento: buffer(), geomunion(), difference() dentro del Motor de Datos.

Debemos descargar la última versión de GEOS desde la dirección Web: http://geos.refractions.net/

La URL de la Versión 2.2.3 de GEOS es http://geos.refractions.net/geos-2.2.3.tar.bz2 • Descomprimimos el archivo geos-2.2.3.tar.bz2 [root@localhost ~]# tar -xjf geos-2.2.3.tar.bz2 -C /usr/local • Entramos en el directorio /usr/local/geos-2.2.3 [root@localhost ~]# cd /usr/local/ geos-2.2.3 • Ejecutamos el Script de configuración de la compilación [root@localhost geos-2.2.3]# ./configure Las secuencias de texto de este proceso se muestran en la Figura 26 • Luego ejecutamos make y make install [root@localhost proj-4.5.0]# make [root@localhost proj-4.5.0]# make install Las secuencias de texto se muestran en la Figuras 27 y 28.

Figura 26

Figura 27

Page 19: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

19

Compilación

La última versión del código fuente de PostGIS puede ser descargado de su sitio Web Oficial: www.postgis.org.

En este caso emplearemos la versión de 1.2.1 de PostGIS, ya que una de las características presente en esta versión es la capacidad de construir geometrías compatibles con la estructura del lenguaje KML, utilizado por Google Earth para describir y representar geometrías geográficamente referenciadas sobre su Tierra 3D, una herramienta realmente útil.

Descargamos el la última versión del código fuente de PostGIS desde la URL : http://www.postgis.org/download/postgis-1.2.1.tar.gz • Descomprimimos el archivo postgis-1.2.1.tar.gz dentro del directorio

contrib de postgres [root@localhost ~]# tar -xzf postgis-1.2.1.tar.gz -C postgresql-8.2.1/contrib/ • Entramos en el directorio /usr/local/postgresql-8.2.1/contrib/

postgis-1.2.1/ [root@localhost ~]# cd /usr/local/postgresql-8.2.1/contrib/ postgis-1.2.1/ • Ejecutamos el Script de configuración de la compilación con parámetros [root@localhost postgis-1.2.1]# ./configure --with-pgsql=/usr/local/pgsql/bin/pg_config Las secuencias de texto en la consola se aprecian en la Figura 29

Figura 28

Page 20: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

20

• Luego ejecutamos make y make install [root@localhost postgis-1.2.1]# make [root@localhost postgis-1.2.1]# make install Las correspondientes secuencias de texto se ilustran en las Figuras 30 y 31

Figura 29

Figura 30

Figura 31

Page 21: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

21

Notas sobre la compilación de PostGIS PostGIS tiene dos herramientas de consola, llamadas DUMPERS (shp2pgsql y

pgsql2shp), archivos ejecutables que se utilizan para cargar y descargar archivos Shape de ESRI hacia y desde la Base de Datos.

Estas herramientas quedan copiadas en el directorio /usr/local/pgsql/bin y después del proceso de compilación, deben quedar disponibles en el PATH del sistema operativo para que puedan ejecutarse y utilizarse desde cualquier directorio en el sistema de archivos.

Tenemos dos opciones: 1. Agregamos la ruta al PATH del usuario, editando el archivo .bash_profile y agregando la ruta usr/local/pgsql/bin a la variable PATH, seleccionando que usuario tendrá disponibles estas herramientas de forma directa. 2. Copiamos estas utilidades a un directorio que ya se encuentre dentro del PATH del sistema operativo, dejando las utilidades disponibles para todos los usuarios. Yo opté por la opción 2. [root@localhost postgis-1.2.1]# cp /usr/local/pgsql/bin/shp2pgsql /usr/bin [root@localhost postgis-1.2.1]# cp /usr/local/pgsql/bin/pgsql2shp /usr/bin Otra consideración muy importante es que debemos registrar en el sistema operativo las librerías generadas por Proj4, GEOS y PostGIS, editando el archivo /etc/ld.so.conf [root@localhost postgis-1.2.1]# vi /etc/ld.so.conf Y añadimos las siguiente línea: /usr/local/lib Finalmente recargamos las librerías del sistema [root@localhost postgis-1.2.1]# ldconfig Por ultimo, debemos copiar las librerías compartidas de PostgreSQL al directorio /usr/lib/ para que puedan ser acezadas por MapServer en tiempo de ejecución. [root@localhost postgis-1.2.1]# cp /usr/local/pgsql/lib/libpq* /usr/lib

Configuración Post-Compilación Una vez completados todos los pasos anteriores, necesitamos crear una Base de Datos habilitada espacialmente, para lo cual emplearemos la base de datos “test” creada en el proceso de configuración de PostgreSQL.

Page 22: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

22

El procedimiento es el siguiente: • Convertirse en usuario postgres, dueño del Motor de Datos [root@localhost postgis-1.2.1]# su - postgres • Cargar el lenguaje de procedimientos almacenados pl-pgsql en la base de datos “test” [postgres@localhost postgis-1.2.1]# /usr/local/pgsql/bin/createlang plpgsql test • Cargar las funciones de PostGIS en la base de datos “test” [postgres@localhost postgis-1.2.1]# /usr/local/pgsql/bin/psql -d test –f /usr/local/pgsql/share/lwpostgis.sql Las secuencias de texto correspondientes se aprecian en la Figura 32. • Debemos cargar la base de datos con los registros de las referencias espaciales EPSG

o SRID, utilizados para hacer reproyecciones y cambios de Datum [postgres@localhost postgis-1.2.1]# su - postgres Y el proceso se resume en la Figura 33. • Finalmente ejecutamos exit para volver al usuario root [postgres@localhost postgis-1.2.1]# exit

Figura 32

Figura 33

Page 23: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

23

Compilación de MapServer

Pasos previos a la Compilación Si vamos a trabajar con múltiples tipos de datos Vectoriales y Raster, deberíamos tener instalada la librería GDAL/OGR, capa de abstracción de Datos Espaciales que accede de forma nativa a los formatos GIS mas utilizados (y otros no tanto). Además de enlazarse con MapServer, GDAL/OGR nos proveerá de herramientas de consola muy útiles para realizar conversiones entre formatos de datos GIS, así como para probar conexiones a fuentes de datos ODBC pseudos-espaciales (recuerden la instalación anterior de unixODBC y FreeTDS), PostGIS, etc. El sitio Web de esta herramienta es http://www.gdal.org Debemos descargar la última versión del código fuente de GDAL/OGR desde la siguiente dirección Web: http://www.gdal.org/dl/gdal-1.4.0.tar.gz Y el procedimiento de instalación es el siguiente • Descomprimir el archivo gdal-1.4.0.tar.gz [root@localhost local]# tar –xzf gdal-1.4.0.tar.gz –C /usr/local/ • Entrar en el directorio /usr/local/gdal-1.4.0 [root@localhost local]# cd /usr/local/gdal-1.4.0 • Crear el archivo de compilación compile.sh [root@localhost gdal-1.4.0]# vi compile.sh • Pegar el contenido del script 5 en el archivo compile.sh ./configure \ --with-png \ --with-libtiff \ --with-jpeg \ --with-gif \ --with-pg=/usr/local/pgsql/bin/pg_config \ --with-geos \ --with-odbc

Script 5: Contenido del archivo compile.sh para GDAL/OGR

• Damos atributos de ejecutable al archivo compile.sh [root@localhost gdal-1.4.0]# chmod 755 compile.sh • Ejecutamos el Script de pre-compilación [root@localhost gdal-1.4.0]# ./compile.sh Y el proceso asociado se muestra en las secuencias de texto de la Figura 34.

Page 24: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

24

• Ejecutamos make y make install [root@localhost gdal-1.4.0]# make [root@localhost gdal-1.4.0]# make install Los procesos asociados se muestran en las figuras 35 y 36. • Finalmente, volvemos a recargar las librerías del sistema operativo: [root@localhost gdal-1.4.0]# ldconfig

Figura 34

Figura 35

Figura 36

Page 25: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

25

Compilación de MapServer Hoy en día MapServer es un emblema, un fiel representante de un software OpenSource que ha logrado equiparar y superar, en características, rendimiento, flexibilidad, escalabilidad, etc., a un software comercial. El sitio oficial de MapServer se encuentra en la dirección Web http://mapserver.gis.umn.edu Para la elaboración de este documento emplearemos la última versión estable del código fuente de MapServer, la 4.10.1, que puede ser descargada desde la siguiente URL: http://cvs.gis.umn.edu/dist/mapserver-4.10.1.tar.gz • Una vez descargado el archivo, lo descomprimimos en el directorio /usr/local/ [root@localhost ~]# tar –xzf mapserver-4.10.1.tar.gz –C /usr/local • Entramos en el directorio creado en la descompresión [root@localhost ~]# cd /usr/local/4.10.1 • En su interior creamos un archivo de compilación igual que en los casos anteriores [root@localhost mapserver-4.10.1]# vi compile.sh • En su interior pegamos el contenido del Script 6, grabamos y salimos del editor. ./configure \ --with-proj=/usr/local \ --with-geos=/usr/local/bin/geos-config \ --with-ogr=/usr/local/bin/gdal-config \ --with-gdal=/usr/local/bin/gdal-config \ --with-postgis=/usr/local/pgsql/bin/pg_config \ --with-curl-config=/usr/bin/curl-config \ --with-httpd=/usr/local/apache2/bin/httpd \ --with-php=/usr/local/php-5.2.1 \ --with-wfs \ --with-wfsclient \ --with-wmsclient \ --enable-debug \ --with-curl-config=/usr/bin/curl-config \ --with-threads \ --with-wcs \ --with-wcsclient \ --with-sos \ # new in 4.10 \ --with-gd \ --with-freetype \ --with-jpeg

Script 6: contenido del archivo de compilación compile.sh para MapServer.

• Hacemos ejecutable al script [root@localhost mapserver-4.10.1]# chmod 755 compile.sh • Ejecutamos el Script [root@localhost mapserver-4.10.1]# ./compile.sh El resultado de este proceso se muestra en la Figura 37.

Page 26: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

26

• El siguiente paso es ejecutar make (importante, en la compilación de MapServer no

se debe ejecutar make install, ya que manualmente colocaremos los ejecutables y las librerías en sus directorios respectivos).

[root@localhost mapserver-4.10.1]# make El proceso resumen de la compilación de MapServer se muestra en la Figura 38. • Copiamos los ejecutables generados al directorio /usr/local/apache2/cgi-

bin/ [root@localhost mapserver-4.10.1]# cp mapserv /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp legend /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp scalebar /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp shp2img /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp shp2pdf /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp shptree /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp shptreetst /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp shptreevis /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp sortshp /usr/local/apache2/cgi-bin/ [root@localhost mapserver-4.10.1]# cp tile4ms /usr/local/apache2/cgi-bin/

Figura 37

Figura 38

Page 27: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

27

Pruebas de Funcionamiento Para comprobar que MapServer esta funcionando correctamente, lanzamos sobre la consola el ejecutable cgi de MapServer llamado mapserv con el modificador -v [root@localhost mapserver-4.10.1]# ./mapserv -v Y si no arroja algún error de dependencias de librerías, nos arrojará información sobre los formatos de salida y entrada que soporta, como se aprecia en la Figura 39.

Configuración de PHP/MapScript

En el proceso de compilación de MapServer le indicamos que tenemos instalado php en nuestro sistema con la opción --with-php=/usr/local/php-5.2.1 en el archivo compile.sh. Esto gatilla la creación de un modulo para extender PHP con la API de MapServer, para poder acceder a ella y a toda su potencia y flexibilidad.

Este modulo se encuentra en el directorio /usr/local/mapserver-4.10.1/mapscript/php3 • Copiamos este modulo al directorio que la instalación de php creó dentro del árbol de

Apache, es decir, /usr/local/apache2/php [root@localhost mapserver-4.10.1]# cp /usr/local/mapserver-4.10.1/mapscript/php3/php_mapscript.so /usr/local/apache2/php/ext • Reiniciamos Apache [root@localhost mapserver-4.10.1]# /usr/local/apache2/bin/apachectl restart • Editamos el archivo /usr/local/apache2/htdocs/index.php [root@localhost mapserver-4.10.1]# vi /usr/local/apache2/htdocs/index.php • Lo dejamos como el Script que se muestra a continuación y grabamos. <?php dl(“php_mapscript.so”);

phpinfo(); ?> Código a la usanza de DREAMWEAVER por el resaltado de sintaxis ☺

• Cargamos la URL de pruebas en el navegador Web: http://192.168.92.132/ Y como decimos en Chile… CHARAAAAAN… tenemos listo nuestro servidor Web con MapServer, PHP, Proj, GEOS, PostGIS, GDAL/OGR, unixODBC, FreeTDS, PHP/MApScript, WMS Client/Server, WFS Client/Server, WCS, como se aprecia en la Figura 40, realizando algo de scroll hacia abajo en el navegador.

Figura 39

Page 28: Compilación de MapServer y PostGIS en Linux V0[1].1cartografia.cl/download/compilacion_mapserver_postgis.pdf1 Proyecto de Documentación de MapServer en Español Como compilar MapServer

28

Nota del Autor: No morimos en el intento……. Bueno, por lo menos yo no morí después de tanta captura de pantalla, ediciones gráficas y formateo de texto ☺. Saludos Cordiales y hasta una próxima revisión. www.MapServer-Hispano.org

Figura 40