Tutorial

Configurare un server in locale Apache + PHP su un Mac

In questa guida abbiamo riassunto le principali operazioni per avviare, verificare e lavorare un server Apache PHP mediante un sistema operativo OS X.

L’uso di un web server PHP + MySQL in locale, di fatto, è molto utile in fase di test di un nuovo sito, tipicamente prima di metterlo online al fine di garantire la massima funzionalità e stabilità dello stesso.

Configurare web server in locale su un Mac

Se avete un qualsiasi Mac potrebbe interessarvi una procedura per fare in modo di installare in locale un web server, seguendo quanto suggeriremo in questa nuova guida (riferita in particolare al sistema operativo più recente al momento in cui scriviamo, cioè OS X Mountain Lion 10.8).

Si noti come molti dei comandi successivi richiedano i privilegi di amministratore (comando sudo) per funzionare, ovvero l’inserimento della password.

Bisogna premettere una cosa, a questo punto: la Apple ha rimosso l’opzione di condivisione web dalle preferenze di sistema, e per motivi di sicurezza Apache e PHP5 sono già presenti per quanto siano disabilitati di default. In questo genere di operazioni il comando apachectl è stato progettato per aiutare l’amministratore del sistema ad eseguire le più comuni operazioni del demone httpd di Apache.

Quali sono i file di configurazione?

Il file di configurazione di Apache è httpd.conf all’interno del path /etc/apache2, mentre il PHP.ini (che si può personalizzare anche all’interno dei piani di hosting avanzati) è dentro la cartella /etc/.

Come determinare la DocumentRoot di Apache?

Aprire una finestra del terminale e copia-incollare uno dei seguenti due comandi alternativi:

grep --color DocumentRoot /etc/apache2/httpd.conf
grep --color '^DocumentRoot' /etc/apache2/httpd.conf

In questo modo otterremo una risposta dal sistema del tipo (opzione 1):

DocumentRoot "/Library/WebServer/Documents"

oppure (opzione 2, si noti che i commenti sono precedenti da # e sono irrilevanti per il sistema):

# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/Library/WebServer/Documents"
# This should be changed to whatever you set DocumentRoot to.
# access content that does not live under the DocumentRoot.

Quello che ci interessa è il valore della variabile DocumentRoot, che è in questo caso /Library/WebServer/Documents: questo significa che avrete bisogno di salvare e creare tutti i file PHP/HTML/CSS/JS e i vari formati di immagine all’interno di tale directory perchè siano visibili lato server.

Come avviare/fermare/riavviare il web server Apache?

Per effettuare questa operazione sarà necessario digitare uno dei seguenti comandi, che nell’ordine (uno per riga) servono a:

  1. Avviare il web server;
  2. Stoppare il web server;
  3. Riavviare il web server (ad esempio in seguito a modifiche della configurazione di sistema);
  4. Riavviare il web server in modalità graceful (ovvero nel riavvio le connessioni aperte non vengono abortite, mentre i vecchi file di log vengono chiusi).
sudo apachectl start
sudo apachectl stop
sudo apachectl restart
sudo apachectl graceful

Verificare la configurazione

Per farlo basta aprire una finestra del browser (Firefox, Chrome, Opera o altri) e digitare l’indirizzo localhost:

http://127.0.0.1/
http://localhost

Se inoltre vi trovate in una rete nella quale vi è stato assegnato un indirizzo IP, potete in alternativa digitare direttamente quell’indirizzo: il risultato sarà simile alla screenshot mostrata di seguito.

safari-httpd-first-run

Come posso modificare il file index.html?

Per farlo è sufficente digitare da terminale:

sudo vi /Library/WebServer/Documents/index.html

inserire ora la propria password di amministratore e modificare il file in questione secondo il consueto markup HTML. Salviamo le modifiche ed andiamo a cliccare su “aggiorna” nella finestra del browser con l’indirizzo locale del webserver: dovremmo vedere immediatamente le modifiche che abbiamo effettuato.

Come faccio ad abilitare il supporto a PHP5 su OS X?

Editate il file apposito da terminale con il comando:

sudo vi /etc/apache2/httpd.conf

ed andate a cercare la riga:

LoadModule php5_module libexec/apache2/libphp5.so

assicurandovi che non sia commentata. In altri termini (versione commentata):

#LoadModule php5_module libexec/apache2/libphp5.so

versione non commentata (PHP5 abilitato):

LoadModule php5_module libexec/apache2/libphp5.so

Per concludere l’operazione dovremo riavviare il server:

sudo apachectl -k restart

Potete adesso creare un file php (editandolo):

sudo vi /Library/WebServer/Documents/phpinfo.php

Inserire il seguente frammento di codice:

<?php
 //Display the configuration info, line, php.ini location, build date, Web Server, System, Version and more.
 phpinfo(INFO_GENERAL);
?>

digitare nella finestra del browser, infine:

http://localhost/phpinfo.php

e dovremmo vedere la schermata di informazioni su PHP, che ci permette di vedere tra l’altro moduli abilitati, versione del linguaggio, impostazioni di sicurezza, abilitazione del mod_rewrite e così via.

Come faccio a caricare il web server in automatico all’avvio?

I comandi presentati sono certamente un po’ scomodi da eseguire manualmente ogni volta, specie se siete in fase di produzione o test del sito. Per questo motivo potete pensare di abilitare il caricamento automatico del server all’avvio del sistema operativo. Per farlo il comando da terminale è il seguente:

sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Al successivo riavvio di OS X Mountain lion il web server sarà attivo in automatico (ovviamente al prezzo di rallentare leggermente la fase di caricamento iniziale).

keliweb business

6 commenti

  1. Ciao Stefano, può darsi che nel tuo Mac non è impostata la risoluzione del nome “localhost” nel file /etc/hosts, per scoprirlo prova a digitare questo indirizzo nel tuo browser dopo aver avviato i servizi su MAMP: http://127.0.0.1:888 se funziona il problema è quello descritto.

    Saluti

  2. Ciao a tutti scusate l’ignoranza, ma quando ho creato il file prova phpinfo.php, come posso salvarlo dal terminale?Grazie mille per la risposta e la pazienza

  3. Ciao Paolo se stai usando vi/vim come editor ti basterà uscire dalla modalità di inserimento premendo “Esc” e per salvare digita :x (due punti e x).

    Saluti

    1. Salve Nicola,
      in questo caso il modo migliore per capire il problema è consultare i log degli errori di apache. Lì troverà utili indicazioni per risolvere il problema.

Lascia un commento

Back to top button