Archivio per Febbraio, 2006
Come creare una piattaforma: WAMP: (Windows – Apache – MySQL – PHP)
Feb 21
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ù…
)
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
Feb 13
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… ![]()
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
Feb 10
Ciao a tutti,
oggi vorrei trattare e più che altro segnalare un fantastico prodotto Opensource basato interamente su Qmail.
La soluzione in questione è QMAILTOASTER – http://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
