Configurazione di Apache, PHP5 e MySQL in Leopard

N.B. Il php distribuito con Leopard non è compilato col supporto per gd e mcrypt… O_O …cosa dicevo delle cose fatte a metà? O_O (apt-get install php5-gd ~_^). Ad ogni modo, tocca sporcare l’installazione aggiungendo un php che abbia il supporto alle gd… O_O si, una cosa parallela al php 5.2.4 in bundle, chiamiamolo una ripetizione… non amo le ripetizioni! O_O A presto un how to per coprire questa situazione… ^_^

Apache 2 e PHP 5 sono già inclusi in Leopard, ma non sono automaticamente installati per lavorare insieme (ma dico io, come mai alla Apple mi fanno i lavori a metà! O_O Vabbè), la configurazione è comunque semplice, basta abilitare il modulo php nel file di configurazione (/private/etc/apache2/httpd.conf) di apache e far ripartire il demone, la riga da decommentare è: # LoadModule php5_module libexec/apache2/libphp5.so
PHP non è configurato di default per usare la socket di mysql, vediamo come fare: di solito il file di configurazione di php5 non è attivo, per usarlo, basta copiare quello di default.

sudo cp /private/etc/php.ini.default /private/etc/php.ini

e modificare la linea mysql.default_socket = in mysql.default_socket = /tmp/mysql.sock, l’altra modifica da compiere è sulla linea mysqli.default_socket =, che deve diventare: mysqli.default_socket = /tmp/mysql.sock

A questo punto, basta attivare il server apache dal prefpane: Preferenze di Sistema -> Condivisione -> Condivisione Web.
A questo punto potete provare le capability della vostra installazione MAMP con un semplice script php, create un file di testo nella vostra cartella $HOME/Siti, con all’interno:


<?php
phpinfo();
?>

L’installazione di mysql è già stata trattata nel post Installazione di Ruby on Rails in Leopard

Provate ora lo script indirizzando safari a http://localhost/~vostrousername/info.php (la tilde ~ in MAC si fa con la combinazione di tasti alt + 5)

That’s all folks! ^_^

Firmware Apple iSight

Per poter usare la iSight integrata nel mio macbook, come da istruzioni sul wiki, devo mettere in /lib/firmware/2.6.22-14-generic/ (o qualsiasi sia il vostro kernel) il file che trovate nella installazione di leopard nella directory raggiungibile con (spezzo in due cd per starci nella pagina… O_O):

cd /System/Library/Extensions/IOUSBFamily.kext/Contents/
cd PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/

Installazione di Ruby on Rails in Leopard

Con l’uscita di Leopard, Apple ufficializza il supporto a RoR, inserendolo direttamente nell’installazione base del proprio OS.
Per avere una installazione un po’ più completa, basta aggiungere MySQL, vediamo come rendere la nostra Leopard Box, una perfetta piattaforma per lo sviluppo in RoR.

N.B. Si suppone installato il pacchetto Xcode, installabile dal DVD di Leopard!

Verifica dell’installazione di Ruby e Rails

Per verificare se effettivamente ruby e rails sono installati, basta lanciare questo comando:

ruby -v; rails -v

Che nel mio caso restituisce:

ruby 1.8.6 (2007-06-07 patchlevel 36) [universal-darwin9.0]
Rails 1.2.3

… 1.2.3? … vecchiotto… la stabile è ora la 2.0.2… vabbè, rimediamo, intanto aggiorniamo il sistema gem e poi lanciamo un aggiornamento di tutte le gemme presenti già nel sistema, l’aggiornamento di rails però non installa la nuova gemma, tipica delle installazioni di rails v2, chiamata activeresources, installeremo anche quella:

sudo gem update --system
sudo gem update
sudo gem install activeresource

Hmmmm! Manca una gemma che può rendersi molto utile durante lo sviluppo di applicazioni: rmagick! Che però dipende da imagemagick, vediamo come installare entrambi.

Installazione di MacPorts

MacPorts è un grande repository di software Linux portati a Mac, è una risorsa molto potente, in quanto rende disponibile in maniera semplice (e piuttosto familiare per un utente Debian/Ubuntu, anche se concettualmente è più simile al sistema Gentoo) un vastissimo parco di programmi utili, come ad esempio nmap… quale amministratore di rete potrebbe farne a meno? ^_^
Bene, dopo il pistolotto iniziale, installiamo macports scaricando il dmg per Leopard e lanciando la solita installazione… (Ci mette un bel po’, non preoccupatevi, macports si sta compilando per il vostro sistema…).
Per rendere più semplice la navigazione e la scelta dei pacchetti, si può installare anche porticus, una specie di package manager… una GUI per l’accesso al repository di macports.
Ah! non dimenticate di dire a bash dove trovare l’eseguibile di port, pena il dover continuamente dare il percorso completo da riga di comando (I’m so lazy…), quindi aggiungete queste righe al file .bash_profile

export PATH=$PATH:/opt/local/bin
export MANPATH=$MANPATH:/opt/local/share/man
export INFOPATH=$INFOPATH:/opt/local/share/info

E chiudete (Command+q) e riaprite il terminale!

Installazione di Rmagick

Semplice… usate porticus o più velocemente copiate e incollate questi comandi nel terminale:

sudo port install tiff -macosx
sudo port install ImageMagick
sudo gem install rmagick

Anche qui, port non fa altro che rendere abbastanza trasparente la compilazione del pacchetto, preoccupandosi delle fasi preliminari di configurazione della sorgente, questo però implica che l’installazione sia un po’ lunga, in quanto deve compilare anche tutte le dipendenze mancanti nel sistema per quel determinato pacchetto.

Installazione di MySQL

Alla data di questo howto è finalmente disponibile un package DMG ufficiale per Leopard (Mac OS X 10.5), io ho scelto la versione per x86_64, d’altronde questo OS è a tutti gli effetti un OS a 64bit, no? Una volta finito il download, viene montato automaticamente il dmg, presentandoci due pkg (uno è il DB vero e proprio, l’altro è l’aggiunta alle applicazioni in startup automatico) e un prefPane, installiamoli tutti.
MySQL viene installato in /usr/local/mysql, la socket è in /tmp/mysql.sock e lo startup item in /usr/local/MySQLCOM.

L’avvio automatico è affidato a launchctl, perciò, basta creare un file chiamato /Library/LaunchDaemons/com.mysql.mysqld.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>KeepAlive</key>
	<true/>
	<key>Label</key>
	<string>com.mysql.mysqld</string>
	<key>Program</key>
	<string>/usr/local/mysql/bin/mysqld_safe</string>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

Proviamolo lanciando questo comando: sudo launchctl load /Library/LaunchDaemons/com.mysql.mysqld.plist

Ora dovrebbe funzionare, priviamo a riavviare per vedere se parte in automatico!

Sean O’Sullivan consiglia di creare, per comodità, un alias nel file delle risorse della shell, quindi aggiungete queste righe al file .bash_profile (e poi riavviate il terminale):

alias start_mysql="sudo /usr/local/MySQLCOM/MySQLCOM start"
alias stop_mysql="sudo /usr/local/MySQLCOM/MySQLCOM stop"
alias restart_mysql="sudo /usr/local/MySQLCOM/MySQLCOM/MySQLCOM restart"

Come noterete, lanciando il comando mysql, la shell non lo trova, va aggiunto al file delle risorse della shell, in modo che sappia dove trovarlo, questo si può fare con questo comando da, aggiungere al file .bash_profile (e poi riavviate il terminale):

alias mysql="/usr/local/mysql/bin/mysql"
alias mysqladmin="/usr/local/mysql/bin/mysqladmin"

Ed ora installiamo la gemma:

sudo su -
ARCHFLAGS='-arch x86_64' gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
install_name_tool -change /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib /usr/local/mysql/lib/libmysqlclient.15.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle

Annotazione personale… Hmmmmm! A chi mi dice che GNU/Linux è difficile, farò leggere questo paragrafo… O__O Da utente sia MAC che Ubuntu, posso dirvi che nella mia derivata Debian preferita, bastava aprire il gestore di pacchetti, cercare mysql server e installarlo… 3 click… 3 diavolo di click… O_O

And… That’s all folks! ^_^

Howto: Sme Server (PDC) + FreeRadius + Wireless AP + Autenticazione Windows XP sul dominio via wireless

Un cliente mi ha chiesto di portare la sua infrastruttura informatica da completamente cablata a wireless, non ho trovato guide on line su questo topic su una configurazione come descritta nell’oggetto, quindi ho deciso di scrivere questo howto in modo da raccogliere gli appunti e le informazioni sparse per la rete che mi hanno permesso di configurare il tutto, in realtà, ad oggi, mi manca ancora lo step finale, fare in modo che il client winXP attivi il wireless prima della schermata di login, sto studiando proprio ora n po’ di guide sparse su questo argomento per vedere di riuscire poi a riassumerle in questa guida (sembra che manchi solo la generazione da parte dello sme server con freeradius di dei certificati da installare nella macchina windowsXP, se qualche lettore, incappando in questo diario disgraziato, avesse già esperienza di un tale setup, sarei molto felice di conoscere il suo parere e ricevere consigli! ^_^)

Prerequisiti:

  • SME Server configurato come PDC
  • Utenti e gruppi per il pdc impostati a dovere
  • Un AP Wireless
  • Un computer con Win XP Pro

FreeRadius

SME Server viene già equipaggiato con FreeRadius per permettere l’uso della VPN, per prima cosa, attivo il flag VPN per tutti gli utenti del dominio (ho letto da qualche parte, non ricordo dove, che questo è un passo necessario, non ne sono sicuro, un giorno proverò a eliminarlo), a questo punto, l’unica cosa che manca è l’aggiunta del client, fra quelli conosciuti da FreeRadius, attraverso cui vengono inviate le informazioni di autenticazione degli user, in questo caso il client che fa da ponte fra il computer e il server è l’access point, per impostarlo bastano queste tre azioni:

  • andare nella sezione hostnames and addresses del server-manager dello SME server, aggiungerlo fra i nomi host conosciuti (zona Local)
  • lanciare da utente root dello sme server (accedendo magari via SSH alla macchina), i due comandi che riporto nel blocco successivo
db hosts setprop ap_hostname.domain RadiusKey An1mp0ssib7eT0Gu3ssP@ssw0rd
signal-event remoteaccess-update

Access Point

A questo punto bisogna configurare il vostro AP per collaborare con lo SME Server, per fare ciò, selezionare nella pagina in cui si gestisce la sicurezza dell’AP wireless, WPA o WPA2 come tipo di autenticazione, specificare WPA Enterprise, il che dovrebbe rendere editabile la parte in cui inserire le informazioni del vostro server radius, normalmente gli unici parametri da impostare sono: indirizzo ip dello SME Server (che fa da PDC e Radius server), porta (1812) e la chiave del client (nell’esempio: An1mp0ssib7eT0Gu3ssP@ssw0rd).

Client

A questo punto ho provato a collegarmi col mio portatile per testare la connessione, seleziono in NetworkManager l’SSID della rete wifi, mi viene presentato un dialogo in cui scelgo WPA Enterprise come tipo di tipo di autenticazione e inserisco come nome utente e password il mio utente impostato nello sme server come utente del dominio, gli altri parametri (ad esempio PEAP), li vedo già impostati automaticamente, il client linux si collega perfettamente, ok, l’AP e lo sme server dialogano! ^_^

Windows XP

Riesco a collegarmi con la macchina windows xp alla rete wireless, bene, mi rende molto felice, già che ci sono provo a impostare nei parametri di autenticazione un altro utente del dominio e senza problemi si collega, l’utente non aveva il flag VPN cliccato nell’interfaccia Utenti dello SME Server, inizio a pensare che quel flag non serva per collegarsi alla rete wifi una volta loggati nel client, ma piuttosto aiuti ad attivare la scheda di rete wifi prima della schermata di logon, magari fa in modo che vengano generati dei certificati che possono essere installati nella macchina winXP per autenticarla prima del login… vedremo.
Per ottenere questo risultato basta seguire questi passi:

  • Click destro su risorse di rete -> Proprietà
  • Click destro sulla connessione di rete che corrisponde alla scheda wifi -> Proprietà
  • Scegliere il tab Reti Wireless
  • Cliccare su Usa windows per configurare la mia rete wireless
  • In reti preferite, selezionare Aggiungi
  • Inserire l’SSID della rete wifi
  • Selezionare come Autenticazione Network: WPA
  • Selezionare come Data encryption: TKIP
  • Nel Tab Autenticazione, scegliere Protected EAP (PEAP)
  • Togliere la spunta da tutti i checkbox
  • Cliccare su Proprietà
  • Togliere il Valida il certificato del server
  • Togliere Abilita connessine Veloce
  • Selezionare nel box: Secured Password (EAP-MSCHAP v2)
  • Cliccare su Configura
  • Togliere la spunta sull’uso delle credenziali di logon di windows
  • A questo punto, la prima volta che ci si prova a collegare verrà presentato un balloon da cliccare che renderà visibile una interfaccia di inserimento dati, inserire il nome utente e la password che vengono usati per l’autenticazione sul dominio dell’utente

Ora viene la parte ancora un po’ nebulosa, devo riuscire a far attivare il wifi prima del login, in modo da poter staccare finalmente quei brutti cavi di rete! O_O

N.B. Sembra da questa guida che i certificati che mi servono siano presenti in /etc/rddb/certs e si chiamino root.der e root.p12, appena posso provarli, aggiorno questa guida, efettivamente nella mia installazione SME Server sono presenti (evidentemente auto generati dallo sme server per risultare preconfigurato per gli accessi VPN, grazie SME Server Team! ^_^).
N.B. (20081702) Ho provato i due certificati, sono scaduti e WinXP non me li usa, però ho scavato un po’ nel wiki di SME Server alla ricerca di contribs interessanti e ho trovato Certificate, con cui sono sicuro di non fare casini nella generazione di nuovi certificati (non so bene in sme se vengano già usati o meno quelli esistenti, vorrei evitare di mandare tutto a spendere! ^_^
N.B. (20081802) Guardando la documentazione per il contrib presentato nel precedente N.B., ho scoperto dove in realtà risiedono i certificati del server, in /home/e-smith sono presenti tre cartelle con il crt, la key e il pem… vedremo… intanto tutto tace nei riguardi della mia richiesta di aiuto alla comunità dello SME Server… ha avuto qualche risposta… nevvero si è trasformata in una amichevole chiacchierata un po’ OT, ma anche questo fa parte del gioco! ^_^