Questo articolo cerca di spiegare come compilare e installare Apache 2 + Php + Mysql su sistemi Linux partendo dai sorgenti.
Questa configurazione (Apache2 + PHP) è ancora in fase sperimentale quindi potrà subire modifiche nel corso del tempo.
Le vie conosciute fino alla versione 1.3.xx di Apache sono due:
-shared module
-static module
Utilizzeremo la prima strada: php viene caricato come modulo dal web server e non direttamente integrato in Apache. Sicuramente il sistema sarà leggermente più lento nel processare codice php ma la grande comodità rimarrà la possibilità di aggiornare php senza dover necessariamente ricompilare Apache.
Requisiti
- Una linux box
- Sorgenti di PHP disponibili presso http://www.php.net/
- Sorgenti di Apache 2 src disponibili presso http://www.apache.org
- Compliatore Ansi C (Gnu C) e altri tool necessari come make, bison ecc. Di solito sono inclusi nelle varie distribuzioni. Potete verificare la presenza lanciando da shell make o gcc. Se nn verrà trovato alcun file visitate http://www.gnu.org.
- Un programma come TAR per estrarre il contenuto dei src ;)
Le versioni utilizzate sono al momento (maggio 2004):
- httpd-2.0.48.tar.gz
- php-4.3.6.tar.gz
- mysql-standard-4.0.18-pc-linux-i686.tar.gz
Compilare e installare mysql
E' sicuramente la parte più semplice che affronteremo: estrarre il pacchetto e spostarlo su /usr/local dopodichè seguire i semplici comandi che si possono trovare sul file INSTALL (da distro a distro può variare qualcosa)
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
# ln -s full-path-to-mysql-VERSION-OS mysql
# cd mysql
# scripts/mysql_install_db
# chown -R root
# chown -R mysql data
# chgrp -R mysql
# bin/mysqld_safe --user=mysql &
Se non si è ricevuto alcun messaggio di errore verificare che il servizio sia attivo con netstat -nat
controllando che la porta 3306 tcp sia in ascolto.
Compilare Apache
Come accennato, si sceglie di compilare php come modulo dinamico (o condiviso = shared).
Il codice oggetto php non verrà incluso nel binario httpd e si potrà, modificando una riga, abilitarlo o meno nella configurazione finale.
# cd /usr/src
# tar zxvf httpd-2.0.48.tar.gz
# cd /usr/src/httpd-2.0.48
Ora si può configurare Apache per la compilazione. Quasi ogni software che necessita una compilazione contiene uno script "configure" che controlla la presenza dei compilatori necessari per l'installazione, le librerie, permette di passare dei parametri quali la dir di destinazione, se abilitare o meno determinate opzioni, ecc.
# ./configure --help
offrirà la lista completa delle opzioni che si possono specificare, normalmente iniziano con "--with-***" o "--enable-***"
# ./configure --prefix=/www --enable-so
La prima opzione specifica la directory di destinazione nella quale verrà installato il web server, se omessa la dir di default è /usr/local/apache2
.
Quando una nuova versione di php o apache viene rilasciata basterà rinominare /www in /www_old e installare la nuova versione nuovamente su /www. Se l'installazione non presenta problemi basterà copiare i file di configurazione dalla dir /www_old alla solita /www.
Altro motivo è la possibilità di disinstallare completamente php e Apache con un semplice
#rm -rf /www
La seconda opzione --enable-so abilita il modulo so, permettendo ad Apache di caricare i moduli dinamici. Si abilita questa opzione poichè php verrà compilato come modulo dinamico.
Ora si può compilare con il comando make. Make legge il contenuto del file Makefile (target) ed esegue le istruzioni in esso contenute. Dopodichè tiene traccia delle modifiche apportate e delle dipendenze fra i vari file, ricompilando il codice soltanto quanto necessario. Risulta utilissimo in fase di sviluppo e testing.
# make
# make install
Per avviare il server:
# /www/bin/apachectl start
Se non ci sono errori è possibile collegarsi col browser e visualizzare la pagina di documentazione di default:
# lynx http://localhost
Per stoppare il server web:
# /www/bin/apachectl stop
Installazione php
# cd /usr/src
# tar -zxvf php-4.3.6.tar.gz
# cd php-4.3.6
Anche per php le opzioni che si possono utilizzare sono molte: permettono di abilitare l'utilizzo di specifici database, di particolari estensioni, ecc. Per un elenco:
# ./configure --help
Le estensioni non sono tutte integrate nel core php ma vanno abilitate a mano.
Ad esempio per la creazione di immagini si può compilare php con l'opzione --with-gd, per funzionare le librerie gd devono essere installate. Se i parametri inseriti il sistema risponderà con un messaggio di errore. Soprattuto le prime volte non è consigliabile utilizzare estensioni non indispensabili.
Per compilare php come modulo condiviso si deve fornire il percorso dell'utility apxs, contenuta su /www/bin:
# ./configure --prefix=/www/php --with-apxs2=/www/bin/apxs --with-config-file-path=/www/php --with-mysql
La prima opzione specifica la dir di destinazione di php, se omessa quella di default è /usr/local, la seconda opzione --with-apxs2 specifica che vogliamo installare php come modulo condiviso di apache, la terza opzione --with-config-file-path specifica che php dovrà andare a recuperare il file php.ini nella dir /www/php.
Il file php.ini contiene numerosi parametri relativi al funzionamemto di php.
La quarta opzione --with-mysql abilita il supporto all'accesso a database mysql, se la dir di mysql non è /usr/local/mysql potete inserire il percorso dopo l'opzione --with-mysql=/dir/mysql
A questo punto è possubili compilare e installare php:
# make
# make install
Quest'ultimo comando installa nella dir /www/modules
il modulo php che di dovrà richiamare da Apache e inserire nel file di configurazione (/www/conf/httpd.conf) con questa linea:
LoadModule php4_module modules/libphp4.so
E' inoltre necessario inserire un'altra linea nel file di configurazione in modo che Apache, ogni volta che viene richiesta una pagina con suffisso php, la processi con il modulo php prima di inviarla al client:
AddType application/x-httpd-php .php
E' infine necessario creare il file di configurazione php.ini che può essere copiato dalla dir dei sorgenti:
# cp /usr/src/php-4.3.6/php.ini-dist /www/php/php.ini
.
A questo punto si può riavviare Apache per lanciarlo con il supporto PHP, compilato a sua volta per usare come database
di backend MySQL.
Per testare se tutto funziona correttamente e verificare le opzioni con cui php è stato compilato, creare un file d'esempio (info.php) con questo contenuto:
<? phpinfo(); ?>
inserirlo nella document root di Apache (/www/htdocs/html) e provare a vederlo con un browser puntando a http://localhost/info.php
Prima analisi di httpd.conf, settaggio dei parametri base. Tool grafici per la configurazione.
Satrt and Kill service
Ho compilato ed installato Apache2 PHP4 e Mysql4, come si crea lo script di avvio o shoutdown del servizio??
Nella SuSE 9.1, installata senza server APACHE-MySQL-PHP, non è presente il file /etc/init.d/httpd o /etc/init.d/apache2.
Ciao