Archivio di February 2006

Come creare una piattaforma: WAMP: (Windows – Apache – MySQL – PHP)

Ciao a tutti,
oggi affrontiamo in modo molto pragmatico come realizzare una piattaforma di tipo WAMP (Windows + apache + mysql + php).
Tale soluzione è implementata in due ambiti specifici tipici:

  • Macchine di sviluppatori
  • Hosting provider che offrono anche supporto su Windows con possibilità  di utilizzare sia php che ASP.NET (Asp non lo menziono nemmeno più… :-D )

Da un punto di vista di prestazioni va detto che pur essendo sia Apache che PHP che MySQL nati per l’ambiente Linux, anche sotto Windows offrono ottime prestazioni.

L’installazione che affronteremo insieme riguarda un sistema su Windows XP ma è di fatto identico per tutti i sistemi >= Windows 2000.

Per le installazioni di mysql e apache essendo davvero elementari sarà molto breve:

  • mysql
    Consiglio di scaricare la versione 5.0.x disponibile per il download:
    http://dev.mysql.com/downloads/mysql/5.0.html
    Una volta lanciato l’installer è sufficiente o far fare configurazione standard a mysql (se si è inesperti) o in alternativa eseguire la configurazione guidata da cui è possibile fare un rapido tuning di mysql in base all’utilizzo che se ne vuole fare.
  • apache
    Per lavorare con php in ambiente Windows consiglio l’utilizzo di apache 2.0.x.
    Link per scaricare Apache: http://httpd.apache.org/download.cgi
  • php
    Veniamo ora all’installazione (non difficile) di php come modulo di apache su sistema WAMP
    Scaricare la versione 5.1.x da php.net:
    http://www.php.net/downloads.php
    Non ci resta ora che seguire pochi passi per configurare PHP:
    1. Scompattare il file .zip appena scaricato in c:\php (es. ovviamente la directory scelta puà essere anche c:\programmi\php etc…)
    2. Copiare il file presente in c:\programmi\php php.ini-dist in c:\windows o c:\winnt (a seconda del S.O.) e rinominarlo come php.ini
    3. Andare nella directory di installazione di php e copiare il file php5ts.dll (se si installa php 4 il file si chiamerà  ovviamente php4ts.dll) in c:\windows\system32
    4. Inserire le seguenti righe di configurazione in httpd.conf (file di configurazione di apache) dopo i vari AddModule:
    LoadModule php5_module c:/programmi/php/php5apache2.dll
    AddType application/x-httpd-php .php

Andate sul vostro browser e digitando http://localhost vedrete apache che vi risponde.
Potete quindi testare php creando nella document root di apache un file info.php con la chiamata a phpinfo()

NOTE SU LIBRERIE mysql

Da un po’ di versioni di php è necessario abilitare le funzioni di mysql. Cià è possibile scommentando da C:\windows\php.ini la riga con l’estensione di php_mysql.dll
Copiare libmysql.dll in C:\windows\system32
Inoltre verificate di avere in php.ini il path di dove si trovano le estensioni configurato corrtetamente
Riavviare apache.

Sperando di essere stato di aiuto a qualcuno vi saluto,
Maxgrante
info[AT]massimo-caselli[DOT]com

Tabelle in MySQL, MyISAM vs INNODB

Ciao a tutti,
affrontiamo di seguito un confronto tra le tabelle MyISAM (le classiche di mysql) e le innovative INNODB.

Cerchiamo innanzitutto di schematizzarne le differenze:

MyISAM (Default engine di mysql)

Sono le tabelle storiche di mysql, derivanti direttamente dalle vecchie ISAM che sono dismesse ormai da anni.
Garantiscono indubbiamente un’ottima affidabilità  e velocità . Su versione di mysql più vecchie della 4.1 sono sicuramente da preferirsi alle INNODB.

Forniscono un vantaggio notevole che è dato dalla possibilità  di poter utilizzare indici FULLTEXT per ricerche con ranking stile Google.

Il metodo di salvataggio dei dati è basato sulla costruzione e lavorazione di 3 file binari:

  • frm
    Struttura della tabella
  • MYD
    File contenente tutti i dati della tabella
  • MYI
    File contenente i dati relativi agli indici del database

Inutile sostituirsi ai manuali… :-D
Per maggiori informazioni: http://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine.html

INNODB

Sempre più spesso capita di trovare database server le cui tabelle di default utilizzano l’engine INNODB.
Tale scelta è dettata dalla sempre più importanza anche per progetti web di funzionalità  che normalmente mysql con le semplici tabelle MyISAM non fornisce.
Vediamo quindi una serie di funzionalità  avanzate garantite dalle tabelle INNODB:

  • Foreign Key
    Le tabelle INNODB sono in grado di gestire l’integrità  referenziale tra le chiave esterne del database, in sostanza tale integrità  è sempre stata delegata all’abilità  dello sviluppatore, ora con il motore INNODB è possibile delegare questa annosa attività  a mysql stesso, potendo quindi specificare vari comportamenti a seconda della chiave esterna utilizzata.
  • Transazioni
    Le transazioni sono fondamentali in situazioni tipiche da shop online dove sino a che non arriva conferma da parte della banca o di chi valida la carta di credito, le query non devono essere “eseguite realmente”.
    Fondamentalmente si tratta di eseguire una serie di query che verranno validate o annullate mediante chiamate COMMIT o ROLLBACK.
  • Mancanza – FULLTEXT
    Cito ora una mancanza grave nelle tabelle INNODB, l’assenza di poter (almeno per ora) dichiarare un campo come indice fulltext per poter eseguire ricerche con score alla Google.

Queste sono le principali funzionalità  aggiuntive di INNODB rispetto a MyISAM, come sempre per maggiori informazioni vi rimando al manuale ufficiale di MySQL: http://dev.mysql.com/doc/refman/5.0/en/innodb-overview.html

COME SCEGLIERE LE TABELLE????

Cercherà ora di dettare due linee guide per stabilire se conviene realizzare tabelle MYISAM o INNODB.
Innanzitutto come sempre dipende dal contesto di applicazione.
Una breve premessa sulle performance… a mio parere la velocità  dei due motori è pressochè la stessa.
Se necessitiamo di transazioni, supporto all’integrità  referenziale perchè dobbiamo realizzare un’applicazione con shop online o un magazzino con carico/scarico (N.D.R. si puà fare tutto cià anche con MyISAM) utilizzerei le tabelle di tipo INNODB, altrimenti utilizzerei le MyISAM in quanto hanno due vantaggi grandissimi, supporto FULLTEXT e soprattutto è possibile fare un backup diretto dei file binari per l’importazione/esportazione della base dati.
Con le tabelle INNODB è invece molto complesso in quanto i dati di TUTTI i database presenti sul server e che utilizzano tabelle INNODB vengono normalmente salvati nel file ibdata1.

Anche volendo salvare i file dei dati ognuno per tabella le transazioni e gli indici vengono comunque salvati nel TABLESPACE e quindi il recovery mediante import di tutti i file presente per esempio sotto: /var/lib/mysql/miodb/ NON FUNZIONA!

Sperando di essere stato il più chiaro possibile vi saluto.
Ciao. Max
info[AT]massimo-caselli[DOT]com

Qmail toaster, soluzione per mail server basato su Linux

Ciao a tutti,
oggi vorrei trattare e più che altro segnalare un fantastico prodotto Opensource basato interamente su Qmail.
La soluzione in questione è QMAILTOASTERhttp://www.qmailtoaster.com

Utilizzando questo prodotto possiamo con notevole facilità  realizzare un server di posta che abbia tutti i servizi e supporti che possano servire come una gestione via web dei domini, degli account etc…

Allego brevissima lista servizi tratta dal sito ufficiale:

* Source RPM packages ready for all RPM based distributions
* SMTP with SMTP-AUTH, SpamThrottle, DNS, large concurrency
* SPF “Sender Policy Framework”
* Integrated SpamAssassin, ClamAV and Simscan
* Warlord virus and worm loader realtime scanning
* CHKUSER 2.0 functions for qmail-smtpd
* Qmail-Tap provides email archive capability
* Virtual Domains (mysql), Virtual Users (mysql)
* Autoresponder, Mailing List
* Web-based email system, Web-based administration tools
* SMTP roaming via SMTP-AUTH, POP3-AUTH, & IMAP-AUTH
* POP3, POP3-SSL, IMAP and IMAP-SSL

Ultimamente hanno pubblicato un fantastico how-to che permette di installare Toaster su CentOS 4 (e anche 4.2) senza alcun problema.
L’how to lo potete trovare qui: http://www.qmailtoaster.com/info/EZ-QmailToaster-Install.txt

Personalmente perà vi consiglio di scaricare il file che fa il download automatico dei pacchetti necessari e anche quello che esegue l’installazione perà, il primo lanciatelo pure, il secondo invece seguitelo passo passo a mano.

E’ un’operazione più lunga e meno comoda ma fornisce maggiori informazioni in caso di problemi.

A questo punto avremo a disposizione interfaccie web per l’amministrazione dell’intero server di posta.
- Qmailadmin: per la gestione autonoma da parte del cliente del proprio dominio
- IsoQlog: per visualizzare le statistiche di utilizzo del server mail per dominio, giorno, mese etc…
- MrtgMailserver: generazione grafici MRTG relativi alla posta elettronica
- Vqadmin: Gestione riservata ai sistemisti/tecnici per la creazione dei “pacchetti” email e dei domini che per cui il server gestisce la posta

NOTA SULLA SICUREZZA

Essendo più pacchetti installati esternamente è consigliatissimo disabilitare da yum (per esempio su Centos) l’aggiornamento automatico di pacchetti come qmail, clam, spamassassin e tenere aggiornati gli RPM direttamente dal sito web http://www.qmailtoaster.com

Sperando di avervi dato utili informazioni saluto tutti.

Maxgrante
info[AT]massimo-caselli[DOT]com