User Tools

Site Tools


tecnica:gps_cartografia_gis:mapserver_oracle

MapServer con supporto ad Oracle su Debian GNU/Linux

La compilazione di MapServer con supporto ad Oracle Spatial su Debian GNU/Linux è del tutto analoga alla procedura descritta in: GDAL/OGR con supporto ad Oracle su Debian GNU/Linux.

Si riassume brevemente la procedura testata su Debian 6.0.3 Squeeze.

Installazione Oracle Instant Client

  1. Installare i pacchetti Oracle (originali rpm, debianizzati con alien):
    • oracle-instantclient11.2-basiclite_11.2.0.2.0-2_i386.deb
    • oracle-instantclient11.2-devel_11.2.0.2.0-2_i386.deb
  2. Aggiungere il nuovo path al dynamic linker
    echo /usr/lib/oracle/11.2/client/lib > /etc/ld.so.conf.d/oci.conf
    ldconfig
  3. Installare la librearia libaio1 con
    apt-get install libaio1
  4. Predisporre una directory che possa essere usata come ORACLE_HOME, ad esempio
    mkdir -p /usr/local/share/oracle/sdk
    ln -s /usr/lib/oracle/11.2/client/lib  /usr/local/share/oracle/lib
    ln -s /usr/include/oracle/11.2/client  /usr/local/share/oracle/sdk/include

Compilazione MapServer

  1. Scaricare i sorgenti e installare le dipendenze necessarie alla compilazione:
    apt-get source mapserver
    apt-get build-dep mapserver
  2. Modificare il debian/rules aggiungendo ai COMMON_CONFIG:
    ...
    --with-postgis \
    --with-oraclespatial=/usr/local/share/oracle \
    --with-wcs \
    ...
  3. Ricompilare con
    dpkg-buildpackage -rfakeroot

Verificare che il supporto sia incluso nell'eseguibile (INPUT=ORACLESPATIAL), ad esempio:

# ./mapserv -v
MapServer version 5.6.5 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SWF
OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI
SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT
SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS
SUPPORTS=RGBA_PNG INPUT=EPPL7 INPUT=POSTGIS INPUT=ORACLESPATIAL INPUT=OGR INPUT=GDAL
INPUT=SHAPEFILE

L'eseguibile linka dinamicamente le seguenti librerie (oltre a quelle standard):

  • libaio.so.1
  • libclntsh.so.11.1
  • libnnz11.so

Variabile ORACLE_HOME

Bisogna impostare la variabile ORACLE_HOME=/usr/lib/oracle/11.2/client, è necessaria alla libreria per trovare il file network/admin/tnsnames.ora

Si può mettere direttamente in uno script cgi-bin (es. /usr/lib/cgi-bin/wms_prova) che poi esegue il mapserver:

#!/bin/sh
MAPSERV="/usr/lib/cgi-bin/mapserv.fcgi"
MAPFILE="maps/wms/wms_verdepubblico.map"
export ORACLE_HOME="/usr/lib/oracle/11.2/client"
if [ "${REQUEST_METHOD}" = "GET" ]; then
  if [ -z "${QUERY_STRING}" ]; then
    QUERY_STRING="map=${MAPFILE}"
  else
    QUERY_STRING="map=${MAPFILE}&${QUERY_STRING}"
  fi
  exec ${MAPSERV}
else
  echo "Sorry, I only understand GET requests."
fi
exit 1

Esempio di tnsnames.ora:

sitfi02 =
   (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.intranet.net)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dbinstance)
    )
  )
tecnica/gps_cartografia_gis/mapserver_oracle.txt · Last modified: 2011/12/06 12:08 by niccolo