Sviluppo software

Come installare un ambiente WAMP (Windows, Apache, MySQL, PHP) sul proprio PC (aggiornamento 2014)

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:


< 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 prova C:\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 ;
  • 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

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:


<     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 file C:\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:

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;
  • 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

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 in C:\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'] a true per consentire la login senza password.$cfg['Servers'][$i]['AllowNoPassword'] = true;

Test:

Ci colleghiamo a http://localhost:8014/phpmyadmin ed eseguiamo l'accesso con l'utente root e senza password.

Autore: Lorenzo Chiodi
Senior software developer con più di 16 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Giovanni.

Che soluzione cerchi?#

Read more!

Newsletter

Ti è piaciuto questo articolo? Iscriviti alla newsletter

Di tanto in tanto pubblichiamo nuovi articoli come questo. Se vuoi essere avvisato lascia il tuo indirizzo e-mail di seguito.

Non invieremo mai SPAM e non condivideremo la tua e-mail con altri. Per maggiori informazioni consulta la privacy policy.

Attendere prego...

closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menushareIcona sharelinkIcona linkarrow upwardIcona arrow upward