Old:Debian MapServer/MapScript: differenze tra le versioni
m (ha spostato Debian MapServer/MapScript a Old:Debian MapServer/MapScript) |
|||
(16 versioni intermedie di 9 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{Old}} | ||
== Introduzione == | |||
Mapserver è un software che fornisce mappe ed altri dati di tipo GIS. Questa applicazione viene distribuita unitamente ad una estensione di PHP chiamata '''mapscript''' che permette di accedere alle funzioni di MapServer direttamente dal codice PHP. Purtroppo il relativo pacchetto Debian, a causa di una incompatibilità delle librerie relative alla gestione delle REGEXP da parte di MapServer e del sistema, non contiene questa estensione. | |||
Questa guida spiega come ottenere mapscript a dispetto di questo inconveniente. | |||
{{Box | Nota |Dalla versione 4.0 Debian Etch sono presenti nei repository i pacchetti <code>mapserver</code>, <code>cgi-mapserver</code> e <code>php5-mapscript</code> che risolvono il problema.}} | |||
Happy Hacking! | Happy Hacking! | ||
==Installazione ambiente LAMP== | == Installazione ambiente LAMP == | ||
Si veda a questo proposito la guida [[LAMP: Linux, Apache, MySQL e PHP]]. | Si veda a questo proposito la guida [[LAMP: Linux, Apache, MySQL e PHP]]. | ||
Per | Per brevità, riporto i comandi base per l'installazione dell'ambiente LAMP, rimandandovi al documento di cui sopra per la loro (eventuale) configurazione: | ||
<pre># apt-get install apache phpmyadmin libapache-mod-php4 php4 php4-mysql mysql-server-4.1</pre> | <pre># apt-get install apache phpmyadmin libapache-mod-php4 php4 php4-mysql mysql-server-4.1</pre> | ||
==Installazione di MapServer (CGI)== | == Installazione di MapServer (CGI) == | ||
È sufficiente usare il comando: | |||
<pre># apt-get install cgi-mapserver</pre> | <pre># apt-get install cgi-mapserver</pre> | ||
per installare il programma CGI MapServer. Se tutto | per installare il programma CGI MapServer. Se tutto è andato a buon fine, puntando il browser all'URL: http://localhost/cgi-bin/mapserver dovremmo vedere la seguente stringa | ||
<pre>No query information to decode. QUERY_STRING is set, but empty.</pre> | <pre>No query information to decode. QUERY_STRING is set, but empty.</pre> | ||
==Installare un' applicazione mapserver di esempio== | == Installare un'applicazione mapserver di esempio == | ||
Possiamo installare un' applicazione di esempio per vedere le | Possiamo installare un'applicazione di esempio per vedere le potenzialità di MapServer e testarne il buon funzionamento. Scarichiamo il seguente file: | ||
<pre># wget http://maps.dnr.state.mn.us/mapserver_demos/workshop.zip</pre> | <pre># wget http://maps.dnr.state.mn.us/mapserver_demos/workshop.zip</pre> | ||
decomprimiamolo e spostiamolo all' interno della DocumentRoot di Apache ( /var/www ) | decomprimiamolo e spostiamolo all'interno della DocumentRoot di Apache ( <code>/var/www</code> ) | ||
===Configurazione e permessi=== | === Configurazione e permessi === | ||
Dobbiamo configurare l' applicazione ed i permessi su una directory prima di poter procedere. | Dobbiamo configurare l'applicazione ed i permessi su una directory prima di poter procedere. | ||
* creiamo la directory tmp nella DocumentRoot: <pre># mkdir /var/www/tmp</pre> | * creiamo la directory <code>tmp</code> nella DocumentRoot: | ||
* impostiamo i permessi corretti: <pre># chown -R www-data:www-data /var/www/tmp | <pre># mkdir /var/www/tmp</pre> | ||
* impostiamo i permessi corretti: | |||
Ora editiamo il file /var/www/workshop/index.html: | <pre># chown -R www-data:www-data /var/www/tmp | ||
# chmod -R ug+rwx /var/www/tmp</pre> | |||
Ora editiamo il file <code>/var/www/workshop/index.html</code>: | |||
* sostituiamo tutte le occorrenze di "mapserv40" con "mapserv" | * sostituiamo tutte le occorrenze di "mapserv40" con "mapserv" | ||
* inseriamo i seguenti valori:<pre><input type="hidden" name="map" value="/var/www/workshop/itasca.map"> | * inseriamo i seguenti valori: | ||
<pre><input type="hidden" name="map" value="/var/www/workshop/itasca.map"> | |||
<input type="hidden" name="program" value="/cgi-bin/mapserv"> | <input type="hidden" name="program" value="/cgi-bin/mapserv"> | ||
<input type="hidden" name="root" value="/workshop"> | <input type="hidden" name="root" value="/workshop"> | ||
Riga 35: | Riga 40: | ||
<input type="hidden" name="map_web_imageurl" value="/tmp/"></pre> | <input type="hidden" name="map_web_imageurl" value="/tmp/"></pre> | ||
==Preparare l' installazione di MapScript== | == Preparare l'installazione di MapScript == | ||
Assicuriamoci di avere un repository per i pacchetti sorgenti nel nostro sources | Assicuriamoci di avere un repository per i pacchetti sorgenti nel nostro <code>etc/apt/sources.list</code> dopodiché: | ||
<pre># apt-get -s build-dep php4 > builddep-php4-packages | <pre># apt-get -s build-dep php4 > builddep-php4-packages | ||
# apt-get -s build-dep mapserver > builddep-mapserver-packages | # apt-get -s build-dep mapserver > builddep-mapserver-packages | ||
Riga 44: | Riga 49: | ||
# apt-get install dpkg-dev | # apt-get install dpkg-dev | ||
# apt-get install php4-dev</pre> | # apt-get install php4-dev</pre> | ||
Non preoccupiamoci se dobbiamo sovrascrivere alcune dipendenze, | Non preoccupiamoci se dobbiamo sovrascrivere alcune dipendenze, facciamolo tranquillamente di volta in volta, assecondando APT. | ||
===Compilazione di PHP4=== | === Compilazione di PHP4 === | ||
Ora logghiamoci con il nostro utente normale e: | Ora logghiamoci con il nostro utente normale e: | ||
<pre>$ apt-get source php4 | <pre>$ apt-get source php4 | ||
$ cd php4-4.3.10 | $ cd php4-4.3.10 | ||
$ fakeroot dpkg-buildpackage</pre> | $ fakeroot dpkg-buildpackage</pre> | ||
Quando il sistema ci avverte che una dipendenza non | Quando il sistema ci avverte che una dipendenza non è risolta: | ||
<pre>dpkg-checkbuilddeps: Unmet build dependencies: libxmltok1-dev</pre> | <pre>dpkg-checkbuilddeps: Unmet build dependencies: libxmltok1-dev</pre> | ||
impartiamo il comando: | impartiamo il comando: | ||
<pre># apt-get install libxmltok1-dev</pre> | <pre># apt-get install libxmltok1-dev</pre> | ||
Questo comando scarica per noi i sorgenti di PHP4 e li compila. In teoria potremmo anche non attendere il completamento dell' operazione, ma non abbiamo fretta. Compilare PHP in questo modo ci permette di ottenere alcuni | Questo comando scarica per noi i sorgenti di PHP4 e li compila. In teoria potremmo anche non attendere il completamento dell'operazione, ma non abbiamo fretta. Compilare PHP in questo modo ci permette di ottenere alcuni file relativi ad Apache di cui abbiamo bisogno. | ||
Completata la compilazione, sempre dalla directory php4-4.3.10 diamo il comando: | Completata la compilazione, sempre dalla directory <code>php4-4.3.10</code> diamo il comando: | ||
<pre>$ cp apache-build/regex/.libs/*.o regex/</pre> | <pre>$ cp apache-build/regex/.libs/*.o regex/</pre> | ||
===Compilazione di Mapserver=== | === Compilazione di Mapserver === | ||
Sempre dalla nostra home impartiamo i comandi: | Sempre dalla nostra home impartiamo i comandi: | ||
<pre>$ apt-get source mapserver | <pre>$ apt-get source mapserver | ||
$ cd mapserver-4.4.1 | $ cd mapserver-4.4.1 | ||
$ fakeroot dpkg-buildpackage</pre> | $ fakeroot dpkg-buildpackage</pre> | ||
Anche in questo caso il sistema ci informa che manca la dipendenza libwww-dev ( | Anche in questo caso il sistema ci informa che manca la dipendenza libwww-dev (è in conflitto con libxmltok1-dev). Usiamo tranquillamente il comando: | ||
<pre># apt-get install libwww-dev</pre> | <pre># apt-get install libwww-dev</pre> | ||
Ora dobbiamo apportare le modifiche che ci interessano al file di configurazione per il make di MapServer (tutta la trafila fin qui seguita serve proprio ad ottenere un ambiente adatto alla compilazione manuale di questo software!). | Ora dobbiamo apportare le modifiche che ci interessano al file di configurazione per il make di MapServer (tutta la trafila fin qui seguita serve proprio ad ottenere un ambiente adatto alla compilazione manuale di questo software!). | ||
Digitiamo: | Digitiamo: | ||
<pre>$ fgrep ./configure config.log > conf.new</pre> | <pre>$ fgrep ./configure config.log > conf.new</pre> | ||
Ora modifichiamo manualmente conf.new eliminando il | Ora modifichiamo manualmente <code>conf.new</code> eliminando il <code>$</code> iniziale e aggiungendo <code>--with-php=/usr/include/php4/ --with-php-regex-dir=../php4-4.3.10/regex/</code> al termine del comando di configurazione. | ||
Ora siamo pronti alla compilazione vera e propria: | Ora siamo pronti alla compilazione vera e propria: | ||
<pre>$ . ./conf.new | <pre>$ . ./conf.new | ||
$ make</pre> | $ make</pre> | ||
Eliminiamo tutti i simboli di debug dall' eseguibile e copiamolo nella directory delle librerie di PHP: | Eliminiamo tutti i simboli di debug dall'eseguibile e copiamolo nella directory delle librerie di PHP: | ||
<pre>$ strip --strip-unneeded mapscript/php3/php_mapscript.so | <pre>$ strip --strip-unneeded mapscript/php3/php_mapscript.so | ||
$ su | $ su | ||
# cp mapscript/php3/php_mapscript.so /usr/lib/php4/20020429/</pre> | # cp mapscript/php3/php_mapscript.so /usr/lib/php4/20020429/</pre> | ||
Ora dovrebbe essere tutto pronto: non ci resta | Ora dovrebbe essere tutto pronto: non ci resta che testare il funzionamento del modulo. | ||
==Testare mapscript== | == Testare mapscript == | ||
Creiamo il file map.php all' interno della DocumentRoot di | Creiamo il file <code>map.php</code> all'interno della DocumentRoot di Apache e inseriamo al suo interno queste istruzioni: | ||
<pre><?php | <pre><?php | ||
dl("php_mapscript.so"); | dl("php_mapscript.so"); | ||
phpinfo(); | phpinfo(); | ||
?></pre> | ?></pre> | ||
Ora puntiamo il nostro browser all' indirizzo http://localhost/map.php. dovrebbe comparire qualcosa di simile a [[immagine:mapscript_test.png|thumb|center|Informazioni del modulo MapScript]] | Ora puntiamo il nostro browser all'indirizzo http://localhost/map.php. dovrebbe comparire qualcosa di simile a [[immagine:mapscript_test.png|thumb|center|Informazioni del modulo MapScript]] | ||
==References== | == References == | ||
* [http://nona.net/article/linux/mapscript_compile/ How to compile MapScript on Debian Sarge] | * [http://nona.net/article/linux/mapscript_compile/ How to compile MapScript on Debian Sarge] | ||
* [[LAMP: Linux, Apache, MySQL e PHP]] | * [[LAMP: Linux, Apache, MySQL e PHP]] | ||
{{Autori | |||
|Autore = [[Utente:Keltik|keltik]] | |||
}} | |||
Versione attuale delle 11:32, 29 mag 2016
Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica. |
Introduzione
Mapserver è un software che fornisce mappe ed altri dati di tipo GIS. Questa applicazione viene distribuita unitamente ad una estensione di PHP chiamata mapscript che permette di accedere alle funzioni di MapServer direttamente dal codice PHP. Purtroppo il relativo pacchetto Debian, a causa di una incompatibilità delle librerie relative alla gestione delle REGEXP da parte di MapServer e del sistema, non contiene questa estensione. Questa guida spiega come ottenere mapscript a dispetto di questo inconveniente.
Nota Dalla versione 4.0 Debian Etch sono presenti nei repository i pacchetti mapserver , cgi-mapserver e php5-mapscript che risolvono il problema.
|
Happy Hacking!
Installazione ambiente LAMP
Si veda a questo proposito la guida LAMP: Linux, Apache, MySQL e PHP. Per brevità, riporto i comandi base per l'installazione dell'ambiente LAMP, rimandandovi al documento di cui sopra per la loro (eventuale) configurazione:
# apt-get install apache phpmyadmin libapache-mod-php4 php4 php4-mysql mysql-server-4.1
Installazione di MapServer (CGI)
È sufficiente usare il comando:
# apt-get install cgi-mapserver
per installare il programma CGI MapServer. Se tutto è andato a buon fine, puntando il browser all'URL: http://localhost/cgi-bin/mapserver dovremmo vedere la seguente stringa
No query information to decode. QUERY_STRING is set, but empty.
Installare un'applicazione mapserver di esempio
Possiamo installare un'applicazione di esempio per vedere le potenzialità di MapServer e testarne il buon funzionamento. Scarichiamo il seguente file:
# wget http://maps.dnr.state.mn.us/mapserver_demos/workshop.zip
decomprimiamolo e spostiamolo all'interno della DocumentRoot di Apache ( /var/www
)
Configurazione e permessi
Dobbiamo configurare l'applicazione ed i permessi su una directory prima di poter procedere.
- creiamo la directory
tmp
nella DocumentRoot:
# mkdir /var/www/tmp
- impostiamo i permessi corretti:
# chown -R www-data:www-data /var/www/tmp # chmod -R ug+rwx /var/www/tmp
Ora editiamo il file /var/www/workshop/index.html
:
- sostituiamo tutte le occorrenze di "mapserv40" con "mapserv"
- inseriamo i seguenti valori:
<input type="hidden" name="map" value="/var/www/workshop/itasca.map"> <input type="hidden" name="program" value="/cgi-bin/mapserv"> <input type="hidden" name="root" value="/workshop"> <input type="hidden" name="map_web_imagepath" value="/var/www/tmp/"> <input type="hidden" name="map_web_imageurl" value="/tmp/">
Preparare l'installazione di MapScript
Assicuriamoci di avere un repository per i pacchetti sorgenti nel nostro etc/apt/sources.list
dopodiché:
# apt-get -s build-dep php4 > builddep-php4-packages # apt-get -s build-dep mapserver > builddep-mapserver-packages # apt-get build-dep php4 # apt-get build-dep mapserver # apt-get install fakeroot # apt-get install dpkg-dev # apt-get install php4-dev
Non preoccupiamoci se dobbiamo sovrascrivere alcune dipendenze, facciamolo tranquillamente di volta in volta, assecondando APT.
Compilazione di PHP4
Ora logghiamoci con il nostro utente normale e:
$ apt-get source php4 $ cd php4-4.3.10 $ fakeroot dpkg-buildpackage
Quando il sistema ci avverte che una dipendenza non è risolta:
dpkg-checkbuilddeps: Unmet build dependencies: libxmltok1-dev
impartiamo il comando:
# apt-get install libxmltok1-dev
Questo comando scarica per noi i sorgenti di PHP4 e li compila. In teoria potremmo anche non attendere il completamento dell'operazione, ma non abbiamo fretta. Compilare PHP in questo modo ci permette di ottenere alcuni file relativi ad Apache di cui abbiamo bisogno.
Completata la compilazione, sempre dalla directory php4-4.3.10
diamo il comando:
$ cp apache-build/regex/.libs/*.o regex/
Compilazione di Mapserver
Sempre dalla nostra home impartiamo i comandi:
$ apt-get source mapserver $ cd mapserver-4.4.1 $ fakeroot dpkg-buildpackage
Anche in questo caso il sistema ci informa che manca la dipendenza libwww-dev (è in conflitto con libxmltok1-dev). Usiamo tranquillamente il comando:
# apt-get install libwww-dev
Ora dobbiamo apportare le modifiche che ci interessano al file di configurazione per il make di MapServer (tutta la trafila fin qui seguita serve proprio ad ottenere un ambiente adatto alla compilazione manuale di questo software!). Digitiamo:
$ fgrep ./configure config.log > conf.new
Ora modifichiamo manualmente conf.new
eliminando il $
iniziale e aggiungendo --with-php=/usr/include/php4/ --with-php-regex-dir=../php4-4.3.10/regex/
al termine del comando di configurazione.
Ora siamo pronti alla compilazione vera e propria:
$ . ./conf.new $ make
Eliminiamo tutti i simboli di debug dall'eseguibile e copiamolo nella directory delle librerie di PHP:
$ strip --strip-unneeded mapscript/php3/php_mapscript.so $ su # cp mapscript/php3/php_mapscript.so /usr/lib/php4/20020429/
Ora dovrebbe essere tutto pronto: non ci resta che testare il funzionamento del modulo.
Testare mapscript
Creiamo il file map.php
all'interno della DocumentRoot di Apache e inseriamo al suo interno queste istruzioni:
<?php dl("php_mapscript.so"); phpinfo(); ?>
Ora puntiamo il nostro browser all'indirizzo http://localhost/map.php. dovrebbe comparire qualcosa di simile a
References
Guida scritta da: keltik | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |