come installare Apache + PHP + MySQL su OS X con Homebrew

Facendo felice il mio amico Signor D, e magari qualcun altro tra voi, ecco un veloce tutorial passo-passo per installare e configurare un ambiente di sviluppo web con Apache, PHP e MySQL (e phpMyAdmin) su OS X grazie all’aiuto di Homebrew.

Il tutto grazie ad un post di Diego Escalante, un hacker peruviano coinvolto nello sviluppo di Gnome (di cui giusto ieri è stata rilasciata la versione 3.12):

Setting up Apache + PHP + MySQL on OSX with Homebrew →

Buona lettura!

di come ho risolto il problema di encoding UTF-8 / latin-1 su MySQL e WordPress

Come raccontavo qualche giorno fa, smanettando con la configurazione di WordPress e MySQL su questo server avevo effettuato una cattiva conversione al charset UTF-8 del database, che era stato creato anni fa in formato latin-1. A nulla sono valsi l’utilizzo di alcuni plugin ed ipotetiche query corretive.

L’unico metodo facile e veloce che ho trovato per risolvere la cosa è stato quello di estrarre le singole tabelle dei post (prima) e dei commenti (poi) grazie a PHPMyAdmin, applicare la correzione con un editor di testi (ho usato Sublime Text accertandomi che il file fosse aperto e poi salvato utilizzando l’encoding UTF-8) e poi reimportare la tabella finalmente corretta nel database.

Dov’è la particolarità? Nell’aver utilizzato grazie al suggerimento del collega Flavio Licciulli come formato di esportazione l’affidabile CSV.

Questo perché esportando il file in formato SQL mi portavo nel testo diversi tipi di apostrofi, molto comuni nella lingua Italiana, in posizioni tali che troppo spesso contribuivano a chiudere prematuramente un valore. Per fare un esempio banale:

WHERE Store_Name = 'Los Angeles';
WHERE Store_Name = 'L'Italiano';

Un’altra particolarità è stata quella di non aver eseguito un DROP (cancellazione) della tabella, ma un TRUNCATE (svuotamento) prima della reimportazione.

Se quindi adesso trovi in un post, una pagina, un commento delle accentate sbagliate è per mia imperizia (ed un filo di noia) nel trovarle, dopo averci speso su quattro ore in questi giorni … avere un blog decennale ha qualche svantaggio 🙁

the one with UTF-8

Non so come sia venuto in mente di farlo, ma ho (maldestramente) modificato il charset usato qui su WordPress. Il risultato è stato un mischione di file e caratteri che non sono – evidentemente – riuscito a domare del tutto. Basta vedere qualche post più datato per verificarlo…

Poco male, ho colto l’occasione per fare un po’ di pulizie da queste parti… per i contenuti vedrò di risolvere in tempi brevi nei prossimi giorni. Mi scuso per eventuali disagi…

ancora su Apache, PHP e MySQL su OS X 10.7 Lion

In passato su questo blog ho affrontato il problema di installare e configurare un ambiente AMP e PHPMyAdmin sulla più recente release del nostro sistema operativo preferito.

più recentemente su una seconda macchina ho utilizzato un altro tutorial trovato online Setting up PHP & MySQL on OS X 10.7 Lion di Rob Allen.

Il tutorial è ben fatto ma, come constatavo pubblicamente l’altro ieri…

divertente vedere come i manuali di installazione riescano immancabilmente a saltare certi “ovvi” passaggi. Immancabilmente.

Ebbene, cosa manca al post di Rob???

    1. MySQL
      Va inserita la password dell’utente root ed eseguiti dei piccoli accorgimenti per mettere in sicurezza la nostra installazione. Questo è ottenibile lanciando il comando MySQL_secure_installation e seguendo l’iter proposto.
    2. Ensure that MySQL is running
      Questo è ottenibile ancora dalla linea di comando, che abbiamo appena usato per impartire il precedente comando con:
      MySQLadmin -u root status -p
      di verrà richiesta la password precedentemente impostata e avremo in risposta qualcosa come
      Uptime: 229 Threads: 1 Questions: 27 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.117
      se non ci sono stati problemi
    3. MySQL Networking
      Per default MySQL si mette in ascolto sulla porta 3306 di tutte le interfacce di rete del computer. Se vogliamo che la nostra installazione MySQL sia disponibile solo localmente vorremo probabilmente impedire connessioni esterne.
      Questo è ottenibile andando ad editare (o creare nel caso non fosse presente) il file /etc/my.cnf avente il seguente contenuto:
      [MySQLd]
      bind-address=127.0.0.1

      oppure
      skip-networking
      nel caso si volesse disabilitare del tutto la funzionalità  di rete e lavorare solo con le socket.
      A questo punto un veloce riavvio del demone MySQL con sudo /Library/StartupItems/MySQLCOM/MySQLCOM ed un rapido check con
      netstat -an | grep 3306
      ci confermerà l’avvenuto legame (bind) con l’interfaccia 127.0.0.1
      tcp4 0 0 127.0.0.1.3306 *.* LISTEN
    4. La root directory di Apache è /Library/WebServer/Documents;
    5. il demone Apache gira con utente e gruppo _www, se stai sviluppando con WordPress e vuoi utilizzare tutti i tool di installazione e configurazione automatica di temi e plugin cui è dotato il popolare CMS assicurati di impostare correttamente proprietario e gruppo della cartella del progetto 😉

Penso sia tutto!

installare PHPMyAdmin su Mac OS X

Per la ‘rassegna‘ segnatelo sul blog così sai sempre dove ritrovarlo oggi pubblico la traduzione di un articolo di Coolest Guy on the Planet sulla installazione di PHPMyAdmin, un tool che parecchi sviluppatori si trovano a dover installare / gestire / usare per interagire con il DBMS MySQL evitando di metter mano al terminale. La procedura descritta è stata testata con successo dia su Mac OS X 10.6 “Snow Leopard” che su 10.7 “Lion“.

Andiamo sul sito web del progetto e scarichiamo il file PHPMyAdmin-X.Y.K-english.tar.gz – sempre che non siano necessarie la localizzazione e le altre – quindi andiamolo a decomprimere nella cartella web del nostro utente “/Users/$username/Sites” (e per lo scopo di quest’articolo si farà così, altrimenti dovremo installarlo nella root directory del webserver Apache /usr/share/web). Dopo di che potremo creare un alias, o rinominare, la cartella “PHPMyAdmin-X.Y.K-english” semplicemente in “PHPmyadmin”.

A questo punto è bene ricordare che dovremo già avere installato sul nostro sistema MySQL e averne correttamente configurato almeno l’utente root con le sue credenziali di accesso al DBMS.

La pagina di autenticazione per il nostro PHPmyadmin sarà  quindi visibile all’indirizzo http://localhost/~username/PHPmyadmin. Ovviamente Perché tutto funzioni correttamente dovremo eseguire alcune piccole procedure di configurazione, ad esempio specificare il nome dell’host del nostro database e qual è il socket di connessione allo stesso.
Per prima cosa correggiamo l’errore 2002 di MySQL, impartendo nel Terminale i seguenti comandi:

sudo mkdir /var/MySQL
sudo ln -s /tmp/MySQL.sock /var/MySQL/MySQL.sock

Creiamo nella cartella d’installazione di PHPMyAdmin una nuova directory chiamandola “config“.

mkdir ~/Sites/PHPmyadmin/config

Diamo agli ‘altri’ i permessi di scrittura alla cartella appena creata, è indifferente farlo attraverso CMD+I sulla cartella nel Finder, oppure attraverso Terminale con il comando:

chmod o+w ~/Sites/PHPmyadmin/config

Siamo finalmente pronti ad avviare lo script di setup, puntando il nostro browser all’indirizzo http://localhost/~username/PHPmyadmin/setup/, che ci porterà a visualizzare la pagina seguente:

setup server PHPmyadmin Installing PHPMyAdmin on Mac OSX 10.7 Lion & 10.6

Il nuovo server da configurare è localhost, clicchiamo quindi sul bottone NEW SERVER quindi inseriamo le credenziali d’accesso dell’utente locale per MySQL.

set username password PHPmyadmin Installing PHPMyAdmin on Mac OSX 10.7 Lion & 10.6

save PHPmyadmin config server Installing PHPMyAdmin on Mac OSX 10.7 Lion & 10.6

Dopo esserci accertati di aver salvato la configurazione inserita premendo il tasto SAVE, verrà generato un file config.inc.PHP nella cartella config da noi creata. Dovremo spostarlo nella cartella superiore e rimuovere, quindi, la cartella config divenuta vuota.

Tornando all’indirizzo http://localhost/~username/PHPmyadmin ed inserendo le nostre credenziali di accesso potremo finalmente interagire in maniera comoda e grafica con il nostro database.

NOTA BENE

La procedura di upgrade di PHPMyAdmin non è particolarmente complicata. Ci basterà scaricare l’ultima release della pagina di download del progetto e scompattarla nella directory precedente indicata, sovrascrivendo tutti i file avendo cura di preservare il file config.inc.PHP.

Installazione e configurazione di Apache, PHP e MySQL su Mac OS X

Come (tutti) sanno due dei tre pilastri dello sviluppo web open-source sono già inclusi ‘di serie’ in Mac OS X. Parlo di *AMP, e cioè di Apache e di PHP (rispettivamente nelle release 2.2.19 e 5.3.6 in Lion). MySQL, invece, è un pacchetto che dovremo scaricare ed installare (e configurare) autonomamente.

Ci sono un (buon) numero di pacchetti preconfezionati per configurare e attivare questi software (MAMP, DAMP, XAMPP e BitNami … programmi che cercano di non “invadere” la base installata con/dal sistema operativo). In quest’annotazione, però, ci occuperemo proprio degli strumenti forniti con esso. Una piccola nota è doverosa farla per MySQL, precedentemente incluso nelle versioni Mac OS X Server sino alla 10.6 “Snow Leopard” ed ora abbandonato in favore di PostgreSQL (sia per ragioni tecniche che, temo, di licenza vista l’acquisizione del primo nel mondo Oracle); con questa procedura si ovvierà  al cambiamento appena descritto.

Possiamo innanzitutto verificare quale versione di PHP è fornita con il sistema operativo, dovremo utilizzare il programma Terminal.app ed i comando bash:

username@[~]: PHP -v

PHP 5.3.6 with Suhosin-Patch (cli) (built: Jun 16 2011 22:26:57)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

Allo stesso modo per Apache:

username@[~]: httpd -v

Server version: Apache/2.2.19 (Unix)
Server built:   Jun 16 2011 22:09:54

Appurata l’effettiva installazione di entrambi ora dovremo andare ad attivare il modulo necessario al webserver per la corretta gestione del linguaggio PHP. Questo avviene in maniera del tutto analoga al mondo *nix dove si va a modificare il file. Questo si trova all’interno della directory di sistema (e pertanto invisibile al Finder) /etc/Apache2/.

Da terminale, quindi, impartiremo i seguenti comandi:

username@[~] cd /etc/Apache2
username@[~] sudo nano /etc/httpd.conf

Con i precedenti comandi ci siamo spostati nella cartella contenente il file, quindi abbiamo invocato l’editor di testi nano con privilegi amministrativi, infatti il secondo comando provocherà la richiesta di immissione della password di un utente con tali privilegi. Una volta avviato nano con il comando “control+w” andiamo ad immettere nel campo di ricerca la parola “PHP” che provocherà il ritorno di questo risultato:

#LoadModule PHP5_module libexec/Apache2/libPHP5.so

A questa dovremo rimuovere il # ad inizio riga (de-commentare, come si dice più correttamente) in modo che la linea diventi:

LoadModule PHP5_module libexec/Apache2/libPHP5.so

Graficamente la situazione è quella nello screenshot sottostante:

nano load PHP Install and configure PHP, MySQL & Apache on OS X Lion 10.7 and 10.6

Premiamo quindi i tasti “control + x” per uscire da nano e diamo conferma del salvataggio del file premendo “y“.

Andiamo ora ad installare il terzo pezzo del puzzle: MySQL. Lo possiamo scaricare dal sito Apple o direttamente dal sito del progetto MySQL, scegliendo la versione Community per Mac OS X nella versione x86 o 64bit a seconda dell’architettura del nostro sistema (Lion funziona a 64bit tutte le volte che può, quindi la scelta mi pare ovvia).

Quando il sito ci chiederà se vogliamo registrarci, scegliamo poco più in basso l’opzione “No thanks, just take me to the download!” in maniera da ottenere il nostro DMG che, estratto, si presenterà come segue:

MySQL install osx dmg Install and configure PHP, MySQL & Apache on OS X Lion 10.7 and 10.6

A questo punto installeremo prima il package relativo a MySQL, successivamente MySQLStartupItem ed infine il MySQL.prefPane. Il primo è il DBMS vero e proprio, il secondo ed il terzo (quest’ultimo a funzionante a 32bit al momento) permettono di avviare correttamente al boot o al comando dell’utente il servizio. Possiamo notare che nel Pannello delle Preferenze è correttamente indicato lo stato del demone.

MySQL system preference osx Install and configure PHP, MySQL & Apache on OS X Lion 10.7 and 10.6

Possiamo verificare, come fatto precedentemente, l’effettiva installazione del nuovo pacchetto. Premurandoci di avviarlo come mostrato nello screenshot, aperto il terminale impartiamo il comando:

username@[~]: /usr/local/MySQL/bin/MySQL -v

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 118
Server version: 5.5.14 MySQL Community Server (GPL)
Reading history-file /Users/username/.MySQL_history
Type 'help;' or '\h' for help. Type '\c' to clear at the current input statement.

Questo comando, oltre a mostrarci la versione di MySQL in uso, ne attiva anche una sessione da cui usciamo con il comando “\q“.

Il passo successivo è quello di mettere in sicurezza la nostra installazione, questo avverrà tramite l’utilizzo del comodo script:

username@[~]: sudo MySQL_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):

… alle cui domande dovremo rispondere a seconda della nostra configurazione. È buona norma avere una password dell’utente root di MySQL diversa da quella di un utente con privilegi amministrativi del sistema. In questo modo avremo decretato un accesso esclusivamente autorizzato al demone MySQL motivo per cui, per ogni ulteriore interazione con esso, dovremo esplicitare l’utente e la password del nostro utente:

username@[~]: MySQL -u root -p[password]

Facciamo attenzione al fatto che NON vi è spazio tra il parametro -p ed il campo [password] nel comando precedente.

Arrivati a questo punto non ci rimane che vedere come avviare/fermare il server web Apache. Questo viene ottenuto mediante l’attivazione (o meno) della funzionalità  di Condivisione Web all’interno del pannello Condivisione in Preferenze di Sistema.

web sharing turned on Install and configure PHP, MySQL & Apache on OS X Lion 10.7 and 10.6

Alternativamente abbiamo sempre a disposizione il Terminale, e potremo impartire i comandi:

sudo Apachectl start
sudo Apachectl stop

(possiamo fare riferimento alla pagina di manuale di Apachectl – man Apachectl – per vedere quali sono le altre opzioni messeci a disposizione da questo comando oltre il semplice avvio/stop. A questo punto all’indirizzo web

http://localhost/~username/

possiamo visualizzare la pagina iniziale del nostro sito web. Questo è contenuto nella directory Siti che possiamo vedere nel Finder quando esploriamo la nostra home utente (via terminale corrisponde al percorso assoluto /Users/username/Sites/).

Chiudiamo questa lunga annotazione andando a visualizzare tutti i parametri di configurazione di PHP attraverso l’uso del file testuale PHPinfo.PHP (che possiamo creare con TextEdit nella sopra menzionata cartella) ed il cui contenuto è unicamente la seguente riga:

 <?PHP PHPinfo(); ?>

Puntando il nostro browser web all’indirizzo:

http://localhost/~username/PHPinfo.PHP

potremo visualizzare la seguente schermata:

PHP module configuration Install and configure PHP, MySQL & Apache on OS X Lion 10.7 and 10.6

Questo è quanto, buon lavoro!


PS = questo articolo traduce l’articolo omonimo di CoolestGuyPlanet.

installare RMySQL su CentOS

… una veloce nota per chi, come me, si ritrova a dover installare il modulo RMySQL su un server CentOS (o RHEL).

Chi mi segue da tempo potrà ricordare che sui miei server R viene installato attraverso l’utilizzo del repository EPEL repository (come ho descritto in questo post del blog).

Premesso ciò passiamo all’installazione vera e propria. Bisogna puntare il browser sul sito di RMySQL e scaricare entrambi i pacchetti RMySQL_0.7-5.tar.gz e DBI_0.2-5.tar.gz. Ho dovuto proseguire in questo modo Perché il pacchetto R-DBI presente nei repository attivati nel mio server generava dei problemi di dipendenze/versioni non previsti.

Quindi – dovendo installare il modulo in modo che fosse disponibile a tutti gli utenti del sistema – come utente root ho impartito i seguenti comandi:

[root@machine ~]# R CMD INSTALL DBI_0.2-5.tar.gz
[root@machine ~]# R CMD INSTALL RMySQL_0.7-5.tar.gz

A questo punto all’utente non è rimasto che avviare il suo ‘ambiente‘ di sviluppo in R e controllare che il nuovo modulo fosse effettivamente attivo e disponibile. Happy coding!

come aggiornare PHP e MySQL su CentOS usando il repository di Remi

Ci siam trovati in ufficio a dover aggiornare l’accoppiata PHP/MySQL per il deployment di un paio di applicazioni bio-informatiche in corso di sviluppo.

I nostri sistemi, per N ragioni, sono ancorate al mondo rpm; quindi Red Hat Enterprise Linux ed il suo clone “free (as in beer)CentOS e il loro lento ciclo di update hanno prodotto la situazione per cui o affrontavamo l’aggiornamento “a mano” di 10 nodi con ricompilazione dei sorgenti, oppure adottavamo la strategia dell’adozione di un repository esterno alla distribuzione.

Dopo un’indagine abbastanza veloce abbiamo deciso di affidarci al lavoro, pluriannuale e ben noto, di Remi Collet. Una veloce ripassata a yum e ai suoi plugin ed i pacchetti erano installati, con la piccola rogna di un problema con le dipendenze di PHP-MySQL (probabilmente dovuta all’aggiornamento in fasi distinte di PHP prima e MySQL poi).

Risolto quello son passato ad esaminare MySQL e i database da esso gestiti, incontrando il simpatico errore qui sotto riportato:

ERROR 1146 (42S02): Table ‘MySQL.servers' doesn't exist

when you do a simple FLUSH PRIVILEGES;

Son quindi corso ai ripari con una veloce ricerca su Google che mi ha convinto della necessità di applicare SEMPRE, indipendentemente dal metodo di aggiornamento utilizzato (tar.gz, deb o rpm), il comando MySQL_fix_previleges_tables assieme alle altre indicazioni che si trovano nella documentazione ufficiale PRIMA di fare altre operazioni sui database..

Nella fattispecie impartendo il comando:

/usr/bin/MySQL_fix_privilege_tables --password=$your-MySQL-root-password

ha risolto il mio problema.

Alternativamente una soluzione avrebbe potuto essere quella proposta in questo post, ma come ho detto non c’è stato bisogno di fare altre operazioni.