PHP E MYSQL LEOPARD, COME ATTIVARE UN SERVER WEB COMPLETO CON MAC OS X.5 (LEOPARD)
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Tutorial n. 002 (versione 1.1 / sttembre 2009) Leopard, PHP e MySQL Come attivare un server web completo con Mac OS X.5 (Leopard) http://www.inerziasoft.eu InerziaSoft.eu pag. 1 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Indice Storico revisioni.............................................................................3 Licenza e altro ............................................................................... 3 Marchi............................................................................................. 3 Note ................................................................................................. 3 Attivare Apache ............................................................................. 4 Attivazione del PHP ....................................................................... 5 Installare MySQL............................................................................ 9 CMS.................................................................................................... 13 Amministrazione di MySQL..............................................................13 Interfacce utente per MySQL.......................................................15 phpMyAdmin..................................................................................... 16 Installazione...................................................................................... 17 Sequel Pro......................................................................................... 20 MySQL Tools ..................................................................................... 20 Navicat Lite ........................................................................................ 21 Riassunto ..................................................................................... 21 Appendice A: Backup .................................................................. 23 Appendice B: Il Terminale ........................................................... 25 InerziaSoft.eu pag. 2 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Storico revisioni rev data sezioni 1.0 Aprile 2009 tutte 1.1 Settembre 2009 notizie aggiuntive sui software di gestione MySQL alcuni esempi dʼuso di MySQL Licenza e altro Questo tutorial deve essere considerato come freeware: potete cioé scaricarlo ed utilizzarlo senza che nulla mi sia dovuto. Siete incoraggiati a distribuire questo documento in formato pdf e potete inoltre inserirlo in altri download, sempre che non venga fatto pagare alcunché allʼutente finale. In cambio, chiedo di lasciare inalterati i riferimenti al nostro sito (inerziasoft.eu) e di citare la fonte. Il contenuto è stato rivisto e molti errori sono stati eliminati; non posso però affermare che non ce ne siano altri, per cui non posso essere ritenuto responsabile di eventuali perdite di dati conseguenti alle azioni indicate in questo tutorial. Posso solo dire che tutta la sequenza di azioni è stata da me effettuata ed è documentata dalle figure prese direttamente dal vivo. Se ritenete che questo tutorial possa avere un certo valore e non sapete come sdebitarvi... la soluzione è semplice: fate una piccola donazione, usando il link che trovate sul sito www.inerziasoft.eu alla sezione download! Se avete trovato un errore, o per altre segnalazioni, vi prego di contattarci allʼindirizzo info@inerziasoft.eu Marchi Apache, PHP, MySQL ed altri marchi indicati in questo tutorial sono proprietà dei rispettivi produttori. Note I percorsi ed i nomi di file e cartelle sono riportati in carattere mono-spaziato, mentre i comandi da terminale sono anche evidenziati con il colore verde su fondo nero, in omaggio ai vecchissimi terminali di tempo fa. I riferimenti a comandi da menu sono indicati in grassetto corsivo; come al solito, i punti (...) al termine di un menu indicano che verrà aperta una finestra di dialogo. In questo tutorial capiterà spesso di dover indicare i percorsi di cartelle nel sistema e nella home dellʼutente; avrete certamente notato che alcune cartelle mostrano un nome italiano (o, come si dice, nazionalizzato). Libreria, Applicazioni, Documenti, ecc... Questi nomi sono prodotti dal Finder per completare la nazionalizzazione: una facilitazione in più per lʼutente normale, ma dobbiamo tenerne conto se vogliamo entrare nel cuore del Mac. In realtà tali cartelle hanno nomi inglesi e noi dobbiamo usare questi quando diamo comandi nel Terminale. Quindi, se stiamo usando il Terminale i nomi saranno Applications, InerziaSoft.eu pag. 3 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Documents, Library, ecc... mentre quando siamo nel Finder dovremo cercare Applicazioni, Documenti, Libreria, ecc... In questo tutorial capiterà di usare entrambe le codifiche: sarà semplice capire in che caso ci troviamo; se qualcosa non torna con i nomi italiani, provate ad usare quelli inglesi e viceversa! Inoltre, spesso in questo tutorial avremo bisogno di accedere a cartelle del sistema Unix che fa da base a Mac OSX, che di solito sono invisibili. Per arrivare a queste cartelle possiamo usare il comando menu del Finder Vai→Vai alla cartella... (con scorciatoia da tastiera Cmd-Shift-G), scrivere il percorso e cliccare Vai: si aprirà una finestra del Finder sulla cartella cercata. Quando invece dovremo aprire uno di questi file, lo trascineremo sul nostro editor di testi preferito; facciamo però attenzione: lʼeditor scelto non deve introdurre formattazioni al testo o caratteri diversi dal testo. TextEdit può andar bene, ma io consiglio TextWrangler, la versione free di BBEdit, perché permette un ottimo controllo di cosa si salva. Inoltre, tramite il comando File→Open Hidden... è facile aprire anche i file normalmente nascosti. Attivare Apache Su Leopard arriva installata la versione 2 del server HTTP Open Source. Come con Tiger, l'attivazione è semplicissima: Preferenze di Sistema, click su Condivisione e nella lista dei servizi... facciamo click su Condivisione Web (potrebbe venirvi chiesta la password di amministratore): Lʼeffetto lo vediamo sulla destra della lista, con lʼaccensione del led verde: InerziaSoft.eu pag. 4 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 A fianco della lista sono riportati gli URL ai quali occorre puntare il browser per accedere da un altro computer ai siti su questo Mac. I corrispondenti URL sono disponibili anche come localhost: allʼindirizzo http://localhost/ troveremo il sito del nostro sistema, mentre allʼindirizzo http://localhost/~nomeUtente vedremo la pagina di inizio di quell'utente. Potremmo anche cliccare direttamente sugli indirizzi indicati in Preferenze di Sistema. Se cliccando su tali indirizzi compare un messaggio di errore (forbidden), verificate che sia presente il file /etc/apache2/users/nomeutente.conf (al posto di nomeUtente mettete il nome del vostro utente); tale file di configurazione è pre- installato nelle ultime versioni di Leopard ma non nelle prime. Se questo file non esiste, aprite un nuovo file in TextWrangler, scrivete attentamente le seguenti righe (sostituite il vostro nome utente al posto di nomeUtente: Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all e salvatelo, appunto nella cartella indicata. Tale file di configurazione indica ad Apache di considerare tale cartella come sito web con opzioni di default. Con Apache siamo a posto: le impostazioni di default andranno bene per la maggior parte degli usi, per cui non dobbiamo fare altro. Il percorso dove andare a costruire il sito del computer (quello raggiungibile con il primo URL) è: /Library/WebServer/Documents/ mentre il sito di un utente è posizionato nella cartella Siti (che in realtà si chiama Sites): /Users/nomeUtente/Sites/ Se siete solo interessati a costruire un sito non dinamico, per esempio usando iWeb, avete a disposizione quello che può servire. Se invece siete interessati a siti dinamici, che possono presentarsi in modo diverso in funzione delle condizioni, allora avete bisogno di un linguaggio di script lato server: al momento della richiesta della pagina, il server elabora lo script e spedisce la pagina risultante al browser dellʼutente. Uno di questi linguaggi di script, interpretato al momento della richiesta, è il PHP. Attivazione del PHP Se è acceso, spegnamo Apache andando nelle preferenze di sistema, come indicato in precedenza. Rispetto a Tiger (Mac OS X.4), il file di configurazione di Apache si trova nella cartella: private/etc/apache2/httpd.conf (mentre con Tiger era in /private/etc/httpd/httpd.conf). Dato InerziaSoft.eu pag. 5 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 che /etc è un link, lo troviamo anche in /etc/apache2/httpd.conf. Apriamolo con TextWrangler, che permette di vedere e aprire i file nascosti (Open hidden...) e digitando Cmd-F, facciamo una ricerca per trovare la riga che contiene LoadModule php5: LoadModule php5_module libexec/apache2/libphp5.so La riga è commentata, cioé con il simbolo ʻ#ʼ ad inizio riga, per cui finora non veniva considerata; togliamo tale simbolo, in modo che Apache esegua il comando allʼavvio. Diversamente da Tiger, su Leopard non cʼè bisogno di definire i tipi MIME per il php, poiché sono già pronti: infatti se andiamo allʼultima riga del file di configurazione, troviamo Include /private/etc/apache2/other/*.conf Infatti, se diamo unʼocchiata in questa cartella, troveremo il file php5.conf dove nelle prime righe vengono associate le estensioni .php e .phps al modulo PHP; in questo modo, quando Apache viene chiamato a servire via web una certa cartella, andrà a cercare non solo i file html o htm, ma anche i file con estensione .php e .phps. Per conoscenza (ci servirà dopo), cerchiamo (sempre utilizzando la finestra di ricerca, richiamata con Cmd-F) la riga con lʼistruzione DocumentRoot "/Library/WebServer/Documents" DocumentRoot è la directory radice, quella dove Apache cerca di default il sito web quando riceve una richiesta http col nome/indirizzo IP del computer. Volendo, possiamo anche dare unʼocchiata agli altri parametri: il file è molto ben commentato, anche se in inglese; badiamo però a non cambiare nulla, almeno per adesso. Per esempio, verso la fine possiamo trovare una linea commentata: # Include /private/etc/apache2/extra/httpd-vhosts.conf Se dovessimo sviluppare più siti contenuti in locazioni diverse sullʼhard disk, dovremmo togliere il commento anche a questa riga, per attivare i Virtual Host. cioé computer virtuali contenenti siti web. Sul Mac questo è necessario solo se volessimo appunto usare locazioni web non inserite nella cartella Siti (Sites) del nostro utente; infatti, tale cartella è già abilitata. Per confermarlo, notiamo che nel nostro http.conf, che non abbiamo ancora chiuso, possiamo trovare poco più sopra al comando appena visto, il comando attivo (non commentato) Include /private/etc/apache2/extra/httpd-userdir.conf Aprendo questo file, troveremo al suo interno i due comandi UserDir Sites Include /private/etc/apache2/users/*.conf Il primo dice ad Apache di considerare la cartella Sites di ogni utente come autorizzata a contenuti web, mentre il secondo gli dice di prevedere i permessi di accesso a tali cartelle come descritto nel file nomeUtente.conf; in questo modo viene permesso lʼaccesso web alla sola cartella Siti di ogni utente, anche se la richiesta arriva dalla rete. Giusto per chiudere il giro, apriamo anche il file indicato relativo allʼutente /private/etc/apache2/users/nomeUtente.conf dove troviamo lʼindicazione strutturata xml: Options Indexes MultiViews InerziaSoft.eu pag. 6 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 AllowOverride None Order allow,deny Allow from all che sono proprio identici a quelli relativi alla cartella principale indicata nella DocumentRoot (li troviamo attorno alla riga 177 di httpd.conf). In altre parole, quando avviamo Apache2, questo considera come corrette e identiche le richieste di fornire contenuti web sia dalla DocumentRoot che dalla cartelle Siti di ogni utente. I permessi di default sono molto restrittivi, ma per i nostri scopi vanno benissimo. Notiamo ancora una volta che nel file, come anche nei comandi da Terminale, le cartelle appaiono con il loro nome originale, non tradotto. Ora chiudiamo tutti i file che abbiamo aperto, controllando che lʼunico che ci chiede di essere salvato sia il primo (httpd.conf); se lo chiedesse anche un altro, vuol dire che inavvertitamente abbiamo cambiato qualcosa: rispondiamo quindi Sì solo a httpd.conf. Il salvataggio di questo file potrebbe chiederci la password di amministratore: infatti stiamo toccando un file dellʼutente root (che consiglio di non attivare: se non sapete come si fa, meglio! Si tratta di un utente con molti privilegi, ma anche pericoloso per la sicurezza, anche se il nostro Mac non è direttamente collegato a internet). Ora dobbiamo riavviare Apache, per cui torniamo nelle Preferenze di Sistema e togliamo il check a Condivisione Web: attendiamo che sulla destra compaia “Condivisione Web: disattiva” e poi clicchiamo nuovamente sul check box per riattivarla. Durante le operazioni potrebbe esserci richiesta password di amministratore. La conferma che tutto è andato bene è nella solita “spia” verde a destra. Per quelli di voi più audaci, dirò che la stessa operazione può essere fatta da Terminale (dentro la cartella Applicazioni→Utility), scrivendo il comando sudo apachectl start dove abbiamo usato sudo per dare il comando con privilegi di amministratore (super user do); ci verrà chiesta la password. Se dovessimo fermarlo, bisogna sostituire start con stop e se dovessimo fermarlo e riavviarlo, basterebbe usare restart. Semplice, no? Ad ogni modo, se non siete sicuri nellʼuso del Terminale, lʼutilizzo delle Preferenze di Sistema ha lo stesso effetto. Ora possiamo controllare che tutto sia a posto; prima di tutto, controlliamo che Apache sia attivo, aprendo Safari e scrivendo lʼindirizzo del web server interno: http://localhost Si aprirà la pagina di default del sito principale: InerziaSoft.eu pag. 7 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Questo ci fa capire che Apache è attivo e ci sta mostrando la pagina già pronta, che si trova nella cartella /Libreria/WebServer/Documents (cioé, proprio la DocumentRoot - si tratta della Libreria del sistema, non di quella utente). Nelle precedenti operazioni abbiamo anche agito per attivare il PHP: sempre usando TextWrangler, creiamo un nuovo file in cui inseriremo una sola riga: (niente spazi tra ʻʼ) e poi salveremo, con molta fantasia, con il nome info.php nella cartella /Library/WebServer/Documents/ che è quella indicata come DocumentRoot nel file di configurazione di Apache; andiamo cioè a posizionare il file proprio nella posizione che Apache considera come localhost. Notiamo che in questa cartella esistono molti altri file: sono quelli necessari per la presentazione della pagina che abbiamo appena visto; a dir la verità, noi ne abbiamo usato solo uno: quello in italiano (o comunque nella lingua del sistema operativo). Se pensiamo in seguito di costruire un sito in questa posizione, può essere una buona idea creare una cartella (p.es. chiamandola ʻvecchioSitoʼ) in cui mettere tutti questi file: da quel momento, il sito di default non funzionerà più, ma potremmo sempre ripristinarlo, riportando i file nella loro posizione originale. Nel momento del salvataggio, è bene abituarsi a controllare che TextWrangler stia salvando il file con i caratteri di fine linea di Unix, cliccando sul pulsante Option della finestra di salvataggio; al momento non è importante, ma potrebbe diventarlo in seguito. Per verificare lʼattivazione del modulo PHP, scriviamo in Safari lʼindirizzo http://localhost/info.php Se tutto è a posto, si aprirà la pagina di informazioni del PHP, simile a questa, dove ho riportato solo le prime righe: InerziaSoft.eu pag. 8 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Abbiamo quindi attivo Apache con il PHP: se conosciamo il linguaggio PHP, possiamo già scrivere qualche pagina, anche se non avendo un database, dovremo portarci dietro variabili di sessione e la cosa può diventare faticosa. Tuttavia, se volete prendere dimistichezza con questo linguaggio di script, potete fermarvi qui e divertirvi a costruire pagine dinamiche. Tuttavia dopo breve tempo, scoprirete che un database diventa necessario per siti più avanzati; passiamo allora al passo successivo: lʼinstallazione di MySQL. Però, prima di proseguire, qualche annotazione sulla sicurezza: se il nostro Mac è collegato in rete con la condivisione web attivata, tutto quello che andremo a mettere nella cartella /Libreria/WebServer/Documents/ sarà disponibile sul web una volta che il vostro Mac sia raggiungibile dallʼesterno: non metteteci nulla di importante se non conoscete le tecniche apposite per proteggerlo. Tuttavia, le cose non sono così semplici: non è immediato mettere a disposizione della rete il nostro sito web. Se infatti siamo in una rete locale (router NAT), lʼindirizzo visibile dallʼesterno non è quello indicato nelle Preferenze di Sistema; in più, tale indirizzo cambia ad ogni sessione e comunque dopo un certo periodo di tempo, a meno che non acquistiamo un indirizzo statico dal nostro provider. Diciamo pure che il modo migliore per rendere visibile il nostro sito è di affittare uno spazio web da uno dei molti ISP; in questo modo avremmo anche una protezione adeguata per i nostri dati. In questo caso, useremo il nostro Mac con Apache, PHP e MySQL come base per lo sviluppo, trasferendo poi il tutto sul server remoto dopo aver fatto con comodità tutte le prove necessarie; va da sé che dovremo scegliere un hosting Linux, che sarà praticamente uguale allʼarchitettura del nostro Mac. Passiamo quindi allʼultimo tassello, il database. Installare MySQL Gratuito, creato da Sun, con possibilità di versione a pagamento. Si trova già pronto sulle versioni Server di Mac OSX, mentre sulla versione standard deve essere installato. Scaricare la corretta versione di MySQL dal sito http://dev.mysql.com/downloads. InerziaSoft.eu pag. 9 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Scegliete il Package Format, versione per Mac OS X 10.5 (x86_32) (potremmo anche usare la versione a 32 bit, anche se per il momento non la sfrutteremmo: bisogna attendere Snow Leopard!); attualmente la versione è la 5.1.36, di circa 63 MB. Una volta cliccato sul download che vogliamo, compare una pagina in cui è riportato il file che stiamo per scaricare e la richiesta di registrarsi; a voi decidere se farlo o meno: il download potrà comunque essere effettuato. Il vantaggio nel registrarsi sta nel poter ricevere notizie di aggiornamenti, inviti a seminari web gratuiti, ecc... In altre parole, se volete solo provare MySQL, potete saltare la registrazione. Se invece contate di proseguire nella conoscenza, allora può essere conveniente. Vi posso assicurare che non vi arriverà spam (per lo meno, a me non è successo). Se decidete per il no, il link per il download è quasi nascosto in una scritta a fondo pagina. Nella schermata successiva scegliete un mirror (preferite quello italiano) e vi troverete il file cercato nella cartella di Download. Lʼinstallazione è semplicissima (se per qualche motivo avevate già installato MySQL, fermate il server prima di partire): • doppio click sul file dmg appena scaricato e doppio click sullʼicona del disco; • doppio click sul pacchetto di installazione con lo stesso nome del file scaricato (mysql-5.1.36... ecc ecc) e si avvia lʼinstallazione nel modo tipico di MacOS; su alcune versioni precedenti di OSX, poteva comparire un messaggio di errore (You cannot install on this disk): se vi capita tornate indietro e ricominciate: si deve installare regolarmente. • quando necessario scegliete lʼhard su cui installare (se non ci dovesse essere lo spazio necessario sarete avvisati); • se tutto è a posto, otterremo il normale messaggio al termine dellʼinstallazione: InerziaSoft.eu pag. 10 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Lʼinstallazione viene posta nella cartella /usr/local/mysql-versione (con lʼattuale versione il nome è mysql-5.1.36-osx10.5-x86_32); inoltre, per evitare problemi negli aggiornamenti, viene anche creato nella stessa cartella /usr/local un link a tale cartella con il nome mysql. Se per caso una cartella con lo stesso nome esiste già, viene rinominata a /usr/local/mysql.bak. Allʼinterno, nella cartella /usr/local/mysql/docs sono contenuti i file di informazione, mentre tutti gli eseguibili sono in /usr/local/mysql/bin. MySQL richiede per il funzionamento che sia attivo un utente ʻmysqlʼ, di cui però non dobbiamo preoccuparci in quanto OS X arriva con questo utente già definito. Se vogliamo che il server MySQL sia attivato alla partenza di OS X, dobbiamo anche installare il pacchetto MySQLStartupItem.pkg, presente nel disco di installazione: doppio click e verrà installato (fatto una volta, non servirà ripeterlo) e per farlo ci verrà chiesta nuovamente la password di amministratore; la posizione di installazione è: /Library/StartupItems/MySQLCOM Ormai sappiamo come raggiungere le cartelle nascoste: ci vuole poco a verificare lʼavvenuta installazione di questo elemento. Non dimentichiamo anche di copiare il file MySQL.prefPane nella cartella delle Preferenze di Sistema: /Library/PreferencesPanes anche qui ci verrà richiesta la password di amministratore. A questo punto occupiamoci del socket, che serve a effettuare il collegamento con PHP; fino a poco tempo fa, MySQL installava normalmente il socket in /tmp/mysql.sock Purtroppo Apache di Leopard andava a cercarlo in una nuova posizione: /var/mysql Questo costringeva a fare un poʼ di equilibrismi al Terminale, con spostamento di file oppure generazione di link: basta fare una ricerca sulla rete per trovare molte soluzioni più o meno corrette. Per lo stesso motivo, il pannello MySQL non funzionava ed il database doveva essere fatto partire da Terminale con il comando sudo /usr/local/mysql/support-files/mysql.server start e con lʼequivalente con stop per fermarlo. Sono proliferati i piccoli software che sostituivano il pannello non funzionante (anche InerziaSoft aveva contribuito con il widget, InerziaMySQL, che trovate ancora nella sezione di download del sito). Poi il problema del socket fu risolto: lʼinstaller di MySQL andava a mettere nel posto giusto il file così importante, però quello che permetteva la partenza automatica del server MySQL allʼavvio del sistema non era installato correttamente; per cui doveva essere copiato a mano negli StartupItems. Per fortuna, nellʼultimo download effettuato tutto è finalmente a posto: il socket è inserito nella cartella /tmp/ e Apache lo va a cercare proprio lì! Per cui lʼinstallazione è ora corretta e funzionante: per verificarlo entriamo nelle Preferenze di Sistema e clicchiamo sul pannello MySQL, la cui icona è mostrata qui a fianco, che si aprirà, mostrandoci lo stato del server: InerziaSoft.eu pag. 11 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Avendolo appena installato, è ovviamente fermo. È sufficiente cliccare sul pulsante Start per ottenere lʼavvio, indicato da un ovvia ma quasi illeggibile scritta verde: Non dimentichiamo di verificare che il check box sottostante sia abilitato, in modo che il server si attivi allo startup del sistema: Giusto per conoscenza, possiamo anche controllare che il processo sia effettivamente attivo, facendo partire Monitoraggio Attività (nella cartella Utility), selezionando dal menu a tendina “Tutti i processi” e scrivendo sql nella casella del filtro: Vedete attivo il processo mysqld, di cui lʼutente _mysql è proprietario. Volendo, per esercizio, è sempre possibile avviare e fermare il server via Terminale, ma non è più necessario. Tuttavia il widget InerziaMySQL può ancora essere utile: dopo tutto è più semplice passare alla Dashboard che aprire le Preferenze di Sistema, cliccare sul pannello e fare un altro click sul pulsante di comando... :-) InerziaSoft.eu pag. 12 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 CMS MySQL è ora attivo e possiamo utilizzarlo. Attenzione però che alcuni CMS basati su PHP e MySQL non sono stati aggiornati in modo da poter lavorare su Leopard. Il problema è sempre lo stesso: il file di sock. Se quindi abbiamo scaricato il nostro CMS preferito e, dopo averlo copiato nella cartella Siti del nostro utente (o nel sito generale del nostro Mac), troviamo che non funziona, cʼè una buona probabilità che stia andando a cercare il file di socket nella vecchia posizione. Dobbiamo allora trovare dove è stato messo il file di socket e cambiare lʼindirizzo, in modo che punti al posto giusto; di solito si tratta di modificare un file di configurazione. Fatto questo, il CMS dovrebbe tornare a funzionare. Dato che tutto è tornato normale, può anche darsi che non troveremo nessun problema! Amministrazione di MySQL Cominciamo con una nota di sicurezza: finché usiamo il nostro Mac solo per sviluppare il sito, per scaricare il tutto in ftp sul server di hosting, possiamo lasciare il database senza password. Ma se pensiamo di poterci connettere alla rete, allora sarà bene introdurre una buona password: seguiamo le solite regole, che dicono di usare almeno 8 caratteri, meglio se di più, non utilizzare una frase di senso compiuto, inserire sia lettere maiuscole e minuscole, che numeri: sempre bene non correre rischi, visto che cʼè gente che non ha altro da fare che tentare di danneggiare i computer altrui... Per il resto, dobbiamo soltanto notare che è bene non inserire punti nel nome di un database. Ora che abbiamo attivo il nostro bravo database, possiamo giocarci un poʼ tramite il Terminale: basta aprire una finestra di Terminale e scrivere sudo /usr/local/mysql/bin/mysql (oppure dopo sudo fare un drag&drop del file mysql della cartella bin) e dando return riceveremo il messaggio di benvenuto: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 558 Server version: 5.1.31 MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> ed il cursore lampeggia sullʼultimo prompt, in attesa di un nostro comando. Siamo nello spazio mysql, per cui saranno riconosciuti solo i suoi comandi. Come esempio, chiediamo aiuto: cioé scriviamo help seguito da return, oppure \h (abbreviazione del comando). Otterremo la lista di tutti i comandi, oltre a ricordarci che tali comandi devono essere i primi caratteri sulla linea e che le varie istruzioni vanno terminate da ʻ;ʼ. Se vi dimenticate il carattere punto-e-virgola, dando il return ci verrà risposto con una freccia ʻ->ʼ, permettendo di continuare il comando come fosse sulla stessa riga. Se scriviamo help contents otteniamo i capitoli dellʼaiuto; per esempio, potremmo scrivere InerziaSoft.eu pag. 13 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 help Data Types ed otterremo una lista di tutte le keyword da usare nella definizione dei tipi di dati. In questo modo, potremmo avere tutte le informazioni sul linguaggio di MySQL. Dʼaltra parte è molto più semplice andare sul sito di MySQL, dove è mantenuta tutta la definizione del linguaggio e dove sono raccolti anche contributi degli utenti. Giusto per fare qualche esercizio, entriamo come utenti registrati; subito dopo lʼinstallazione, sono definiti 5 utenti: due senza nome (anonimi) e tre con privilegi massimi (root), senza password. Entriamo come utente root, dando alla richiesta della password: sudo /usr/local/mysql/bin/mysql -h localhost -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 56 Server version: 5.1.36 MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> Siamo entrati nel db! Come prima cosa, chiediamo a MySQL che versione è e la data attuale (possiamo dare i comandi anche in minuscolo, ma è buona norma usare il maiuscolo, così vediamo meglio i comandi): mysql> SELECT VERSION(), CURRENT_DATE; +-----------+--------------+ | VERSION() | CURRENT_DATE | +-----------+--------------+ | 5.1.36 | 2009-07-05 | +-----------+--------------+ 1 row in set (0.00 sec) mysql> La risposta è ben impaginata, con alcuni segni in modo da vedere le colonne: per MySQL qualunque risposta viene mostrata in questo modo: stiamo parlando di un database, dove le righe e le colonne sono tutto! Non indovinate dove MySQL mantiene i dati necessari al funzionamento? Ovvio, in un database chiamato mysql! Per confermare quanto detto sopra sugli utenti, proviamo a dare il seguente comando, col quale chiediamo a MySQL di dirci cosa contiene la tabella User del database mysql, nelle colonne Host e User (ricordiamo il punto e virgola a fine riga): mysql> SELECT Host,User FROM mysql.user; +--------------+------+ | Host | User | +--------------+------+ | 127.0.0.1 | root | | MaxPro.local | | | MaxPro.local | root | | localhost | | | localhost | root | +--------------+------+ InerziaSoft.eu pag. 14 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 5 rows in set (0.00 sec) mysql> Vediamo che in effetti gli utenti sono 2, ma provengono da computer diversi... o meglio, dallo stesso Mac, ma visto in modo diverso: infatti 127.0.0.1, localhost e MaxPro (il nome del mio Mac) rappresentano la stessa macchina. Ancora un esempio, che potrebbe servirci nel seguito; questa volta vogliamo conoscere alcuni parametri dellʼinstallazione MySQL, usando il comando status: mysql> status -------------- /usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.1.36, for apple- darwin9.5.0 (i386) using readline 5.1 Connection id: 59 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.1.36 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /tmp/mysql.sock Uptime: 1 day 3 hours 32 min 17 sec Threads: 1 Questions: 1711 Slow queries: 0 Opens: 38 Flush tables: 1 Open tables: 19 Queries per second avg: 0.17 -------------- mysql> Tra queste info, troviamo lʼutente con cui siamo connessi (in questo caso root su localhost) lʼuptime (tempo dallʼultimo avvio del server), i set di caratteri utilizzati, il percorso del socket, più alcune informazioni sui processi in atto. Interfacce utente per MySQL Volendo, potremmo quindi comandare MySQL da terminale: anche se possibile, è chiaro che non possiamo fare qualcosa di serio senza avere un tool di amministrazione più evoluto della riga di comando. Infatti, a differenza dei database a pagamento, MySQL arriva senza unʼinterfaccia grafica. Per cui usciamo dal Terminale digitando InerziaSoft.eu pag. 15 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 \q seguito da (oppure direttamente Ctrl-D) il che ci porta fuori da mysql. Chiudiamo il terminale e andiamo alla ricerca di strumenti più semplici e immediati. Su Mac OSX esistono almeno 4 software che possiamo provare per poi scegliere quello più vicino al nostro modo di agire; oppure potremo tenerli tutti, usando uno o lʼaltro a seconda dellʼattività che ci serve fare in quel momento; in effetti, li tengo tutti a disposizione, usando uno o lʼaltro, ciascuno per le loro particolarità. I 4 software, tutti gratuiti, che valgono una prova sono: • phpMyAdmin; • Sequel Pro; • MySQL Tools; • Navicat Lite Vediamone i punti salienti, con qualche approfondimento dove necessario. phpMyAdmin (www.phpmyadmin.net) Giunto alla versione 3.2.0.1, si tratta di unʼapplicazione web (funziona cioé allʼinterno di un browser) costruita in PHP, frequentemente aggiornata sia per caratteristiche che per bug fix. Le ultime versioni richiedono MySQL 5 e PHP 5.2 (ma sono ancora disponibili e supportate versioni precedenti); la documentazione online è completa e dettagliata. Oltre 10 anni di storia hanno portato phpMyAdmin ad un ottimo livello, compresa la traduzione in molte lingue (dato che per semplicità installo sempre quella inglese, non so dire nulla sullʼaccuratezza della traduzione); lʼinstallazione è immediata, anche se il setup non è proprio semplicissimo: per mettere in sicurezza lʼambiente occorre leggere bene la documentazione e fare qualche prova prima di esporsi alle insidie della rete. Se lʼusiamo solo per sviluppare sul proprio Mac, lʼinstallazione può essere molto semplificata non impostando una password; se però potrebbe capitare di esporsi sulla rete, allora è meglio utilizzare tutte le sicurezze previste. Scegliamo la versione zip (con qualcuna delle altre potremmo avere qualche problema download); una volta scaricata, doppio click nel Finder e ci troviamo con una cartella nel cui nome è indicata la versione: consiglio di togliere questa parte del nome, lasciando ʻphpMyAdminʼ: dato che dovremo aprirla nel browser, più il nome è semplice, meno errori faremo nello scrivere lʼindirizzo! Poi spostiamo tutta la cartella nella directory Siti del nostro utente: potremmo metterla anche nel sito principale del nostro Mac, ma dato che dovremo lavorarci sopra, tanto vale che sia a portata di mano. La prima cosa da notare è che phpMyAdmin, come la maggior parte delle interfacce di MySQL, non effettua alcuna gestione degli utenti e delle password (a parte tenersi le preferenze): la coppia utente/password che forniremo verrà passata direttamente a MySQL; phpMyAdmin si occuperà solo di verificare la risposta del db e mostrarci un messaggio di errore se qualcosa non torna. InerziaSoft.eu pag. 16 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Installazione Cʼè la possibilità di impostare tutto via interfaccia grafica, ma richiede un poʼ di attenzione: occorre infatti creare una cartella, assegnarle dei particolari permessi, avviare da browser uno specifico script e poi rimettere tutto a posto, sempre a mano; inoltre, lʼinterfaccia grafica dello script non è così semplice, per cui esamineremo le impostazioni più importanti e faremo tutto editando un file di configurazione. Se volete provare la via grafica, sul sito di phpMyAdmin sono riportate precise istruzioni. Per prima cosa, nella cartella phpMyAdmin cerchiamo il file config.sample.inc.php; si tratta di un file di esempio, come indica il nome: duplichiamolo col Finder, in modo da avere sempre a disposizione lʼoriginale, chiamiamolo config.inc.php e apriamolo, sempre con TextWrangler. Al suo interno troviamo dei comandi di base, alcuni attivi e altri commentati; noi ne terremo solo alcuni, il minimo indispensabile. Lʼinstallazione arriva infatti con già impostati alcuni valori di default; tali valori sono riportati nel file phpMyAdmin/libraries/config.default.php Possiamo aprire anche questo con TextWrangler: vi sono riportate annotazioni interessanti, ma facciamo attenzione a non cambiare nulla delle impostazioni di default: il meccanismo di configurazione prevede infatti che phpMyAdmin carichi alla partenza questo file, ma subito dopo anche il file phpMyAdmin/config.inc.php che stiamo per costruire; in questo modo, i valori di default possono essere sovrascritti in questo secondo file, mentre le proprietà non toccate restano quelle di default; inoltre, è facile tornare ai default di partenza: basta lasciare bianco config.inc.php. Il primo comando da sovrascrivere è quello che permette di criptare il nome utente e lʼeventuale password, per nasconderla ai malintenzionati: anche se siamo sul nostro Mac, può essere utile abituarsi a queste pratiche; forniamo quindi il cosiddetto blowfish, fornendo un poʼ di caratteri e numeri scritti a caso: $cfg['blowfish_secret'] = 'ufhj3dodc69q1jgnf67.....'; Non è necessario ricordare cosa abbiamo inserito. Sembra che si possano fornire fino a 46 caratteri, sufficiente per la nostra sicurezza. Dato che lo useremo per entrare sul server db del nostro mac, dobbiamo configurare lʼaccesso ad un solo server, il nostro, appunto. Per questo, saltiamo qualche riga, fino a dove troviamo alcune assegnazioni: $cfg['Servers'][$i]['auth_type'] = 'cookie'; Con questo scegliamo di usare lʼautenticazione usando i cookie (dovranno essere ovviamente abilitati sul browser che useremo). Meno sicuro, ma più comodo, al posto del blowfish e del tipo ʻcookieʼ, potremmo usare le seguenti impostazioni: $cfg['Servers'][$i]['auth_type'] = ‘config’; $cfg['Servers'][$i]['user'] = ‘nomeUtente’; $cfg['Servers'][$i]['password'] = ‘password utente’; dove utente e password sono direttamente memorizzati nel file di configurazione e quindi leggibili da chiunque abbia accesso al file. Ora dobbiamo definire il server; ogni server interpreta lʼindirizzo IP 127.0.0.1 come il proprio locale, a cui ci si connette in TCP: InerziaSoft.eu pag. 17 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 $cfg['Servers'][$i]['host'] = '127.0.0.1'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; Questo è il modo più semplice, ma non lʼunico; potremmo anche usare le successive istruzioni al posto delle due precedenti: qui usiamo il socket invece che il TCP, chiamando lo stesso server col suo nome: $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'socket'; $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock'; dove lʼultima è solo per chiarezza: il socket infatti si trova nellʼindirizzo di default, come abbiamo spiegato prima. Da notare che lʼuso del socket è possibile solo se il db si trova sullo stesso computer usato dal web server; in caso di dubbi (p.es. se stessimo preparando un sito per un server remoto), usiamo quindi la prima coppia di istruzioni. Completiamo la configurazione con: $cfg['McryptDisableWarning'] = true; che elimina il messaggio di errore se la libreria Mcrypt non è installata (default sui nostri Mac: è una libreria che accelera lʼaccesso, ma non è indispensabile); $cfg['Servers'][$i]['compress'] = false; evita di compattare le comunicazioni: al momento è sperimentale. $cfg['Servers'][$i]['AllowNoPassword'] = true; ci permette di entrare anche se la password non è settata (come è al momento). Ancora una cosa: $cfg['Servers'][$i]['extension'] = 'mysql'; Indica quale libreria usare per accedere al db dal PHP; se lʼinstallazione la contiene, è consigliato lʼuso di mysqli: questa prevede un accesso più laborioso, per cui se non ci interessano più di tanto le prestazioni, possiamo utilizzare mysql. Riassumendo, quindi, il nostro file di configurazione è in totale: $cfg['blowfish_secret'] = 'ufhj3dodc69q1jgnf67lf8d7s...'; $i = 0; $i++; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['host'] = '127.0.0.1'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['McryptDisableWarning'] = true; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['extension'] = 'mysql'; $cfg['Servers'][$i]['AllowNoPassword'] = true; Salviamo il file, puntiamo Safari su http://localhost/~nomeUtente/phpMyAdmin InerziaSoft.eu pag. 18 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 dove nomeUtente deve essere sostituito dal nome della vostra Home; diamo e vedremo comparire la schermata di ingresso, dove inserire utente e password (figura a fianco). Lʼutente con privilegi di amministratore è per ora root, senza password (non inseriamo nulla in quel campo): un e siamo entrati! Se doveste vedere soltanto una pagina di solo testo, controllate che il Apache sia attivato. Se tutto è andato bene, dovete “solo” più andare a leggere le istruzioni SQL... e siete a posto! Guardiamo con attenzione la home page di phpMyAdmin, perché fornisce molte informazioni e comandi; primo fra tutti, il cambio della password, sempre consigliato (ma ricordatevi di annotarla, altrimenti non potrete più usare lʼutente root!). Inoltre, se scegliamo Privileges nel menu in alto, potremo anche aggiungere utenti: cosa molto utile, in quanto non conviene abituarsi ad usare lʼutente root per tutte le applicazioni. Questa a altre operazione vanno oltre gli scopi di questa veloce carrellata; potete comunque trovare aiuto sulla rete. phpMyAdmin supporta le più importanti operazioni su database: • creazione, modifica e cancellazione di database, tabelle, viste, campi, indici; • manutenzione di server e database, assieme a proposte sulle configurazioni dei server; • importazione dati e database mediante file CSV e SQL; • esportazione in molti formati tra cui CSV, SQL, XML, PDF, ODF, DOC, XLS, LaTEx; • creazione di grafici in pdf della struttura del DB; • esecuzione di comandi diretti SQL Nel sito è anche possibile provare il software in tutte le sue funzionalità. Unʼimportante difetto è la mancanza di una gestione diretta delle stored procedure (che MySQL supporta a partire dalla versione 5), anche se è possibile generarle indirettamente utilizzando la console SQL; dʼaltra parte è probabile che questa gestione apposita venga aggiunta in una prossima versione. Essendo unʼapplicazione web, è molto facile personalizzare lʼinterfaccia e sul sito è possibile scaricare un certo numero di temi; inoltre può essere utilizzato su qualunque piattaforma che supporti il modulo PHP e per questo motivo spesso se ne trova una personalizzazione sui siti di web hosting, come amministrazione ufficiale del database. InerziaSoft.eu pag. 19 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Sequel Pro (www.sequelpro.com) Evoluzione di CocoaMySQL, open source generato in Cocoa Universal Binary, quindi espressamente per Mac OS (sia PPC che Intel), è un tool sufficientemente completo per la normale amministrazione del DB. Attualmente in versione 0.9.6, ha tutte le funzionalità importanti necessarie: •amministrazione di DB locali e remoti; • import e export con un buon numero di formati, tra cui SQL, CSV, XML; • creazione, modifica, cancellazione di database, tabelle, viste, campi; • console SQL per lʼinserimento e lʼesecuzione di comandi più complessi. In futuro potrebbe diventare un software chiave, in quanto possiede piani per il supporto di SQLite e PostgreSQL; è talmente veloce e leggero che può dare lʼimpressione di poca potenza (siamo abituati a pensare che i programmi lenti siano più potenti!). Inoltre lʼinterfaccia è coerente con quella del Mac e può usare le notifiche di Growl. Essendo Open Source, è anche possibile scaricare il codice e compilarlo in proprio tramite XCode, magari modificandolo per i propri scopi (se lo fate, ricordate di rimettere in circolo le modifiche al codice!). Punto a sfavore (per il momento) è la mancanza della documentazione: sul sito avvertono che è in ristrutturazione per tener conto delle nuove caratteristiche: data la recentissima uscita è un peccato perdonabile. Non supporta direttamente le stored procedure e le function, anche se, come nel caso precedente, possono essere create indirettamente, utilizzando la console SQL. Viene anche citato nella sezione Code di Google. Al momento si tratta di un software Mac-only: se sviluppate solo su Mac, non cʼè problema. Anzi, se siete interessati a collaborare o anche solo a localizzare il software, sul sito ci sono informazioni. MySQL Tools (dev.mysql.com/downloads/gui-tools/5.0.html) Fornito dai creatori di MySQL (Sun), per cui in teoria dovrebbe essere il massimo; composto da 2 software separati: Administrator e Query Browser. Per Windows viene anche fornito un Migration Toolkit, mentre nella versione Mac cʼè in più un widget per la Dashboard per controllare lʼandamento del server MySQL. Facendo un confronto, fornisce praticamente le stesse caratteristiche dei precedenti software: sono permesse tutte le operazioni necessarie per lʼamministrazione, con qualche automatismo in più: nella console del Query Browser si può fare il drag&drop delle tabelle sullʼarea della console, evitando di dover scrivere tutti i nomi: se si usano bene le aree di azione, la query può essere scritta quasi in automatico. InerziaSoft.eu pag. 20 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Inoltre, nella parte bassa è possibile sfogliare ed usare tutte le funzioni speciali di MySQL, utile pro-memoria durante la costruzione delle query; anche la parte Administrator è completa di tutto quanto ci può servire. Come ci si poteva attendere da chi ha sviluppato il database, rappresenta un supporto completo per tutte le caratteristiche; in particolare, supporta le stored procedure e le functions e la parte di amministrazione è completa; per contro, è necessario avviare entrambe le applicazioni per avere tutte le possibilità fornite. Il neo è rappresentato dal fatto che non esiste la versione apposita per Leopard: mentre su Intel è sufficientemente stabile, su PPC mostra qualche problema di crash inatteso, soprattutto il Query Browser. Inoltre, pur essendo completo, lʼutilizzo non è il solito che ci aspetta da un software creato per Mac OSX, per cui è necessario un breve tempo per abituarsi; dʼaltra parte, se si lavora anche su Windows, si deve imparare solo un software per entrambi i sistemi. Navicat Lite (www.navicat.com) Versione gratuita di un programma commerciale. Per la cronaca, esistono anche versioni per lʼamministrazione di PostgreSQL e di Oracle. Nel caso di MySQL, esiste anche per Windows e Linux, oltre che per Mac OS, per il quale viene affermata la perfetta compatibilità con Leopard (durante le prove non ho verificato crash o comportamenti strani). Il supporto è completo, comprese le stored procedure e le function, con una buona stabilità, tipica di un prodotto commerciale ben progettato. Cʼè da notare che le versioni lite hanno una licenza per usi non commerciali; la versione a pagamento prevede 30 giorni di utilizzo normale, per permettere di verificare se le sue caratteristiche sono quelle cercate. Inoltre, forse per invogliare allʼacquisto, la versione Lite riporta tutti i menu della versione completa, anche se non funzionano. Lʼinterfaccia è tipica Mac, anche se talvolta certe funzionalità devono essere cercate a fondo nei menu; per navigare tra i record di una tabella bisogna fare un doppio click, ottenendo quindi una nuova finestra, in cui è disponibile anche un editor esadecimale, cosa talvolta utile. Riassunto Questo quattro software sono tutti praticamente allo stesso livello, sia per prestazioni che per affidabilità; la scelta dipende da cosa pensiamo di fare. Il mio suggerimento è di partire con il conosciutissimo phpMyAdmin: se poi pensiamo di utilizzare spazio web con database di uno dei molti provider, molto probabilmente ci troveremo a gestire il database remoto con una versione, magari personalizzata, di phpMyAdmin, per cui in ogni caso è un software da provare, non fosse altro per familiarizzarsi. InerziaSoft.eu pag. 21 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Una volta imparato cosa si deve fare per creare e amministrare un database, possiamo passare ad uno degli altri software. Attenzione alla licenza di Navicat Lite; per il resto, è questione di scelte personali e di necessità. Non dimentichiamo di effettuare periodicamente un backup sia dei dati che della struttura del database; il modo più semplice è di esportare un database in formato SQL, che poi è un normale formato di testo, in cui sono riportate tutte le istruzioni SQL per ricreare il database ed il suo contenuto (vedi Appendice A). InerziaSoft.eu pag. 22 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Appendice A: Backup Come accennato nel testo, è molto utile effettuare un backup del proprio database o magari addirittura di tutto il contenuto di MySQL: sappiamo che MacOS e in genere Unix/ Linux sono molto stabili, ma questo non è un motivo per dimenticare un buon backup. Gli hard disk, per esempio, non sono eterni e basta un settore dellʼindice danneggiato per perdere tutto il proprio lavoro. Lʼidea di andare da Finder nella cartella: /usr/local/mysql e semplicemente copiare le cartelle non funziona: infatti, come vediamo dalla figura a fianco, la cartella Data, che contiene tutti i database dellʼinstallazione, non è accessibile direttamente: lʼunico utente che potrebbe accedervi in lettura/scrittura è _mysql, cioé il database stesso! Potete constatarlo selezionando la cartella da Finder e facendo Cmd-I ed aprendo il tab Condivisione e permessi. Ovviamente, non serve tentare di copiare la cartella da unʼaltra parte: dopo aver fornito la password di amministratore, potremmo entrare e vedere cosa cʼè; ma in caso di problemi non potremmo andare a sostituire la vecchia cartella con questa appena copiata! E anche se fornissimo di nuovo la password di amministratore, la sostituzione avrebbe il solo effetto di creare problemi, in quanto nella stessa cartella è anche mantenuto il database che permette a MySQL di funzionare, che non sarebbe certo aggiornato. Per fortuna, tutti i software di interfaccia utente presentati permettono lʼesecuzione di backup. A seconda del software utilizzato, le opzioni possono variare, ma permettono comunque di salvare una copia del database di cui vogliamo il backup. Con phpMyAdmin, una volta entrati, basta cliccare su Esporta, selezionare tutte le tabelle, scegliere il formato e cliccare Esegui. Per gli altri applicativi visti prima, dovete cercare un comando Export o Backup (e per ristabilire una copia al posto dellʼattuale, dovete cercare gli analoghi Import o Restore). A differenza dei database tipo Microsoft SQL, dove il backup di solito indica una esatta copia delle tabelle e delle strutture, qui di solito lʼuscita è un file di testo più o meno ʻpesanteʼ, con estensione .sql in cui sono raccolte tutte le istruzioni necessarie a MySQL per ricreare sia la struttura del database che i dati contenuti in esso: possiamo verificarlo facilmente, aprendo il file con un comune editor di testi (come TextWrangler o anche TextEdit). In pratica il restore è fatto dando in automatico il file al db, che eseguirà tutte le istruzioni contenute, ricreando le tabelle e inserendovi i dati, come se lo stessimo facendo a mano da terminale. Durante il backup, se il software scelto lo permette, è bene chiedere di inserire istruzioni DROP e controlli IF EXISTS, anche relativi al database, oltre che alle varie tabelle: in questo modo infatti è possibile ricreare da zero database, struttura e dati, in caso di perdita completa. Contemporaneamente, le istruzioni IF permetteranno di creare database e tabelle solo se queste non esistono, in modo da non ottenere errori in risposta. Alcuni software permettono anche di esportare in un file compresso .zip, per contenere le dimensioni nel caso di database pesanti; talvolta sono possibili anche altri formati, da cui può essere più semplice ottenere i dati nel caso volessimo costruire elaborazioni non ottenibili in altro modo: CVS, testo comma-delimited e altri. InerziaSoft.eu pag. 23 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Avendo a disposizione questo backup, in caso di problemi si potrà usare lo stesso software di interfaccia per importare il tutto nel db, utilizzando le funzioni di restore (o importa). Questo processo di backup & restore è anche utile quando, dopo aver sviluppato in locale, vogliamo portare il tutto sul nostro sito web, utilizzando il software di interfaccia collegato al db del sito, o viceversa quando vogliamo avere in locale gli stessi dati preenti sul nostro sito. InerziaSoft.eu pag. 24 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Appendice B: Il Terminale Dato che in questo tutorial si deve usare il terminale, ho riportato in questa sezione alcune indicazioni utili per lʼuso. Vale sempre lʼavvertimento di fare attenzione a quello che si fa: un comando dato con leggerezza può compromettere la stabilità di Unix e di MacOS X, per cui rileggete bene quanto scritto sul terminale prima di dare lʼinvio. Folder Home: per indicare che un percorso parte dalla Home dellʼutente, inserire il carattere ~ (tilde). Esempio: ~/Documents indica la cartella documenti dellʼutente attuale Per vedere il contenuto di una cartella, usiamo il comando ls seguito da invio: la risposta è lʼelenco dei file (corrisponde al dir del DOS): Se volessimo vedere i file normalmente nascosti, bisogna aggiungere il parametro -a: in cui i file normalmente invisibili hanno un punto ʻ.ʼ davanti al nome. Se invece siamo interessati a maggiori informazioni su ogni file, aggiungiamo il parametro -l (sta per long), da cui otteniamo nome, data di modifica, gruppo e proprietario del file, dimensioni e permessi read/write: InerziaSoft.eu pag. 25 / 27
Tutorial n. 002 Leopard, PHP e MySQL vers.1.1 - 09//2009 Notiamo che la cartella etc è un link, cioé punta ad unʼaltra cartella (in questo caso private/etc): viene rappresentata con il nome seguito da una freccia e dal nome della cartella a cui punta. Se vogliamo la lista dei file in una certa cartella, faremo seguire al comando ls con i suoi eventuali parametri, lʼindirizzo a partire dalla posizione attuale: ls documents/sviluppo/applescript e se la cartella è meno annidata nel sistema di dove ci troviamo, possiamo specificare il percorso partendo dalla cartella iniziale dellʼhard disk, indicata con ʻ/ʼ: ls -a /library Se nel percorso ci sono degli spazi, possiamo racchiudere il percorso tra apici: ls -a ~/library/’Application Support’ oppure usare il carattere ʻ\ʼ prima dello spazio: ls -a ~/library/Application\ Support Se vogliamo dare una rapida occhiata ad un file di testo senza doverlo aprire con TextWrangler, possiamo usare il comando cat seguito dal percorso del file, ricordandoci di fornire anche lʼestensione (in questo caso, il nome del file è prova testo.txt): cat Desktop/prova\ testo.txt Muoversi con la linea di comando è ben diverso dal farlo nel Finder; per cui cʼè ancora un comando che può essere molto utile per evitare di dover scrivere percorsi molto lunghi: si tratta di ʻcdʼ (identico al mondo DOS) che, seguito dal percorso, porta il terminale a puntare nella cartella scelta. Per esempio, se vogliamo fare la lista dei documenti del sito di sistema, dovremmo scrivere: ls /Library/Webserver/Documents e dovremmo ripetere il percorso per ogni operazione che dobbiamo fare; se invece usiamo il comando cd: cd /Library/Webserver/Documents ls da adesso in poi non dovremmo più inserire il percorso. Per tornare a puntare nella Home dellʼutente, basta scrivere InerziaSoft.eu pag. 26 / 27
Puoi anche leggere