Old:Debian MapServer/MapScript: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
 
(11 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Old}}
Samba e' un diffusissimo software open source ideato nel 1991 da Andrew Tridgell e rilasciato sotto licenza GPL che permette la condivisione di risorse come directory e stampanti tra macchine windows e GNU/Linux (''UNIX''); si avvale sostanzialmente del protocollo SMB (''server message block'') originario microsoft e basato a sua volta sul protocollo  NetBios (''network basic input output system'') sviluppato da IBM nel 1984.  
== 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.


Si sceglie solitamente l'uso di Samba per poter condividere file e stampanti in una rete mista (''macchine GNU/Linux, ms-windows, mac os..''), in modo da sfruttare un unico protocollo e un unico sistema di autenticazione.
{{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.}}


=La suite=
Happy Hacking!
Analizziamo i programmi che otteniamo dall' installazione della suite samba per Debian GNU/Linux:


<pre># apt-get update && apt-get install samba smbfs</pre>
== 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:
<pre># apt-get install apache phpmyadmin libapache-mod-php4 php4 php4-mysql mysql-server-4.1</pre>


In breve:
== Installazione di MapServer (CGI) ==
;'''smbd''': questo demone e' sostanzialmente il cuore di samba; in ascolto sulla 445/tcp, gestisce le autenticazioni e da accesso ai filesystem e allo spooler di stampa.
È sufficiente usare il comando:
<pre># apt-get install cgi-mapserver</pre>
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>


;'''nmbd''': questo demone in ascolto sulla 139/udp, rende note le risorse condivise tutte le volte che viene interrogato dai client. Per fare un esempio � quel demone che permette la visualizzazione dei serventi samba in Risorse di Rete nei sistemi ms-windows. E' il primo ad avviarsi dei due demoni.
== 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:
<pre># wget http://maps.dnr.state.mn.us/mapserver_demos/workshop.zip</pre>
decomprimiamolo e spostiamolo all'interno della DocumentRoot di Apache ( <code>/var/www</code> )


;'''smbclient''': programma client a riga di comando quasi uguale a ftp (''smbclient trasferisce solo in binary mode''), dotato di diverse funzioni; tra le piu' importanti, quella di listare gli share messi in condivisione dai vari server samba in una rete.
=== Configurazione e permessi ===
Dobbiamo configurare l'applicazione ed i permessi su una directory prima di poter procedere.
* creiamo la directory <code>tmp</code> nella DocumentRoot:
<pre># mkdir /var/www/tmp</pre>
* impostiamo i permessi corretti:
<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"
* 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="root" value="/workshop">
      <input type="hidden" name="map_web_imagepath" value="/var/www/tmp/">
      <input type="hidden" name="map_web_imageurl" value="/tmp/"></pre>


;'''smbmount''' & '''smbumount''': utilizzati per montare/smontare filesystem condivisi.
== Preparare l'installazione di MapScript ==
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
# 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</pre>
Non preoccupiamoci se dobbiamo sovrascrivere alcune dipendenze, facciamolo tranquillamente di volta in volta, assecondando APT.


;'''smbpasswd''': strumento per la creazione utenti samba. Un utente samba dovra' essere anche un utente presente sulla macchina.
=== Compilazione di PHP4 ===
Ora logghiamoci con il nostro utente normale e:
<pre>$ apt-get source php4
$ cd php4-4.3.10
$ fakeroot dpkg-buildpackage</pre>
Quando il sistema ci avverte che una dipendenza non è risolta:
<pre>dpkg-checkbuilddeps: Unmet build dependencies: libxmltok1-dev</pre>
impartiamo il comando:
<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 file relativi ad Apache di cui abbiamo bisogno.
Completata la compilazione, sempre dalla directory <code>php4-4.3.10</code> diamo il comando:
<pre>$ cp apache-build/regex/.libs/*.o regex/</pre>


;'''testparm''': strumento per la verifica del file '''/etc/samba/smb.conf.
=== Compilazione di Mapserver ===
Sempre dalla nostra home impartiamo i comandi:
<pre>$ apt-get source mapserver
$ cd mapserver-4.4.1
$ fakeroot dpkg-buildpackage</pre>
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>
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:
<pre>$ fgrep ./configure config.log > conf.new</pre>
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:
<pre>$ . ./conf.new
$ make</pre>
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
$ su
# cp mapscript/php3/php_mapscript.so /usr/lib/php4/20020429/</pre>
Ora dovrebbe essere tutto pronto: non ci resta che testare il funzionamento del modulo.


;'''nmblookup''': risolve i nomi host di un domain samba (''NetBIOS name'') in indirizzi ip (es: nmblookup ''nomehost'').
== Testare mapscript ==
Creiamo il file <code>map.php</code> all'interno della DocumentRoot di Apache e inseriamo al suo interno queste istruzioni:
<pre><?php
dl("php_mapscript.so");
phpinfo();
?></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]]


=Configurazione del server=
== References ==
==Sezione global==
* [http://nona.net/article/linux/mapscript_compile/ How to compile MapScript on Debian Sarge]
Editiamo il file '''/etc/samba/smb.conf''':
* [[LAMP: Linux, Apache, MySQL e PHP]]
<pre> 
[global]
    allow hosts = 192.168.1.0/24   
    workgroup = debianizzati
    server string = server@debianizzati.org
    browsable = yes
    create mask = 0755
</pre>


Con la sezione global all'interno del file smb.conf abbiamo impostato quei parametri che saranno il modello generale di tutte le eventuali sezioni che verranno.
{{Autori
 
|Autore = [[Utente:Keltik|keltik]]
Ad esempio se  nella successiva sezione, non specificassimo il parametro '''allow hosts''', verra' preso come riferimento '''192.168.1.0/24'''.
 
Ok, in breve:<br>
'''allow hosts''' = range di ip ai quali e' permesso l'accesso alla risorsa<br>
'''workgroup''' = nome del gruppo di lavoro<br>
'''server string''' = stringa che identifica il server<br>
'''browsable''' = rende visibile lo share<br>
'''create mask''' = determina i permessi dei file in condivisione<br>
 
{{Box|Nota|Per puntare a semplicita' e rapidita' di utilizzo, inseriremo solo pochi parametri essenziali per sezione, nel nostro smb.conf. Tuttavia i parametri previsti per questo file sono veramente tanti. Per una panoramica completa fate riferimento alla page (man5) di [http://www.samba.org/samba/docs/man/smb.conf.5.html Samba].
}}
}}
==Condivisione di una directory==
Adesso sempre dentro il nostro smb.conf, creiamo la sezione specifica per la risorsa che vogliamo condividere.  In questo esempio condivideremo una directory.
<pre>
[shared]
    comment = Directory Shared
    path = /dir/da/condividere
    browsable = yes
    read only = yes
    public = yes
    create mask = 0755
</pre>
Altri parametri:<br>
'''comment''' = commento per la directory<br>
'''path''' = percorso della dir condivisa<br>
'''public''' = rende la dir di libero accesso<br>
'''read only''' = setta i files della dir condivisa in sola lettura<br>
==Condivisione di una stampante==
Adesso analizziamo i parametri da aggiungere al file '''smb.conf''' per poter condividere una stampante.
Aggiungiamo alla sezione '''global''':
<pre>
[global]
    printing = [sistema di stampa utilizzato, es: cups, lprng..]
    load printers = yes
</pre>
Creiamo inoltre la sezione '''printers''' che fornira' i parametri di accesso alle nostre stampanti:
<pre>
[printers]
    path = /var/spool/samba
    guest ok = yes
    printable = yes
</pre>
{{Box|Nota|Debian non crea la directory /var/spool/samba. Questa directory e' adibita solo allo spool di stampa, volendo molti la sostituiscono con /tmp. Se decidete di crearla voi, per un corretto funzionamento impostatele i permessi: nobody:nobody con chmod -R 755.
}}
Dopodiche' scriviamo la sezione specifica per la nostra stampante (''es. una camon'').
<pre>
[camon]
    comment = Camon Printer
    path = /var/spool/samba
    browsable = yes
</pre>
==Condivisione di dispositivi di lettura (CD-ROM, DVD..)==
Poniamo come esempio di avere due pc e che solo uno dei due monti un lettore dvd. Bene, guardiamo come poter  accedere ad un file che risiedesse su un supporto dvd, dalla macchina sprovvista di lettore:
<pre>
[dvd]
    comment = Lettore DVD-R
    preexec = mount /media/cdrom
    postexec = umount /media/cdrom
    path = /media/cdrom
    writable = no
</pre>
Parametri supplementari al nostro smb.conf:<br>
'''preexec''' = permette di impostare un'azione che sara' eseguita una volta connessi alla risorsa<br>
'''postexec''' = in questo caso l'azione sara' eseguita quando la risorsa verra' sconnessa<br>
Al momento che dal client monteremo la risorsa condivisa (con smbmount o smbclient) sul server sentiremo montare il dvd, il quale contenuto sara' a nostra disposizione per trasferire file o, in caso di file audio/video, anche di streaming.
Bene, a questo punto il file puo' considerarsi sufficientemente configurato per i nostri scopi.
==Autenticazione==
Preoccupiamoci ora dell'accesso vero e proprio alle risorse messe in condivisione. Due sono i principali metodi di accesso. Possiamo creare un utente samba con smbpasswd, (''tenendo presente che un utente samba deve anche essere un utente presente sulla macchina'') ed attribuirgli poi una password di nostra scelta:
Creazione utente samba:
<pre>
# smbpasswd -a utente
New SMB password: ****
Retype new SMB password: ****
</pre>
Questi sono user e pass coi quali ci loggheremo nel momento in cui connetteremo le risorse condivise (''smbmount, smbclient'').
Se volessimo inoltre consentire l'accesso a tutti gli utenti indistintamente, basterebbe inserire il parametro '''guest ok = yes''' nelle sezioni desiderate. Ad esempio nella sezione shared:
<pre>
[shared]
    comment = Directory Shared
    path = /dir/da/condividere
    browsable = yes
    read only = yes
    public = yes
    create mask = 0755
    guest ok = yes
</pre>
Cosi' facendo potremo loggarci come ospiti digitando solo invio come password.
Bene, riavviamo il server:
<pre>
# /etc/init.d/samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
#
</pre>
Adesso testiamo la validita' del file /etc/samba/smb.conf col comando:
<pre>
# testparm /etc/samba/smb.conf
Load smb config files from /etc/samba/smb.conf
Processing section "[shared]"
Processing section "[camon]"
Processing section "[dvd]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
</pre>
Premendo enter vedremo il resoconto del nostro file.
=Lato client=
==Smbclient==
Spostiamoci sul client:
<pre># apt-get install smbfs smbclient</pre>
Come detto in precedenza, smbclient e'  un programma client ftp-like, utilizzato per l'accesso a un server samba. Guardiamo i suoi principali flags e le sue principali funzioni invece, una volta dentro al server.
===Principali flags===
(''Usare smbclient --help per uno screen completo''):
;'''smbclient -L ''hostname''''': lista tutti gli share di un determinato host. Ad esempio, dal nostro client facciamo richiesta di listare gli share del server (''come password digitiamo  quella dell'user creato con smbpasswd o solo invio''):
<pre>
$ smbclient -L SERVER
Password: ****
Domain=[debianizzati] OS=[Unix] Server=[Samba 3.0.14a-Debian]
        Sharename      Type      Comment
        ---------      ----      -------
        shared          Disk      Directory Shared
        camon          Disk      Camon Printer
        dvd            Disk      Lettore DVD-R
        IPC$            IPC      IPC Service (server@debianizzati.org)
        ADMIN$          IPC      IPC Service (server@debianizzati.org)
Domain=[debianizzati] OS=[Unix] Server=[Samba 3.0.14a-Debian]
        Server              Comment
        ---------            -------
        SERVER              server@debianizzati.org
        CLIENT              server@debianizzati.org
        Workgroup            Master
        ---------            -------
        debianizzati        SERVER
</pre>
Come si vede, nella colonna '''Sharename''' sono elencati i nomi degli share settati in smb.conf, quindi, la nostra directory shared,la nostra stampante e il nostro lettore DVD (''le sezioni [global] e [printers]  non sono visibili poiche' sono sezioni di parametri usate dal programma'').
Nella colonna '''Server ''' sono invece elencati gli hosts facenti parte del medesimo workgroup.
C'e' poi la colonna '''Workgroup''' che visualizza l'host con ruolo di domain master browser nella subnet.
;'''smbclient -U''': Con questo flag possiamo specificare l'username e l'eventule password per il login sulla macchina server.
;'''smbclient -A''': Sostanzialmente uguale a -U ma possiamo dargli il path di un file dal quale attingere l'username e la password.
===Accesso al server===
<pre>
$ smbclient //SERVER/shared
Password: ****
Domain=[SERVER] OS=[Unix] Server=[Samba 3.0.14a-Debian]
smb: \>
</pre>
Adesso siamo dentro al nostro server samba il cui hostname e' SERVER. Sostanzialmente il funzionamento smbclient e' il funzionamento di ftp, ma con in piu' degli utilissimi tools per il down/uploading dei files.
Alcuni input uguali a quelli di una shell di bash sono: '''ls''', '''cd''', '''rm''', '''rmdir''', '''exit''', coi quali ci sentiremo subito a casa nostra.
Otteniamo cmq una lista di comandi utili digitando '''help'''.
'''Download di un file con get'''.<br>
Poniamo come esempio che il contenuto della directory condivisa sia un insieme di files immagine con diverse estensioni e una directory con dentro qualsiasi cosa:
<pre>
smb: \> ls
  .                      D            0  Tue Aug 23 23:57:51 2005
  ..                      D            0  Wed Aug 17 03:05:20 2005
  directory              D            0  Wed Aug 24 12:21:43 2005
  free_kevin.png                    42604  Mon Aug 22 12:19:34 2005
  pokemon.png                      43404  Mon Aug 22 15:15:11 2005
  dorothy_la_may.gif                46134  Mon Aug 21 21:16:00 2005
</pre>
Scarichiamo il file free_kevin.png dalla macchina SERVER alla nostra macchina CLIENT, rinominandolo in kevin.png:
<pre>
smb: \> get free_kevin.png  kevin.png
getting file \ free_kevin.png of size 42604 as  kevin.png(1386.8 kb/s) (average 1386.8 kb/s)
</pre>
Il file sara' salvato nella directory dalla quale ci siamo connessi al server. Qualora il file non venisse rinominato manterrebbe il proprio nome.
===Alcune funzioni===
;'''lowercase''': abilita i files ad essere richiamati da get e mget utilizzando solo caratteri minuscoli. E' utile viste le difficolta' spesso trovate negli share msdos (''case insensitive'').
<pre>
es. di abilitazione dei parametri
smb: \> lowercase on
smb: \> prompt on
</pre>
;'''prompt''': Impostando ''' prompt''' su '''on''' prima di ogni trasferimento ci verra' richiesta una conferma.
;'''showconnect''': mostra l' //host/nome_risorsa in uso.
<pre>
smb: \> showconnect
//SERVER/shared
</pre>
;'''stat nomefile''': Stampa a video i permessi di un file e offre in ordine temporale info sugli accessi ad esso:
<pre>
smb: \> stat  free_kevin.png
File: \free_kevin.png
Size: 101              Blocks: 8      regular file
Inode: 810      Links: 1
Access: (0644/-rw-r--r--)      Uid: 1000      Gid: 1000
Access: 2005-08-24 00:10:39 +0200
Modify: 2005-08-24 00:10:51 +0200
Change: 2005-08-24 00:10:51 +0200
</pre>
===Mask, mget e recurse===
Con il comando '''mget''' abilitiamo il dowload di tutti i file e directory in maniera ricorsiva. Tuttavia possiamo dare a tale comando un parametro (maschera) utilizzando '''mask''' .
Es. nella nostra directory mettiamo di voler scaricare tutti i file con estensione .png:
<pre>
smb: \> mask *png
smb: \> mget
</pre>
In questo modo mget intendera' scaricare tutti i files con tale estensione presenti nella directory corrente.
Tuttavia con mget e' possibile modificare la maschera on-fly digitando semplicemente:
<pre>
smb: \> mget *png
</pre>
In questo modo la funzione mask, manterra' il suo valore di default che e' '*' (''cioe' tutto'').
La funzione '''recurse on''' attiva lo scanning & downloading (nel caso di una maschera) o il dowloading, accedendo anche a tutte le directory presenti nella dir da cui parte il comando.
==Smbmount & Smbumount==
Con '''smbmount''' invece montiamo una risorsa in un mountpoint a nostra scelta.
Montiamo la risorsa shared col comando:
<pre>$ smbmount //SERVER/shared  /path/del/mountpoint</pre>
(''come password digitiamo  quella dell'user creato con smbpasswd o solo invio'')
Cosi' facendo potremmo accedere alla risorsa condivisa, raggiungendo il mountpoint:
<pre>
$ cd /path/del/mountpoint
$ ls
  directory  free_kevin.png  pokemon.png dorothy_la_may.gif
</pre>
=Conclusioni=
Samba e' un software semplicemente straordinario. La sua anima, il file smb.conf e' in perfetto stile Linux; cioe', lo stesso file, puo' divenire enorme e strutturatissimo oppure snello e semplicissimo, a seconda (''e questo e' il vero stile linux'') di quello che un utente vuole.
-------
Autore: [[Utente:Zmo.zmo|zmo]]
[[Categoria:Networking]][[Categoria:Desktop]]

Versione attuale delle 11:32, 29 mag 2016

Emblem-important.png 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.

Info.png 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

Informazioni del modulo MapScript

References




Guida scritta da: keltik Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized