====== MapServer su Fedora Core ======
Guida di riferimento: [[http://www.fedorafaq.org/]], scaricati i quattro CD di **Fedora Core 6**, in pratica sono stati utilizzati solo i primi due, il resto è stato installato via rete.
===== Installazione =====
Scelta installazione personalizzata del software, tolti diversi pacchetti, installato **httpd** e **postgres**. All'esecuzione di **firstboot** si è scelto di disattivare alcuni servizi (in considerazione anche del fatto che si tratta di una macchina virtuale su VMware):
* autofs
* avahi-daemon
* bluetooth
* cpuspeed
* cups
* hidd
* ip6tables
* iptables
* isdn
* mdmonitor
* netfs
* nfslock
* pcsd
* portmap
* rpcgssd
* rpcidmapd
* smartd
Si sono invece attivati i servizi
* postgresql
* httpd
Se si desidera rieseguire il tool di prima configurazione (firstboot) si deve eliminare il file ''**/etc/sysconfig/firstboot**'' e lanciare ''**/etc/init.d/firstboot**''. Oppure si crea un file ''/.unconfigured'' e
si esegue un reboot.
===== Gestione dei pacchetti =====
Per la gestione dei pacchetti è stato usato ''**yum**'', in ''**/etc/yum.repos.d/**'' sono elencati i repository disponibili, i file salvati sono in ''**/var/cache/yum/**''. I comandi più utili sono:
yum list installed
yum list available
yum install packagename
yum update packagename
yum check-update
yum search word
yum clean all
yum clean metadata
yum clean dbcache
E' capitato anche che yum avesse smesso di funzionare correttamente, risolto con un reboot. Si puo' anche installare un file .rpm direttamente con:
yum localinstall package.rpm
# Oppure con
rpm -vv -i package.rpm
Per sfogliare il repository di RPM via web:
* **[[http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/]]**
* **[[http://download.fedora.redhat.com/pub/fedora/linux/core/updates/6/i386/]]**
===== Selezione pacchetti =====
Dopo un aggiornamento completo del sistem con ''**yum update**'', per la compilazione e l'installazione di **MapServer** si sono aggiunti i seguenti pacchetti (con ''**yum install pacchetto**''):
* gcc
* gcc-c++
* postgresql-devel
* postgresql-pl
* php-gd
* php-pear
* php-pgsql
* php-mbstring
* php-xml
* php-xmlrpc
* screen
* flex
* python-devel
* php-devel
* freetype-devel
* libpng-devel
* libjpeg-devel
* libXpm-devel
* gd-devel
* curl-devel
Per comodità si sono installati anche:
* mc
* screen
* strace
* lynx
===== Configurazioni particolari =====
Per tracciare gli errori di PHP si è provissoriamente abilitata la visualizzazione degli errori mettendo **''display_errors = On''** in **''/etc/php.ini''**. In produzione tuttavia questa impostazione va messa su **Off** in quanto alcuni warning generati da pmapper producono immagini corrotte e in pratica il pmapper non funziona (il warning viene visualizzato **dentro i file .png** generati al volo).
Disabilitato **selinux** in **''/etc/sysconfig/selinux''**, altrimenti il processo apache non è autorizzato ad aprire socket TCP/IP. Questo significa che MapServer non poteva fare da client WMS, che il collegamento a PostGIS non funziona, phpPgAdmin funzionava solo su Unix socket (accidenti a Fedora, Dio bonino!).
===== Compilazione del software aggiuntivo =====
Lo script che segue è il dettaglio di tutte le operazioni eseguite per scaricare, compilare e installare il necessario
# Attivare le librerie in /usr/local/lib
#-------------------------------------------------------------------
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf
# PROJ 4.5.0 http://www.remotesensing.org/proj
#-------------------------------------------------------------------
mkdir /usr/local/src/proj
cd /usr/local/src/proj
wget ftp://ftp.remotesensing.org/proj/proj-4.5.0.tar.gz
tar zxvf proj-4.5.0.tar.gz
chown -R root.root proj-4.5.0
find proj-4.5.0 -type d | xargs chmod 755
cd proj-4.5.0
./configure
make
make install
ldconfig
# GEOS http://geos.refractions.net
#-------------------------------------------------------------------
mkdir /usr/local/src/geos
cd /usr/local/src/geos
wget http://geos.refractions.net/geos-2.2.3.tar.bz2
tar jxvf geos-2.2.3.tar.bz2
chown -R root.root geos-2.2.3
find geos-2.2.3 -type d | xargs chmod 755
cd geos-2.2.3
./configure
make
make install
ldconfig
# POSTGIS 1.2.0 http://www.postgis.org
#-------------------------------------------------------------------
mkdir /usr/local/src/postgis
cd /usr/local/src/postgis
wget http://www.postgis.org/download/postgis-1.2.0.tar.gz
tar zxvf postgis-1.2.0.tar.gz
chown -R root.root postgis-1.2.0
cd postgis-1.2.0
./configure
make
make install
ldconfig
#
# Il "make check" ha qualche problema, provare invece a
# creare un geo-database di nome "prova" con:
#
# su - postgres
# createdb prova
# createlang plpgsql prova
# psql -f /usr/share/lwpostgis.sql -d prova
# psql -f /usr/share/spatial_ref_sys.sql -d prova
# GDAL 1.3.2 http://www.remotesensing.org/gdal/
#-------------------------------------------------------------------
mkdir /usr/local/src/gdal
cd /usr/local/src/gdal
wget http://www.gdal.org/dl/gdal-1.3.2.tar.gz
tar zxvf gdal-1.3.2.tar.gz
chown -R root.root gdal-1.3.2
cd gdal-1.3.2
./configure
make
make install
ldconfig
# MapServer 4.10.0 http://mapserver.gis.umn.edu/
#-------------------------------------------------------------------
mkdir /usr/local/src/mapserver
cd /usr/local/src/mapserver
wget http://cvs.gis.umn.edu/dist/mapserver-4.10.0.tar.gz
tar zxvf mapserver-4.10.0.tar.gz
chown -R root.root mapserver-4.10.0
cd mapserver-4.10.0
./configure --with-wfs --with-wcs --with-wmsclient --with-wfsclient \
--with-proj --with-ogr --with-gdal --with-postgis --with-php=/usr/include/php
make
install -s mapserv /var/www/cgi-bin
install -s mapscript/php3/php_mapscript.so /usr/lib/php/modules
ln -s php_mapscript.so /usr/lib/php/modules/php_mapscript_4.10.0.so
install -s legend /usr/local/bin
install -s scalebar /usr/local/bin
install -s shp2img /usr/local/bin
install -s shptree /usr/local/bin
install -s shptreetst /usr/local/bin
install -s shptreevis /usr/local/bin
install -s sortshp /usr/local/bin
install -s tile4ms /usr/local/bin
install -m 0644 mapscript/php3/examples/phpinfo_mapscript.phtml /var/www/html
#
# Mettere un file /var/www/html/hello-world.map e provare:
# http://geoserver/phpinfo_mapscript.phtml
# http://geoserver/cgi-bin/mapserv?map=/var/www/html/hello-world.map&mode=map
# p.mapper 2.1.2 http://sourceforge.net/projects/pmapper
#-------------------------------------------------------------------
mkdir /usr/local/src/pmapper
cd /usr/local/src/pmapper
wget http://puzzle.dl.sourceforge.net/sourceforge/pmapper/pmapper-2.1.2.zip
wget http://switch.dl.sourceforge.net/sourceforge/pmapper/pmapper-demodata-2.zip
cd /var/www/html
unzip /usr/local/src/pmapper/pmapper-2.1.2.zip
mv pmapper-2.1.2 pmapper
chown -R apache.apache pmapper
mkdir /var/www/html/tmp
chmod 1777 /var/www/html/tmp
echo "AddHandler php5-script .phtml" > /etc/httpd/conf.d/pmapper.conf
echo "AddType text/html .phtml" >> /etc/httpd/conf.d/pmapper.conf
/etc/init.d/httpd reload
mkdir /var/www/demodata
cd /var/www/demodata
unzip /usr/local/src/pmapper/pmapper-demodata-2.zip
#
# Modificare pmapper/config/default/pmapper_demo.map:
# IMAGEPATH "/var/www/html/tmp/"
# phpPgAdmin 4.0.1 http://www.phppgadmin.org/
#-------------------------------------------------------------------
mkdir /usr/local/src/phppgadmin
cd /usr/local/src/phppgadmin
wget http://ftp.icdevgroup.org/phpPgAdmin/phpPgAdmin-4.0.1-1.noarch.rpm
rpm -i phpPgAdmin-4.0.1-1.noarch.rpm