WAMP su Windows 7

Questo articolo spiega come configurare una struttura WAMP su un Windows 7 installando i singoli programmi separatamente.

Esistono anche dei kit preconfezionati come, a puro titolo di esempio, EasyPHP, ma è più istruttivo costruire da soli la propria configurazione in quanto si imparano meglio il funzionamento e l’interazione dei vari componenti, si possono aggiornare i singoli programmi senza dipendere da terzi ed è molto più semplice di quello che si possa credere. Le istruzioni di seguito partono da alcuni presupposti e hanno alcune limitazioni, tra cui:

  • l’installazione non ha una sicurezza adatta ad un server pubblico, ma è pensata per un server di sviluppo protetto da altri metodi;
  • la piattaforma su cui viene installato il tutto è un Windows 7 a 64 bit e, dove possibile, vengono installate le versioni a 64 bit dei programmi;
  • vengono installate le ultime versioni disponibili dei software cercando il più possibile di mantenere i default;
  • tutti i download suggeriti riguardano solamente programmi gratuiti, anche se per alcune utility esistono alternative a pagamento;
  • ripeto: non usate questa procedura per configurare un server pubblicato su Internet.

Queste istruzioni sono valide per le ultime versioni di Apache (2.4), PHP (5.5) e MariaDB (10.0), con versioni precedenti potrebbero essere necessarie ulteriori modifiche o accorgimenti per far funzionare il tutto.

Prima di installare il software AMP è bene verificare di avere i tool necessari o comodi per alcune operazioni.

Editor

Deve supportare i file con terminazione di riga UNIX non solamente come conversione, ma anche come modalità di editing e salvataggio. Un buon editor gratuito è Notepad++, un’alternativa è PSPad; ci sarebbe anche Crimson Editor, ma non viene più aggiornato da tempo.

Amministrazione SQL

I duri e puri possono scegliere di usare solamente la versione CLI dell’amministrazione di MariaDB, gli altri possono utilizzare normalmente HeidiSQL e passare alla CLI solamente quando serve.

HeidiSQL viene aggiornato molto spesso e supporta anche le connessioni via SSH, PostgreSQL e Microsoft SQL Server.

Visualizzazione dei log

I log del server http sono molto importanti in fase di sviluppo perché PHP visualizza lì errori e warning ed è possibile visualizzare messaggi di debug tramite la funzione error_log().

Un buon programma per visualizzare log in tempo reale è SnakeTail.

Librerie Visual C

PHP e Apache sono compilati in Visual C e necessitano delle librerie apposite che sono contenute nel pacchetto Visual C++ Redistributable for VisualStudio 2012.

MariaDB/MySQL

Partiamo con il server SQL: MariaDB è il fork GNU GPL creato dopo l’acquisizione di MySQL da parte di Oracle. Come si potrà constatare, MariaDB è pensato per sostituire MySQL con il minimo delle differenze sotto il profilo della gestione (drop-in replacement).

Scaricare dalla pagina dei download l’ultima versione stabile nel formato MSI a 64 bit e avviare l’installazione del pacchetto. Si può scegliere di lasciare la password di root vuota ed  è consigliabile usare UTF-8 come set di caratteri di default per i nuovi database; per il resto normalmente vanno bene le impostazioni predefinite.

Se il PC con Windows 7 non viene utilizzato sempre per lo sviluppo si può andare nei servizi e impostare il servizio MySQL in avvio manuale oppure dare questo comando da una shell con privilegi elevati ricordando che lo spazio dopo start= è obbligatorio:

sc config MySQL start= demand

Per vedere se MariaDB è online avviare HeidiSQL, creare una connessione TCP a 127.0.0.1 con utente root e la password impostata o nessuna password se si è deciso di non impostarne alcuna. Dovrebbero essere visualizzati quattro database: information_schema, mysql, performance_schema e test; quest’ultimo può essere tranquillamente cancellato.

PHP

Andare sulla pagina dei download per Windows di PHP, scaricare la versione VC11 Thread Safe a 64 bit e copiare il contenuto dello ZIP in C:\php.

Copiare il file C:\php\php.ini-development in C:\php\php.ini, aprirlo con un editor e apportare queste modifiche:

  • alcuni progetti potrebbero richiedere short_open_tag = On
  • error_reporting = E_ALL causa la visualizzazione di un sacco di warning, se si desidera un output pulito e la visualizzazione degli errori nel log di Apache, impostare error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
  • togliere il commento da extension_dir = "ext"
  • togliere il commento da extension=php_mysqli.dll e dalle altre estensioni utili per il progetto che si sta realizzando
  • impostare date.timezone = Europe/Rome

Potrebbero essere necessarie altre modifiche più specifiche per il progetto che si sta realizzando, tenere presente che quando si modifica C:\php\php.ini bisogna riavviare Apache per rendere attive le modifiche.

Per confermare che i moduli vengano correttamente caricati e che non ci siano errori in php.ini, aprire una shell, andare in C:\php e digitare

php -m

non dovrebbero apparire errori e dovrebbe venir visualizzato l’elenco dei moduli caricati.

Apache

Apache è il server http che fornisce le pagine web al browser e, se necessario, invoca PHP per elaborarle; è in questo momento il server più utilizzato su Internet.

I binari per Windows sono scaricabili da Apache Lounge, quelli che ci interessano sono VC11 a 64 bit in formato ZIP. Estrarre la cartella dall’archivio e copiarla nella root del disco C: in modo che il suo path sia c:\apache24; è bene mantenere il default almeno quando si fa la prima installazione di test.

Dal medesimo sito si possono scaricare anche alcuni moduli aggiuntivi, sempre VC11 a 64 bit; nel pacchetto c’è un utilissimo modulo di rotazione dei log, che sopperisce alla mancanza di logrotate.

Aprire una shell con privilegi elevati e digitare

c:\Apache24\bin\httpd -k install

per installare il servizio; si può ignorare l’eventuale messaggio di errore relativo al nome del server, l’importante è che il servizio di Apache sia configurato tra i servizi di Windows. Anche in questo caso con

sc config Apache2.4 start= demand

si può configurare Apache in avvio manuale.

Per apportare alcune modifiche alla configurazione, specialmente per abilitare il supporto di PHP, editare C:\Apache24\conf\httpd.conf:

  • modificare DirectoryIndex aggiungendo index.php e index.htm, quest’ultimo per supportare il default delle estensioni in ambiente Windows
  • aggiungere in fondo al file queste tre righe:
    LoadModule php5_module "c:/php/php5apache2_4.dll"
    AddHandler application/x-httpd-php .php
    PHPIniDir c:/php

Per default Apache risponde alla porta 80 di tutti gli indirizzi IP del computer, per cambiare questo comportamento modificare la direttiva Listen. Se Apache si rifiuta di partire con un errore tipo

(48)Address already in use: make_sock: could not bind to address

significa che qualche altro programma sta utilizzando la porta assegnata. Per capire qual è il programma in questione aprire una shell con privilegi elevati e digitare

netstat -a -b

nell’elenco guardare qual è il programma che blocca la porta che Apache tenta di utilizzare.

Se si vuole abilitare il modulo di rotazione dei log copiare il file mod_logrotate.so in C:\Apache24\modules e aggiungere queste righe a C:\Apache24\conf\httpd.conf:

LoadModule log_rotate_module modules/mod_log_rotate.so
RotateLogs On
RotateInterval 86400
RotateLogsLocalTime On

Se si vogliono avviare e fermare i servizi su comando creare un file batch con questi comandi per avviare i servizi

sc start Apache2.4
sc start MySQL

e un altro file con questi comandi per fermarli

sc stop Apache2.4
sc stop MySQL

I batch vanno eseguiti con privilegi elevati.

È, quindi il momento di avviare (o riavviare) i servizi per vedere se tutto funziona.

Dopo aver avviato i servizi di Apache e MariaDB se si digita http://127.0.0.1/ sul proprio browser dovrebbe apparire la scritta It Works!

Per verificare anche PHP creare un file C:\Apache24\htdocs\test.php con questa riga di testo:

<?php phpinfo(); ?>

Puntando il browser su http://127.0.0.1/test.php dovrebbe essere visualizzata la diagnostica di PHP.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

Un pensiero riguardo “WAMP su Windows 7”

Spazio per un commento