Leopard – Apache, PHP, MySQL tutti su Mac OS X allegramente

Qualche tempo fa scrissi un articolo su come installare i diversi componenti AMP su Windows XP. Dopo l’acquisto del MacBook mi ero ripromesso di fare la stessa cosa non sul nuovo sistema, non appena avessi trovato il tempo di fare l’upgrade a Leopard. Bene, vediamo ora come installare e configurare:

  • Apache.
  • PHP.
  • MySQL.
  • PHPMyAdmin.

Premetto che Leopard è già dotato di Apache 2.2 e del PHP. Ma per esigenze personali ho compilato il PHP dai sorgenti distribuiti da PHP.net. E questo mi ha costretto anche a compilare Apache, in quanto quello compreso in Leopard è a 64bit mentre la libphp5.so compilata dai sorgenti è a 32bit ed impedisce al web server persino di avviarsi.

Fasi Preliminari

E’ necessario installare i tool di sviluppo che trovate direttamente nel DVD di installazione di Leopard. Inseritelo nel lettore del vostro Mac, aspettate che parta lo splashscreen.

Leopard at davidonzo.com

Cliccate su Optional Install per installare i tool XCode mediante il pacchetto XcodeTools.mpkg.

xcode at davidonzo.com

In questo modo saremo in grado di compilare tutti i sorgenti necessari senza particolari problemi. Avremo installato, fra l’altro, il compilatore gcc che ci servirà sia per Apache che per PHP.

Apache

Niente di più semplice. Leopard è già pronto con Apache 2.2. Dovete solo attivare la condivisione web nelle preferenze di sistema.

apache su mac os x at davidonzo.com

Fatto questo accedete via browser a http://localhost (o http://127.0.0.1). Vi si aprirà la pagina di conferma di installazione del webserver. Ma a noi non piace la DocumentRoot configurata di default, ed allora come prima cosa la cambieremo πŸ™‚

Apriamo una finestra del terminale ed accediamo alla directory di Apache:

cd /etc/apache2

Il file di configurazione del webserver è il solito httpd.conf. Apriamolo con vim ed apportiamo le seguenti modifiche.

sudo vim httpd.conf
password:

Notato niente di strano? Ebbene si. Anche su Leopard è stato implementato il comando sudo per aprire ed accedere a file di sistema con tutti i privilegi.

Cerchiamo la riga:

DocumentRoot "/Library/WebServer/Documents"

E modifichiamola in:

DocumentRoot "/Users/VOSTROUTENTE/Sites"

E successivamente cerchiamo la riga:

<Directory "/Library/WebServer/Documents">

E modifichiamola in:

<Directory "/Users/VOSTROUTENTE/Sites">

Per VOSTROUTETE si intende il nome della directory che indentifica la root di sistema del vostro account. Nel mio caso è "davide". Ed inserendo la URI in questo modo la webroot sarà fisicamente nella directory "Siti" del vostro account. State attenti che nel finder il nome della directory che vedete è proprio "Siti", ma è solo un alias dovuto alla lingua italiana. Il nome di sistema dela directory è "Sites" e questo va scritto in ogni file di sistema che in qualche modo interessa questa direttiva.

Per rendere effettive le modifiche riavviamo il webserver:

sudo apachectl graceful

Ma abbiamo detto che il server Apache compreso nella distribuzione Apple non è compatibile con il php compilato dai sorgenti. Quindi, a configrazione ultimata e testata, ricompiliamo il web server dai sorgenti scaricati direttamente da Apache.org. Se lo fate oggi scaricherete la versione 2.2.8. Scompattate l’archivio un po’ dove vi pare, entrate nella directory e digitate il solito trittico di comandi.

sudo apachectl stop
cd httpd-2.2.8
./configure –enable-layout=Darwin –enable-mods-shared=all
make
sudo make install
sudo apachectl start

Fatto questo non ci sarà bisogno di riconfigurare il webserver per modificare la DocumentRoot. Andrà bene e verrà usato il file di configurazione precedentemente editato in /etc/apache2.

MySQL Server

Scaricate il pacchetto binario direttamente da MySQL.org. Installate il pacchetto mysql-5.0.51a-osx10.5-x86.pkg. Potete anche evitare di installare MySQLStartupItem, dato che al momento con Leopard non funziona. Ed anche il pannello di controllo aggiuntivo non va. Ma per quest’ultimo è stata rilasciata una versione funzionante, scaricabile qui.

mysql control panel at davidonzo.com

Purtroppo non c’è ancora modo di avviare automaticamente il server all’avvio del sistema. La preferenza spuntata non funziona. Ma quantomeno risulta agevole avviarlo manualmente.

Librerie aggiuntive: libpng e libjpeg (opzionale)

Se abbiamo intenzione di usare le funzionalità date alla libreria GD del php, abbiamo la necessità di installare le librerie libpng e libjpeg. E’ possibile farlo direttamente utilizzando un archivio binario scaricabile a questo indirizzo. Per semplicità utilizzate il combo installer che in un sol colpo le installa entrambe.

Installazione PHP

Bene, siamo arrivati al clou della nostra avventura. Scaricato il pacchetto con i sorgenti, scompattiamo l’archivio ed accediamo alla directory da terminale.

cd php-5.2.5

Importante è la stringa di configurazione. Un ./configure –help può togliervi molti dubbi. In ogni caso la mia stringa è la seguente. Dopo il ./configure, i soliti comandi per compilare ed installare il pacchetto.


./configure –prefix=/usr/local/php5 –enable-calendar –with-apxs2=/usr/sbin/apxs –enable-mbstring –with-mysqli=/usr/local/mysql/bin/mysql_config –with-mysql=/usr/local/mysql/ –with-gd –enable-soap –with-zlib –with-jpeg-dir=/usr/local/bin –with-png-dir=/usr/local/bin
make
sudo make install
sudo apachectl graceful

Il comando install si occuperà anche di editare il file di configurazione di Apache per permettere il running della libreria libphp5.so. L’ultimo comando serve a far riavviare il webserver in modo da fargli caricare tutte le librerie necessarie.

Non ri rimane che testare l’installazione! Accediamo alla DocumentRoot e creiamo uno nuovo file. Chiamiamolo info.php. Con un qualsiasi editor di testo, scriviamo:

<?php phpinfo(); ?>

Salviamo e chiudiamo il file ed accediamo via browser a http://localhost/info.php. Se vediamo qualcosa del genere, se cose sono andate bene πŸ™‚

php installed on Leopart at davidonzo.com

phpMyAdmin

Anche qui è tutto molto semplice. Basta scaricare l’ultima release del web tool di amministrazione del server MySQL, scompattare l’archivio in /Users/VOSTROUTETE/Sites e magari rinominare la directory in phpmyadmin per maggior comodità.

Avendo avuto cura che il server MySQL sia avviato, accedete via browser a http://localhost/phpmyadmin/scripts/setup.php ed utilizzate l’interfaccia web per la configurazione.

Per un uso in locale, senza troppo star a pensare alla sicurezza di un pc che non sarà mai utilizzato come web server pubblico, basta selezionare:

  • Server hostname: localhost;
  • PHP extensions to use: mysql (o mysqli se intendete usare la libreria improve);
  • Autentication type: config;
  • User for config auth: root;

phpMyAdmin on Leopard at davidonzo.com

Tutto fatto! Anche se secondo me, resta tutto molto più facile su Linux, ma la smetto qui che poi mi dicono che istigo guerre religiose fra sistemi operativi πŸ™‚

58 thoughts on “Leopard – Apache, PHP, MySQL tutti su Mac OS X allegramente”

  1. E io nemmeno lo conoscevo prima di questo commento πŸ˜€

    In ogni caso dipende sempre dal cosa serve. Se interessano configurazioni particolari, soprattutto di PHP, è sempre meglio compilarselo dai sorgenti avendo a disposizione tutte le opzioni di configurazione.

    Per installazioni a cui servono le principali caratteristiche, MAMP per Mac, come EasyPHP per Win sono ottima soluzioni.

  2. Scusa, non riesco a capire cosa vuoi dire quando ti riferisci ai sorgenti scaricati da apache.org. Potresti darmi una delucidazione? E saresti cosi' gentile da elencarmi dettagliatamente le operazioni da fare per l'installazione del pacchetto suddetto? Grazie e scusa per il disturbo.

  3. @ Stefano: http://httpd.apache.org/download.cgi
    Scarica gli UNIX Sources. E' un archivio tar.gz. Scompattalo sul desktop (o dove preferisci).

    Da terminale, entra nella directory che avrai scompattato (si chiamerà httpd-2.2.8) e lancia questi comandi:

    ./configure –enable-layout=Darwin –enable-mods-shared=all
    make
    sudo make install

    Dopo di che riavvia il webserver. Puoi farlo anche da pannello di controllo, disattivando e riattivando la condivisione web, come mostrato in figura sopra.

  4. perfetto!! ho fatto tutto quanto mi hai suggerito, funziona! Ora però ho un altro problema: l'installazione di mysql non va a buon fine. Mi spiego: ho installato da qualche tempo MAMP, sembra che le due applicazioni vadano in conflitto, non capisco il motivo. Il fatto è che comunque mi viene detto che l'installazione di mysql è stata effettuata. Potresti darmi delle indicazioni? Grazie in ogni caso.

  5. Come scritto prima non conosco MAMP, ma sicuramente prima di installare il server MySQL dai binari ufficiali è buona norma stoppare MAMP e magari disinstallarlo cercando di eliminare anche qualsiasi file di configurazione esterno alla directory in application.

    Installato anche il pannello di controllo alternativo linkato sopra?
    Non ti parte MySQL? Che errore ti da il sistema?

  6. configure: error: mysql configure failed. Questo mi viene in output all'avvio della procedura "./configure –prefix=/usr/local/php5 –with-apxs2=/usr/sbin/apxs –enable-mbstring –with-mysqli=/usr/local/mysql/bin/mysql_config –with-mysql=/usr/local/mysql/ –with-gd –enable-soap –with-zlib –with-jpeg-dir=/usr/local/bin –with-png-dir=/usr/local/bin
    " per php 5.2.5. Non so proprio che fare. Anche perchè mi avevano parlato di questo conflitto e nn se ne dice molto bene. Sinceramente sto facendo diversi lavori utilizzando MAMP e non mi va di disinstallarlo completamente. Lo stop dei servizi l'ho eseguito ma penso che non basti per questo tipo di situazioni, occorre qualcos'altro.

  7. MAMP installa anche MySQL vero? Dove lo installa? Se non ti serve la mysqli prova questo, modificando però le direttive del –with-mysql

    ./configure –prefix=/usr/local/php5
    –with-apxs2=/usr/sbin/apxs –enable-mbstring
    –with-mysql=/questo/lo/sai/tu/
    –with-gd
    –enable-soap –with-zlib
    –with-jpeg-dir=/usr/local/bin
    –with-png-dir=/usr/local/bin

  8. PREMESSA è da poco e con tanto sacrificio che cerco di mettere mano al "php" per fare prove in locale del mio sito, tu sei stato molto esaustivo, e tutto funzionava bene. Poi in phpmyadmin involontariamente ho cancellato tutti gli accessi compresi i root e da quel momento mi da "errore 1045" e non riesco da terminale ad accedere alla mia password. Scusami… come posso disinstallare sto "mysqul di MERDA" dal mio Leopard…
    Credimi sto impazzendo… grazie e per favore dammi una mano

  9. Ciao,
    stavo provando a cambiare il file httpd.conf ma non riesco a salvarlo, ho provato anche a cambiare i permessi con chmod ma non ci riesco, …come fare ?
    Fabio

  10. @ Sasha: reinstallato come se facessi un upgrade. Nel file readme contenuto nel binario, trovi le indicazioni delle location.

    @ Fabio: devi essere il super utente per modificare quel file

    cd /etc/apache2
    sudo vim httpd.conf

  11. io nel mio disco originale di xLeopard 10.5.2 non ho le Xcode tools ..come è possibile? ..dove recuperare questa cartella?
    azz..ma io sono proprio sfigato!

  12. aggiungerei per quelli come me che iniziano:
    nel terminale: a per entrare in modalità insert
    ESC per uscire della modalità insert
    shift + 2 volte Z per salvare.

  13. Ciao a tutti,
    Il mio problema è con phpmyadmin, mi da questo errore:

    Messaggio di MySQL: Documentazione
    #2002 – Il server non risponde (o il socket del server locale MySQL non è correttamente configurato)

    ovviamente mysql è attivo da preferenze di sistema

    Qualche suggerimento?
    Grazie in anticipo
    Davide

  14. Scusa l'ignoranza io ho mac os x 10.5.5. Apache è sicuramente installato in quanto se digito http://127.0.0.1 vedo la pagina iniziale ma non riesco a trovare il file httpd.conf per editarlo, cercandolo con il finder non lo ntrova in nessuna cartella. Non esiste nemmeno una cartella etc da nessuna parte, chiedo venia ma sono nuovo di Mac. Spero tu mi possa dare un aiuto. Grazie.

  15. Ciao Giginiello,

    Per trovare quei file devi andarci da terminale. Pechè finder fa navigare solo le directory del tuo utente, ma non ti da accesso al sistema.

  16. Ciao anche io sono nuova di Mac volevo sapere
    quando dici:

    Per rendere effettive le modifiche riavviamo il webserver: sudo apachectl graceful

    cosa significa ? dove devo scrivere questo comando ? devo aprire una nuova finstra del teminale? ho provato a scrivere il comando aprendo una nuova finestra e anche nella stessa finestra in fondo al file appena modificato ma quando lo riapro per controllare le modifiche non sono state salvte .. uffi aiuto non capisco ciao grazie simo

  17. Ci sono riuscita adesso sto cercando i file MySql ma non trovo quello di cui parli ho rovato solo mysql-5.0.67-osx10.5-x86.dmg va bene lostesso?

  18. non va non vedo la pag mi dice che non è possibile connettrsi al server uff ora non so proprio cosa fare aiutoo

  19. retifico tutto , mi sa che funziona non so come ci sono riuscita considerando che ho preso in mano mac da circa un mese e mezzo comunque peare che funga grazie a tutti comunque ciao

  20. @ simo: l'operazione che descrivo io è quella effettuata da terminale. Scrivi il comando

    sudo apachectl graceful

    In una finestra del terminale ed il webserver si riavvia.

    Se non vuoi fare via terminale, puoi tranquillamente aprire il pannello delle opzioni di Leopard, scheda condivisione e fai un disattiva / riattiva la condivisione web.

    Ottieni lo stesso risultato. Spegni e riaccendi apache πŸ™‚

  21. grazie molto gentile posso chiederti un'altra cosa non trovo il file setup.php dentroa a script dell'ultima versione di phpmyadmin ??? come mai ?

  22. con sto fatto sono bloccata non c'è prorpio , la versione che ho scaricato io è phpMyAdmin-3.1.1-rc1-all-languages.zip ne ho scaricate anche altre ma non c'è sto file setup.php l'ho trovato dentro a versioni vecchie ma dicono di non essere compatibili con mysql 5 pi potresti dare il link e il nome del file esatti da scaricare per favore dopo di che sono apposto … credo grazie !!!!

  23. ciao grazie mille x questa guida che x me e' fondamentale..

    Ho solo un errore dopo il ./configure del php circa mysql:
    Configure:error: mysql configure falied. Please check configure.log for more information.

    Ho aperto il log e verso la fine trovo:

    ld: warning in /use/local/mysql/lib/libmysqlclient.dylib, file is not of required architecture
    Undefined symbols:
    "_mysql_error", referenced from:

    Ecc ecc

    Potresti aiutarmi x favore? Dopo un lungo pomeriggio devo ancora venirne a capo..grazie mille Alberto

  24. ho un problema.. inserisco il comando "sudo … password:" e quando mi chiede la password non mi fa inserire nulla!
    come fare?
    grazie mille per il supporto

  25. ciao,
    non riesco a capire una cosa. Tutto funziona perfettamente (apache, mysql, php, libpng e libjpeg, phpmyadmin) ma ogni volta che riavvio il mac devo avviare da terminale l'apache. Non dovrebbe partire automaticamente?

    Grazie

  26. Scusa approfitto ancora di te.
    Volevo sapere se è normale che gli altri computer collegati in rete per accedere alla mia area siti digitino: nomeutente.local e non solo nomeutente?

    Grazie

  27. Sempre nelle preferenze di condivisione controlla il nome dato come host alla tua macchina. Nella schermata che ti dicevo il commento prima, è posto in alto.

  28. Ciao Davidonzo,
    ho un problemino che credo derivi dai permessi dell'utente www di apache.
    Mi spiego meglio, sono su un mac osx leopard ed ho la necessità di creare una CGI che esegua un comando shell o meglio che esegua un vero e proprio script perl(classico "perl nomescript.pl").
    Questo fantastico script Perl dopo aver eseguito le sue svariate operazione (come chiamate http e apertura file) deve salvare l'output su di un file in una determinata directory.
    Ora mi trovo nella situazione in cui lo script gira, crea il file ma non ci scrive sopra.
    Credo che il problema risieda nei permessi associati all'utente che esegue lo script, in tal caso l'utente www di apache, ho provato a modificare il file /etc/sudoers assegnandogli i permessi ma senza risultato.
    Hai qualche idea?
    scusa la confusione con cui ho scritto ma non era così semplice.
    Un saluto.

  29. Ciao Gias,

    Ho avuto anch'io un problema simile una volta. Devo dire che c'ho ragionato poco all'epoca e risolsi modificando brutalmente l'utente di apache.

    Ma per prima cosa controlla le seguenti:
    – Il file in output viene creato nella directory? La directory è quindi server writeble?
    – Il file creato resta vuoto? Che permessi e owner ha?
    – Come lanci lo script? Lanciandolo da browser e facendolo eseguire da un file chiamato via get non dovresti avere problemi.
    – provato ad eseguire lo script fuori dalla root di apache, con output all'interno di una tua directory personale?

  30. Eccomi,
    la soluzione dell'utente apache devo dire che mi sta sfiorando più volte.
    Allora l'output viene creato su un file nella mia document root, che è server writeble o almeno credo (per comodità e test gli ho assegnato privilegi 777 ).
    Si il file viene creato ma resta vuoto. Permessi solo lettura owner utente _www (credo che sia quello di apache).
    Lo script viene lanciato da CGI tramite oggetto di sistema operativo, quindi si lanciandolo nel modo che mi descrivi mi rimane il problema(richiamo la cgi da browser e lo faccio partire).
    in ultimo si ho provato ad eseguire lo script direttamente da shell fuori dalla root di apache dirottando invece l'output sulla mia documentroot e funziona correttamente.
    Credo proprio che sarò costretto a impelagarmi nella gestione degli utenti di leopard.
    fammi sapere se hai news.

  31. Risolto, non era un problema di utenza ma una mia dimenticanza.
    Sono davvero irritato per non essermene reso conto.
    Comunque ti ringrazio molto per il tempo che mi hai dedicato.
    Un Saluto.
    Gias

  32. Sono un neofita di Mac… quando finisco di editare il file httpd.conf non riesco a salvare la mia modifica… mi rimane un -INSERT- in basso.

  33. Ciao Sabia,

    Non è questione di Mac, ma di VIM πŸ™‚

    Dopo aver editato, premi ESC per tornare in modalità comandi, poi

    :w
    :x

    Il primo salva il secondo chiude il file.

    Ciau!

  34. Ari-ciao :-),
    ti disturbo nuovamente.
    Ho seguito tutte le istruzioni e ho finito di installare php5.
    quando lancio il comando di riavvio mi dice:
    [warn] module php5_module is already loaded, skipping

    Ho provato a lanciare phpinfo(); su un file php ma non funge (la documentRoot funge perchè un file html me lo mostra tranquillamente).

    grazie,
    saluti

  35. ciao,
    vorrei sapere se con la nuova versione del SO (snow leopard) funziona tutto bene come la vecchia.
    qualcuno ha provato a fare questa prova?

    grazie
    fede

  36. compplimenti un ottimo forum
    pratico e diretto alla risoluzione dei problemi…

    io ne ho uno, magari per voi banale, che mi fa impazzire

    non riesco a visualizzare la pagina del web server
    digitando dal browser http://localhost esce la risposta di safari
    "Safari non può aprire la pagina “http://localhost/&rdquo; perché il server ha inaspettatamente interrotto la connessione, cosa che a volte avviene quando il server è occupato. Aspetta qualche minuto e riprova."

    SO snow leopard

    cari saluti a tutti

  37. Caspita, per sbaglio ho sballato il file httpd.conf e ora non so come rimediare…
    Dove posso scaricare quello originale? O come posso ripristinarlo???
    Ho snow leopard..

    Grazie a chiunque mi possa aiutare

  38. ho fatto l'aggiornamento alla 5.5 ma non va, rimane sempre in stato di stopped… qualcuno sa darmi qualche spiegazione?

  39. Salve a tutti. (ho snow leopard) Sono un totale inesperto in programmazione e ho da poco iniziato a studiare xhtml. Nel frattempo però sto cercando di capire a cosa servono A M P… ma non riesco a capire tutto… Servono per programmare siti dinamici (web 2.0) giusto? PHP utilizza codice che si può integrare in xhtml giusto? Mentre Apache e Mysql??
    Se io voglio creare un sito dinamico con database sono costretto ad usare questi software no? Non penso che mi basti xhtml… Però non capisco…AMP praticamente trasforma il mio mac in un server?? Per vedere se il mio sito dinamico funziona devo "creare" un server sul mio mac attraverso AMP?? Qualcuno gentilmente mi può dare qualche link dove spiegano, a totali principianti, AMP?
    Grazie a tutti quelli che mi aiuteranno.

  40. Sono una neofita della configurazione e temo di aver fatto danni cercando di seguire il tuo tutorial: quando ho tentato di apportare le modifiche alle righe da te indicate non mi ha permesso di farlo. Al che, da bravo genio quale sono, senza farmi copie di backup delle configurazioni, ho smanettato fino a che (non spiego come, troppo lunga) temo di aver cancellato per sbaglio qualsiasi cosa. Ora, nel digitare cd/etc/apache2 non mi trova più nemmeno la sua esistenza. Che cosa posso fare? Come reinstallare tutto? Sto sperando nell'ultimo aggiornamento per Snow Leopard scaricato dal sito Apple, quando l'immagine disco deciderà di aprirsi come dovrebbe e non darmi errore anche lei. Scusandomi per il linguaggio poco tecnico e coprendomi il capo di cenere per il danno, puoi aiutarmi? Grazie mille, in caso.

Comments are closed.