La presente guida è la versione aggiornata di quella scritta più di un anno fa Come installare un ambiente WAMP (Windows, Apache, MySQL, PHP) sul proprio PC.
Attenzione! questa guida è stata scritta ad inizio 2014 e di conseguenza è datata.
Grossomodo il procedimento non è cambiato, ma è bene verificare le note di installazione aggiornate dei singoli software, direttamente sui rispettivi siti: PHP, MariaDB (fork di MySQL), Apache HTTPD
Inoltre, quasi tutti i link riportati di seguito puntano a versioni datate e non più sicure di PHP, Apache e MySQL. Al loro posto vanno usate le ultime versioni stabili rilasciate..
Perchè un ambiente WAMP ?#
La maggior parte dei siti web oggi in circolazione si basa su una soluzione a stack di software open source nota come LAMP: Linux, Apache, MySQL e PHP (Se al posto di Linux c'è Windows si parlerà di WAMP).
- Apache HTTP Server è il web server più diffuso, infatti più del 60% dei siti web viene servito da questo web server (fonti: W3Techs , BuiltWith )
- MySQL è il database relazionale più famoso e utilizzato al mondo (fonte: Wikipedia )
- PHP è il linguaggio server-side più famoso e utilizzato al mondo (fonti: W3Techs , BuiltWith )
Per fare qualche esempio, i seguenti software e di conseguenza tutti i siti che ne fanno uso, si basano sulle tecnologie Apache, MySQL e PHP.
- CMS: WordPress, Drupal, Joomla
- E-commerce: Magento, Prestashop, osCommerce, VirtueMart
- Wiki: MediaWiki, DokuWiki
- CRM: vTiger, sugarcrm
Vediamo allora come installare sul proprio PC Windows una piattaforma WAMP: in questo modo sarà possibile provare in locale uno qualsiasi dei software sopra citati prima di effettuarne il deploy in un ambiente di produzione come può essere un servizio di hosting su internet.
Alcuni casi in cui questa soluzione è particolarmente utile:
- Vogliamo provare una nuova estensione da aggiungere al nostro sito Joomla;
- Vogliamo realizzare il nostro sito web in locale per poi pubblicarlo online;
- Vogliamo imparare ad utilizzare un nuovo CMS/E-Commerce/CRM/…
Sulla rete si trovano dei programmi che automatizzano l'installazione di un ambiente WAMP, ma è meglio imparare a installare le singole parti una alla volta per due motivi:
- Si vuole poter ricreare esattamente le condizioni del servizio di hosting, intese come versioni dei singoli pacchetti;
- Si vuole capire dove mettere le mani per risolvere eventuali problemi che si possono presentare in fase di deploy del nostro sito web;
Per questo motivo nel seguito di questo tutorial vedremo come installare e testare in ordine: Apache, PHP, MySQL e la sua interfaccia di amministrazione phpMyAdmin.
Struttura#
Per evitare problemi di permessi che possono emergere sulle ultime versioni di Windows (7) installeremo tutti questi pacchetti sotto C:\wamp14
.
La directory C:\workspace
sarà invece deputata a contenere tutti i nostri file html/php o le varie installazioni di Joomla, WordPress o di qualsiasi applicazione PHP di nostro interesse.
Nel seguito viene descritto come installare Apache, PHP, MySQL e phpMyAdmin.
Apache#
Passi di installazione:
- dal sito http://www.apachelounge.com/download/ scarichiamo i binari di una release stabile di Apache per Windows. Per esempio http://www.apachelounge.com/download/VC11/binaries/httpd-2.4.7-win32-VC11.zip
- come indicato sul sito prima di procedere all'installazione di apache è necessario scaricare e installare i Visual C++ Redistributable for Visual Studio 2012
- estraiamo l'archivio zip di apache sotto
C:\wamp14\apache2.4
; - configuriamo apache modificando il file
C:\wamp14\apache2.4\conf\httpd.conf
come indicato di seguito ( < prima, > dopo):
< ServerRoot "c:/Apache24"
> ServerRoot "c:/wamp14/apache2.4"
< Listen 80
> Listen 8014
< DocumentRoot "c:/Apache24/htdocs"
> DocumentRoot "c:/workspace"
< <Directory "c:/Apache24/htdocs">
> <Directory "c:/workspace">
< AllowOverride None
> AllowOverride All
< ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/"
> ScriptAlias /cgi-bin/ "c:/wamp14/apache2.4/cgi-bin/"
< <Directory "c:/Apache24/cgi-bin">
> <Directory "c:/wamp14/apache2.4/cgi-bin">
- se non l'abbiamo ancora fatto creiamo la directory
C:\workspace
e copiamoci dentro il file di provaC:\wamp14\apache2.4\htdocs\index.html
Uso:
Apache può essere utilizzato in modalità standalone o può essere installato come servizio di sistema.
In entrambi i casi è necessario lanciare le opportune operazioni dalla directory bin
di apache.
Per prima cosa aprire il prompt dei comandi cmd.exe
e posizionarsi nella directory bin
di apache: cd C:\wamp14\apache2.4\bin
A questo punto è possibile eseguire vari comandi:
- Apache in modalità standalone:
- avviare apache in modalità debug:
httpd.exe -e debug
(Ctrl+C per terminarlo); - terminare apache: chiudere il prompt dei comandi o terminarlo con Ctrl+C ;
- avviare apache in modalità debug:
- Apache come servizio di sistema:
- Installare apache come servizio di sistema in modo che parta automaticamente all'avvio del computer:
httpd.exe -k install
- Disinstallare il servizio apache:
httpd.exe -k uninstall
- Avvaire apache come servizio:
httpd.exe -k start
- Fermare il servizio apache:
httpd.exe -k stop
- Riavviare il servizio apache:
httpd.exe -k restart
- Installare apache come servizio di sistema in modo che parta automaticamente all'avvio del computer:
Test:
- avviare apache in una delle modalità sopra descritte;
- aprire un browser e puntarlo all'indirizzo http://localhost:8014/: se tutto è andato bene dovrebbe apparire la pagina html It Works che sul disco si trova sotto
C:\workspace
.
Troubleshooting:
- Problema: Apache non parte, ma non è chiaro il motivo.
- Soluzione: da un prompt dei comandi (cmd.exe) avviare apache in modalità debug.
PHP#
Passi di installazione:
- Dal sito http://windows.php.net/download/ scegliamo una release binaria di PHP per Windows che sia stabile e compatibile con la versione di Apache installata. Per sapere che versione scegliere leggere attentamente la sezione Which version do I choose? presente sul sito http://windows.php.net/download/. Volendo utilizzare il php 5.3 (attualmente ancora il più diffuso) in modalità FastCGI optiamo per la versione VC9 x86 Non Thread Safe ;
- come indicato sul sito prima di procedere all'installazione di php è necessario scaricare e installare i Visual C++ Redistributable for Visual Studio 2008 SP1 x86 ;
- Estraiamo l'archivio zip scaricato sotto
C:\wamp14\php5.3
; - Volendo eseguire il php in modalità FastCGI è necessario aggiungere il relativo modulo ad apache. Per farlo bisogna scaricare dal sito di apache http://www.apachelounge.com/download/ i moduli aggiuntivi per la versione scelta. In questo caso http://www.apachelounge.com/download/VC11/modules/modules-2.4-win32-VC11.zip;
- Dall'archivio dei moduli aggiuntivi è necessario estrarre il file
mod_fcgid.so
e copiarlo sottoC:\wamp14\apache2.4\modules
; - A questo punto editiamo il file di configurazione di apache
C:\wamp14\apache2.4\conf\httpd.conf
per aggiungere ad apache il supporto al php ( < prima, > dopo):
< Options Indexes FollowSymLinks
> Options Indexes FollowSymLinks ExecCGI
< DirectoryIndex index.html
> DirectoryIndex index.php index.html
> LoadModule fcgid_module modules/mod_fcgid.so
>
> FcgidInitialEnv PATH "c:/wamp14/php5.3;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem"
> FcgidInitialEnv SystemRoot "C:/Windows"
> FcgidInitialEnv SystemDrive "C:"
> FcgidInitialEnv TEMP "C:/WINDOWS/Temp"
> FcgidInitialEnv TMP "C:/WINDOWS/Temp"
> FcgidInitialEnv windir "C:/WINDOWS"
> FcgidBusyTimeout 300
> FcgidIOTimeout 300
> FcgidIdleTimeout 300
> FcgidConnectTimeout 16
> FcgidMaxRequestsPerProcess 1000
> FcgidMaxProcesses 50
> FcgidMaxRequestLen 8131072
> # Location php.ini:
> FcgidInitialEnv PHPRC "c:/wamp14/php5.3"
> FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
>
> AddHandler fcgid-script .php
> FcgidWrapper "c:/wamp14/php5.3/php-cgi.exe" .php
- Copiamo il file di configurazione di esempio del php
C:\wamp14\php5.3\php.ini-development
sul fileC:\wamp14\php5.3\php.ini
- Editiamo il file di configurazione del php
C:\wamp14\php5.3\php.ini
come segue:
< max_execution_time = 30
> max_execution_time = 120
< display_errors = On
> display_errors = Off
< display_startup_errors = On
> display_startup_errors = Off
< html_errors = On
> html_errors = Off
< ;error_log = php_errors.log
> error_log = "c:\workspace\php-errors.log"
< ; extension_dir = "ext"
> extension_dir = "c:\wamp14\php5.3\ext"
< upload_max_filesize = 2M
> upload_max_filesize = 20M
> upload_tmp_dir="C:\windows\Temp"
> session.save_path="C:\windows\Temp"
< ;extension=php_bz2.dll
> extension=php_bz2.dll
< ;extension=php_curl.dll
> extension=php_curl.dll
< ;extension=php_gd2.dll
> extension=php_gd2.dll
< ;extension=php_gettext.dll
> extension=php_gettext.dll
< ;extension=php_mbstring.dll
> extension=php_mbstring.dll
< ;extension=php_exif.dll ; Must be after mbstring as it depends on it
> extension=php_exif.dll ; Must be after mbstring as it depends on it
< ;extension=php_mysql.dll
> extension=php_mysql.dll
< ;extension=php_mysqli.dll
> extension=php_mysqli.dll
< ;extension=php_openssl.dll
> extension=php_openssl.dll
< ;extension=php_pdo_mysql.dll
> extension=php_pdo_mysql.dll
< ;extension=php_pdo_odbc.dll
> extension=php_pdo_odbc.dll
< ;extension=php_soap.dll
> extension=php_soap.dll
< ;extension=php_sockets.dll
> extension=php_sockets.dll
< ;extension=php_sqlite3.dll
> extension=php_sqlite3.dll
< ;extension=php_xmlrpc.dll
> extension=php_xmlrpc.dll
< ;extension=php_zip.dll
> extension=php_zip.dll
< mysqlnd.collect_memory_statistics = On
> mysqlnd.collect_memory_statistics = Off
< session.bug_compat_42 = On
> session.bug_compat_42 = Off
< session.bug_compat_warn = On
> session.bug_compat_warn = Off
Test:
- Creiamo il file
C:\workspace\phpinfo.php
con il seguente contenuto
<?php
phpinfo();
?>
- fermiamo e riavviamo Apache in una delle modalità sopra descritte;
- apriamo un browser e ci colleghiamo a http://localhost:8014/phpinfo.php : se funziona dovrebbe apparire una pagina di informazioni sulla configurazione attuale di php.
Troubleshooting:
Diagnosi: Eseguire Apache in modalità debug come descritto precedentemente e vedere gli errori riportati.
MySQL#
Passi di installazione:
- Dal sito http://dev.mysql.com/downloads/mysql/ scarichiamo una versione stabile per Windows di MySQL Community Server (N.B. non è necessario registrarsi c'è un link per saltare la registrazione). Per esempio: http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16-win32.zip
- Estraiamo l'archivio zip sotto
C:\wamp14\mysql5.6
Uso:
Anche MySQL, come Apache, può essere eseguito in modalità standalone o può essere installato come servizio di sistema.
In entrambi i casi è necessario lanciare le opportune operazioni dalla directory bin
di MySQL.
Per prima cosa aprire il prompt dei comandi cmd.exe
e posizionarsi nella directory bin
di MySQL: cd C:\mysql5.6\bin
A questo punto è possibile eseguire vari comandi:
- MySQL in modalità standalone:
- avviare MySQL:
mysqld.exe --standalone
(Ctrl+C per terminarlo); - terminare MySQL:
mysqladmin.exe -u root -p shutdown
;
- avviare MySQL:
- MySQL come servizio di sistema:
- Installare MySQL come servizio di sistema in modo che parta automaticamente all'avvio del computer:
mysqld.exe --install
- Disinstallare il servizio apache:
mysqld.exe --remove
- Installare MySQL come servizio di sistema in modo che parta automaticamente all'avvio del computer:
Nota: l'utente amministratore di MySQL è root e non ha password.
phpMyAdmin#
phpMyAdmin è un software scritto in php che consente di amministrare dei database MySQL (creare utenti di database, creare database, eseguire backup/restore, lanciare query, ispezionare il database, ecc.)
Passi di installazione:
- Dal sito http://www.phpmyadmin.net/home_page/downloads.php scarichiamo l'archivio zip dei sorgenti di una versione stabile di phpMyAdmin compatibile con le versioni di PHP e MySQL che abbiamo installato in precedenza. Ad esempio: phpMyAdmin-4.1.7-all-languages.zip;
- Estraiamo l'archivio zip in
C:\workspace\phpmyadmin
; - Configurazione:
- copiamo
C:\workspace\phpmyadmin\config.sample.inc.php
inC:\workspace\phpmyadmin\config.inc.php
e lo editiamo assegnando alla variabile$cfg['blowfish_secret']
un valore a caso come nell'esempio seguente.$cfg['blowfish_secret'] = 'jasghfsafuiihqwbc87234uiewjhbd37887rgut9b4'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
e impostiamo la variabile$cfg['Servers'][$i]['AllowNoPassword']
atrue
per consentire la login senza password.$cfg['Servers'][$i]['AllowNoPassword'] = true;
- copiamo
Test:
Ci colleghiamo a http://localhost:8014/phpmyadmin ed eseguiamo l'accesso con l'utente root e senza password.