====== 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_oracle]]**.
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''** con apt-get install libaio1
- 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 =====
- Scaricare i sorgenti e installare le dipendenze necessarie alla compilazione: apt-get source mapserver
apt-get build-dep mapserver
- Modificare il **''debian/rules''** aggiungendo ai **''COMMON_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)
)
)