Archivio del mese di agosto 2008

Installare Interchange su Debian Etch

Debian, Open Source, Tips & tricks Nessun commento »

Come si legge sul sito Internet ufficiale del progetto, Interchange è una suite composta da un’applicazione server e un framework di componenti extra dedicati alla erogazione di servizi di commercio elettronico a livello professionale. Si tratta di uno dei più longevi e meglio supportati progetti Open Source mai realizzato.

Per esperienza diretta (io lo uso dal 1999) posso dire che Interchange sia davvero la migliore applicazione ecommerce oggi disponibile. Certo, necessita di una approfondita competenza sia dal punto di vista sistemistico che di sviluppo: sin dal principio la scelta di Interchange Development Group (il team di sviluppo di Interchange) è stata quella di realizzare una perfetta integrazione tra l’ambiente UNIX/Linux e l’interfaccia web. Per questo motivo mettere mano a questo programma non è mai cosa semplice, ma permette sempre di ottenere risultati straordinari. Chi decida di provarlo sappia che il prerequisito fondamentale è un’ottima conoscenza di PERL, MySQL e Apache.

Detto questo, ecco come si installano i pacchetti di Interchange su un server Debian GNU/Linux 4.0 (Etch):

  1. Aggiornare il file /etc/apt/sources.list aggiungendo i repositori ufficiali messi a disposizione da Interchange Development Group:
    deb http://ftp.icdevgroup.org/interchange/debian interchange main
    deb-src http://ftp.icdevgroup.org/interchange/debian interchange main
  2. Aggiornare le sorgenti di apt-get:
    # apt-get update
  3. Procedere con l’installazione via apt-get del software e delle relative dipendenze:
    # apt-get install interchange interchange-cat-standard interchange-ui

Questo è quanto. Ora che Interchange è installato sul nostro server non resta che creare il nostro primo negozio online con il comando:

# makecat

Rispondendo alle domande dell’input di comando realizzeremo il nostro primo catalogo di prodotti. Per la gestione completa del programma e per la customizzazione del codice e dei template grafici, si veda la documentazione ufficiale di Interchange. Provatelo: ne vale la pena!

FreeBSD: come effettuare l’aggiornamento dei ports

FreeBSD, Open Source, Tips & tricks Nessun commento »

Prima di tuffarmi a capofitto nel mondo di Debian GNU/Linux ho lavorato alcuni anni quasi esclusivamente con FreeBSD, che continuo ad utilizzare su alcuni server che ospitano applicazioni critiche.

Come (quasi) tutti sanno, FreeBSD mette a disposizione due meccanismi distinti per l’installazione delle applicazioni: il sistema dei Packages per l’installazione di pacchetti precompilati e l’albero dei Ports per l’installazione autocompilante. Il primo metodo di gestione dei pacchetti somiglia in tutto e per tutto a quelli adottati dalle principali distro Linux. Per chi lavora abitualmente con Slackware le analogie sono particolarmente evidenti, come dimostra la screenshot di una pagina di `sysinstall` che riproduco di seguito.

Diverso invece il caso dei ports, che in un certo senso sono il “vero” strumento di gestione del software sotto FreeBSD. La gestione dei ports permette di scaricare localmente il tree, ovvero l’alberatura completa delle istruzioni di compilazione e installazione, suddivisa per categorie di software. In ogni singolo port scaricato nel tree locale è riportata la descrizione delle dipendenze e lo scheletro del codice. Attraverso una serie di semplici comandi è possibile installare, disinstallare, reinstallare, cancellare, aggiornare ogni programma installato sul server, compresi i servizi core del sistema operativo.

Per una corretta manutenzione dell’alberatura dei ports è bene predisporre un meccanismo di aggiornamento dei tree. Per prima cosa, assicuriamoci che i ports siano installati sul server, in caso contrario pensiamoci noi:

# pkg_add -r cvsup-without-gui
# mkdir /usr/ports

Il primo comando installa CVSup, il software con cui sotto FreeBSD si gestisce il versioning dei port.

Procediamo ora al popolamento dell’alberatura aggiornata dei ports:

# cvsup -L 2 -h cvsup9.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

Capita spesso che, dopo molti secondi di inattività, il comando restituisca un errore di connessione. Non vi preoccupate, in questo caso attendete qualche secondo oppure provate a cambiare repository scalando da 9 - teoricamente il meno utilizzato - a scendere:

# cvsup -L 2 -h cvsup8.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup7.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup6.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup5.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup4.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
[...]

Ripetendo questa semplice operazione ogni volta che vorremo effettuare un aggiornamento completo dei ports avremo sempre a disposizione software aggiornato anche per il nostro server FreeBSD. Se vogliamo, ad esempio, installare l’ultima versione di `mutt`, il celebre programma di gestione della posta elettronica da linea di comando, procediamo come segue:

# cd /usr/ports
# make search name=Mutt
# cd mail/mutt
# make install clean

Fatto… :-)

www.fab3.net - Urban Screen Milano 2008

Varie, YouTube Nessun commento »

Comando `explain` per ottimizzare le query con MySQL

MySQL, Open Source, Tips & tricks Nessun commento »

Quando un’applicazione raggiunge un livello di complessità elevato si rischia di perdere di vista alcuni dettagli - apparentemente minori - che spesso si rivelano fondamentali per una esecuzione armoniosa e ottimizzata dell’intera applicazione.

Dovendo gestire database molto articolati con MySQL, ad esempio, si incorre facilmente in piccoli errori di valutazione circa l’effettivo consumo di risorse che può generare una istruzione SQL. Può essere utile in questi casi ricorrere ad un semplice strumento che ci rinfreschi le idee circa la struttura della table che andremo ad interrogare: il comando `explain`.

Grazie al comando `explain` è possibile analizzare quali indici chiama in causa una query e ottimizzare di conseguenza le dichiarazioni INSERT, specie quando si ricorre a quelle multiple per memorizzare più righe con una sola istruzione SQL. Il comando `explain` vi mostra quali indici vengono utilizzati da ogni query, oltre ad altre importanti informazioni.

Per rendere più efficienti le query dovremo fare in modo che tutte le tabelle interessate vengano lette attraverso gli indici, senza subire uno scorrimento completo (table scan). In questo senso le informazioni ricavate mediante `explain` possono rivelarsi fondamentali.