Guida all'installazione di un sistema WAMP (12/2007)

di Marcello Vezzelli

Introduzione

Per sistema WAMP si intende un'installazione che integra Apache, MySQL e PHP in ambiente Windows.
I pacchetti sono disponibili singolarmente in diversi formati di distribuzione (installer, binari, sorgenti) e sono disponibili anche dei setup integrati (tipo EasyPHP).
Questo documento descrive la procedura di installazione manuale dei pacchetti, per ottenere un sistema WAMP completo e facilmente aggiornabile e manutenibile.

Download dei pacchetti

Apache: utilizziamo i binari di ApacheLounge, già ottimizzati con VC++2005 SP1 per gli ultimi processori.
http://www.apachelounge.com/download/binaries/httpd-2.2.6-patched-win32-x86-ssl.zip
Abbiamo bisogno anche del VC++2005 SP1 qualora non fosse già installato sul nostro sistema.
http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&DisplayLang=it
MySql: utilizziamo la distribuzione dei binari community edition senza setup, direttamente da www.mysql.com
http://dev.mysql.com/downloads/mysql/5.1.html
http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-noinstall-5.1.22-rc-win32.zip/from/http://na.mirror.garr.it/mirrors/MySQL/
PHP: utilizziamo la distribuzione binaria per win32:
http://www.php.net/get/php-5.2.5-Win32.zip/from/a/mirror
http://it2.php.net/get/php-5.2.5-Win32.zip/from/it.php.net/mirror
PHPmyadmin: per gestire al meglio mysql installiamo anche questo pacchetto, scaricandolo da
http://www.phpmyadmin.net
http://sourceforge.net/project/downloading.php?groupname=phpmyadmin&filename=phpMyAdmin-2.11.2.2-all-languages-utf-8-only.7z&use_mirror=kent
Per la gestione dei file .zip, si consiglia l'utilizzo di 7-zip disponibile su
http://www.7-zip.com

Installazione

Decidiamo una cartella destinazione che conterrà tutto il nostro pacchetto, ad esempio
C:\wamp
Creiamo la cartella se non esiste.

Installazione PHP

Creiamo la cartella C:\wamp\PHP e scompattiamo al suo interno lo zip della distribuzione PHP.
Creiamo le cartelle
C:\wamp\PHP\sessiondata
C:\wamp\PHP\temp
C:\wamp\PHP\logs
C:\wamp\PHP\includes
Fare una copia del file
C:\wamp\PHP\php.ini-recommended
e chiamarla php.ini, poi apriamola con un editor (blocco note va bene).
Scorriamo ora il file .ini e procediamo con poche semplici configurazioni: per una configurazione personalizzata dei molti parametri disponibili si rimanda alla guida di PHP.
Se il server è di sviluppo, modificare
display_errors = On
altrimenti lasciare su Off (per evitare di mostrare errori in produzione).
error_log = c:\wamp\PHP\logs\phperror.log
[..]
; Windows: "\path1;\path2"
include_path = ".;c:\wamp\PHP\includes"
[..]
; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:\wamp\PHP\ext"
[..]
; Temporary directory for HTTP uploaded files (will use system default if not specified).
upload_tmp_dir = C:\wamp\PHP\temp
[..]
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_sockets.dll
[..]
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
session.save_path = "C:\wamp\PHP\sessiondata"
Salviamo il file php.ini.
Dobbiamo ora aggiungere alla variabile d'ambiente PATH il percorso dell'installazione PHP.
Click col destro su Risorse del Computer -> Proprietà -> Avanzate -> Variabili d'ambiente
Nell'elenco di sotto cercare "Path" e fare doppio click. Aggiungere
;C:\wamp\PHP
in coda alla stringa.
Confermare con OK e riavviare il pc.
E' necessario riavviare perché altrimenti Windows non riconosce correttamente la modifica di questa variabile d'ambiente globale.

Installazione Apache

Installiamo il VC++ 2005 SP1 se non è già presente nel sistema, avviando il setup.
Scompattiamo lo zip di apache dentro alla cartella C:\wamp.
Apriamo ora il file C:\wamp\Apache2\conf\httpd.conf per una prima configurazione.
ServerRoot "c:/wamp/Apache2"
Al termine dell'elenco dei moduli, aggiungere
LoadModule php5_module "c:/wamp/php/php5apache2_2.dll"
PHPIniDir "c:/wamp/php"
[..]
DocumentRoot "c:/wamp/Apache2/htdocs"
[..]
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "c:/wamp/Apache2/htdocs">
[..]
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
[..]
Dopo
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
</FilesMatch>
aggiungere
<Files ~ "\.inc$">
   Order allow,deny 
   Deny from all
</Files> 
<Files ~ "\.bak$">
Order allow,deny
Deny from all
</Files>
(questo inibisce il download dei file .inc e .bak)
[..]
ScriptAlias /cgi-bin/ "c:/wamp/Apache2/cgi-bin/"
[..]
<Directory "c:/wamp/Apache2/cgi-bin">
Dopo
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
aggiungere
    AddType application/x-httpd-php .php
[..]
Salvare il conf così modificato.
Aprire un prompt di dos (Start->Esegui cmd [invio]) e posizionarsi sulla directory dei binari di Apache.
cd c:\wamp\Apache2\bin
Installiamo il servizio:
httpd -k install [invio]
Avviamo il servizio:
net start apache2.2 [invio]
Se non abbiamo fatto errori, dovrebbe funzionare tutto. Come facciamo per verificarlo?
Cancelliamo il contenuto di C:\wamp\Apache2\htdocs e creiamo il file index.php che contiene:
<?php
   phpinfo();
?>
Poi proviamo ad accedere a http://localhost/ , dovremmo vedere una pagina riassuntiva di tutte le configurazioni php.

Installazione di MySQL

Scompattiamo lo zip dentro alla cartella C:\wamp
Rinominiamo la cartella "mysql-5.1.22-rc-win32" in "mysql"
Cancelliamo le seguenti cartelle:
Embedded
include
lib
mysql-test
scripts
sql-bench
Fare una copia del file my-medium.ini e chiamarlo my.ini.
Aprire questo file con blocco note.
Se si vuole che mysql sia raggiungibile solo da locale (è preferibile per questioni di sicurezza), dopo le linee
# The MySQL server
[mysqld]
port		= 3306
aggiungere
bind-address=localhost
Salvare il file my.ini.
Aprire un prompt di dos e posizionarsi sulla directory dei binari di mysql.
cd c:\wamp\mysql\bin
Cancelliamo i file di debug che non ci servono:
del *.pdb
del *.map
del mysqld-debug.exe
Installiamo il servizio:
mysqld --install
Avviamo il servizio:
net start mysql
Per controllare che funzioni tutto proviamo a collegarci con il client testuale.
mysql -uroot -p
Alla richiesta di password diamo invio (di default la password di root è vuota)
Impostiamo una password di root:
SET PASSWORD FOR root@localhost=PASSWORD('password_di_root');
Uscire dal client con exit [invio]

Installazione di PHPmyadmin

Scompattare il file .zip dentro alla cartella C:\wamp\Apache\htdocs
Rinominare la cartella "phpMyAdmin-2.11.2.2-all-languages-utf-8-only" in "phpmyadmin"
Salvare il codice che segue nel file C:\wamp\Apache\htdocs\phpmyadmin\config.inc.php
<?php
	$cfg['Servers'][1]['host'] = 'localhost';
	$cfg['Servers'][1]['extension'] = 'mysql';
	$cfg['Servers'][1]['connect_type'] = 'tcp';
	$cfg['Servers'][1]['compress'] = false;
	$cfg['Servers'][1]['auth_type'] = 'http';
?>
Aprendo l'url http://localhost/phpmyadmin si accede al servizio, dopo aver inserito come nome utente 'root' e la relativa password.
Per iniziare, è consigliato selezionare "privilegi" e aggiungere uno o più utenti. Conviene anche cancellare gli utenti root@127.0.0.1 e root@production.mysql.com, lasciando solo root@localhost per evitare di fare confusione.

Aggiornamenti

Installare gli aggiornamenti dei vari pacchetti è piuttosto semplice.

Aggiornamento di Apache

Fare una copia del file C:\wamp\Apache2\httpd.conf
Aprire un prompt di dos e fermare il servizio:
net stop apache2.2
Scompattare il nuovo zip sovrascrivendo la cartella Apache2
Conviene sempre confrontare il nuovo httpd.conf con il vecchio, potrebbero essere state inserite nuove opzioni o parametrizzazioni diverse. Per fare questo, utilizzate un buon textfile compare e ripristinate le modifiche che avevate fatto al vostro httpd.conf nel nuovo.
Se non vi interessano eventuali nuove parametrizzazioni, ripristinate il vostro httpd.conf sovrascrivendolo al nuovo.
Riavviare il servizio con
net start apache2.2

Aggiornamento di PHP

Aprire un prompt di dos e fermare il servizio apache:
net stop apache2.2
Scompattare il nuovo zip sovrascrivendo la cartella PHP
Confrontare il nuovo php.ini-recommended con php.ini e integrare eventuali nuove configurazioni (aiutatevi con un buon textfile compare). Se non vi interessano eventuali nuove configurazioni, lasciate il php.ini così com'è. Riavviare il servizio con
net start apache2.2

Aggiornamento di PHPMyAdmin

Scompattare il nuovo zip sovrascrivendo la cartella PhpMyAdmin.

Aggiornamento di MySql

Aprire un prompt di dos e posizionarsi sulla cartella dei binari mysql:
cd c:\wamp\mysql\bin
Effettuiamo un dump del database per sicurezza (inserire la password di root quando richiesta):
mysqldump -uroot -p >C:\wamp\mysqldump.sql
fermare il servizio mysql:
net stop mysql
Scompattare il nuovo zip sovrascrivendo la cartella mysql
Cancellare i file così come descritto nella procedura di installazione
Riavviare il servizio con
net start mysql

Conclusioni

Con questa procedura abbiamo ottenuto una installazione WAMP completamente contenuta in C:\wamp e facilmente trasportabile su altri pc.
Le operazioni da fare dopo aver copiato la cartella di installazione sono: