tecnica:gps_cartografia_gis:mapserver_oracle
Table of Contents
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
- 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
- Aggiungere il nuovo path al dynamic linker
echo /usr/lib/oracle/11.2/client/lib > /etc/ld.so.conf.d/oci.conf ldconfig
- Installare la librearia
libaio1
conapt-get install libaio1
- Predisporre una directory che possa essere usata come
ORACLE_HOME
, ad esempiomkdir -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
- Scaricare i sorgenti e installare le dipendenze necessarie alla compilazione:
apt-get source mapserver apt-get build-dep mapserver
- Modificare il
debian/rules
aggiungendo aiCOMMON_CONFIG
:... --with-postgis \ --with-oraclespatial=/usr/local/share/oracle \ --with-wcs \ ...
- 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