Guida al mod_rewrite

July 19, 2007

Questa breve guida vi illustrerà in che modo il mod_rewrite viene incontro alle esigenze dei webmaster e come attivarlo in un webserver Apache2 configurato correttamente, qualora la procedura non dovesse risultare funzionante, prego volermi contattare tramite forum.

Iniziamo con il dire che il mod rewrite consente di generare link statici partendo da link dinamici php. Questa scelta non consentirà nessun vantaggio dal punto di vista delle performance di un sito web, ma darà il benvenuto agli spider dei motori di ricerca. Un indirizzo dinamico contenente parecchie opzioni potrebbe far cessare la visita dello spider al proprio sito con la conseguente indicizazzione parziale delle pagine del proprio sito.

Inoltre è importante sapere che uno spider non visualizza le immagini e funziona come il famoso browser testuale per linux “lynx”. Testare la navigabilità del proprio sito con lynx, vi aiuterà di certo a correggere evantuale codice non compatibile con lo stesso browser. Riassumendo, è fondamentale che il vostro sito contenga sempre link testuali che puntino ad indirizzi statici.

Questa guida pertanto si rende utile per coloro che utilizzano script in php per la gestione dei contenuti e che desiderano venisse indicizzato anche il contenuto del proprio forum.

I tools principali supportati da Apache2 via shell sono i seguenti:

a2ensite che permette l’abilitazione di virtualhost
a2dissite ne permette la disabilitazione
a2enmod che permette l’abilitazione dei moduli per Apache2
a2dismod ne permette la disabilitazione

Il tool che fa al caso nostro sarà a2enmod e quindi via shell digiteremo:

a2enmod mod_rewrite

Una volta abilitato, ci verrà chiesto di forzare il riavvio di Apache2 digitando:

/etc/init.d/apache2 force-reload

Il modulo risulterà attivo al completamento del riavvio di Apache2.
E’ indispensabile sapere che tale modulo per funzionare necessita un file .htaccess che abiliti l’utilizzo di tale funzione nel proprio sito. Oltre al codice da inserire nel file .htaccess:

RewriteEngine On
Options +FollowSymLinks
RewriteBase /

è necessario che lo script utilizzato sia configurato per sfruttare tale modulo. Inoltre, come spesso accade, navigando nel forum di supporto dello script scelto, troverete un file .htaccess preconfigurato per il funzionamento con lo script da voi installato.

Spero che questa breve guida sia di aiuto a tutti coloro che hanno riscontrato difficoltà con il posizionamento all’interno dei motori di ricerca.
Vi ricordo il forum di supporto qualora avete necessità di maggiori spiegazioni.

eAccelerator

La procedura di installazione che sto per trattare installerà eAccelerator nel vostro sistema Debian. Tale procedurà con i dovuti accorgimenti vi consentirà di installarlo anche in altri sistemi diversi da Debian.

Iniziamo con il download e l’installazione del pacchetto “php4-dev”

apt-get install php4-dev

Procediamo con il download e l’estrazione del sorgente di eAccelerator

wget http://internap.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.4.tar.bz2

tar jxvf eaccelerator-0.9.4.tar.bz2
cd eaccelerator-0.9.4

Avviamo il tool phpize che creerà le configurazioni iniziali richieste da make

/usr/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=/usr/bin/php-config
make
make install

Sarà inoltre necessario inserire il parametri nel file php.ini per il caricamento del modulo di accelerazione. Pertanto:

nano /etc/php4/apache2/php.ini

Ed aggiungere le seguenti linee:

extension=”eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=”"
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

Infine per il completamento dell’installazione, sarà necessario creare la cartella temporanea che viene utilizzata da eAccelerator per la cache e riavviare Apache.

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

/etc/init.d/apache2 reload

Qualora vogliamo esser certi che la nostra installazione sia andata a buon fine, sarà necessario creare un file php da richiamare tramite browser, che contenga il seguente codice:

<?php
eaccelerator();
?>

Complimenti, il vostro server gode dell’accelerazione PHP!!

Aumentare le prestazioni del php - Gli Acceleratori PHP

Questa breve guida non intende spiegarvi l’installazione dell’acceleratore per il php, dato che varie società hanno sviluppato diversi acceleratori e non sarebbe possibile generalizzare la procedura d’installazione.
I linguaggi di programmazione, come il php, perl, c++ ed altri, prevedono una compilazione prima di essere eseguiti. Poniamo l’esempio di un sorgente in c++, dove il codice deve essere verificato, compilato e succesivamente eseguito. Una volta creato il file eseguibile non è necessario ricompilare il codice sorgente. Simile è il codice php, dove prima di essere eseguito, viene verificata la sintassi del codice, compilato e infine eseguito. Diversamente dal c++, in php non viene generato un eseguibile che possa essere rieseguito altre volte evitando la compilazione, così ogni volta che richiamiamo tramite browser un file php, il server dovrà eseguire la procedura di compilazione. Il processo di compilazione richiede un quantitativo di RAM e CPU, e all’aumentare delle richieste, si noterà un rallentamento.

In nostro soccorso arrivano gli acceleratori, che non fanno altro che riservare una memoria di cache per il php, dove viene generato l’eseguibile del file php, evitando una successiva ricompilazione ed abbattendo i carichi di RAM e CPU.

Il nostro successivo compito, sarà quello di scegliere l’acceleratore più performante ed installarlo nel nostro server.
Nella sezione “Linux Tutorials”, sono presenti i principali software di accelerazione, con la relativa guida all’installazione.

Installazione Lighttpd su Debian Sarge 3.1

lighttpd.pngBreve Introduzione a Lighttpd

Lighttpd è un webserver proprio come Apache ma, le differenze tra i due sono davvero molte. Apache ha un consumo di RAM eccessivo rispetto a Lighttpd, con un conseguente decadimento delle prestazioni. Lighttpd però, difficilmente può andare a sostituire Apache in quanto quest’ultimo presenta un numero maggiore di moduli ed una compatibiltà elevata con la maggior parte delle applicazioni in PHP. Lighttpd per la sua elevata stabilità e velocità, viene utilizzato maggiormente per servire contenuti statici (pagine html). Per vari motivi, ne viene sconsigliato l’utilizzo per un servizio di Hosting Condiviso, ma l’utente che possiede una VPS con un quantitativo limitato di risorse, potrebbe preferire di configurarlo con il supporto del PHP in modalità fast-cgi per soddisfare le esigenze del proprio sito.
Installazione su Debian Sarge 3.1

Verificare l’installazione dei seguenti pacchetti:

apt-get install libpcre3
apt-get install zlib1g
apt-get install mysql-common libmysqlclient12

Scarichiamo il .deb pre-compilato di Lighttpd

cd /tmp

wget http://www.lighttpd.net/download/debian/sarge/lighttpd_1.4.3-1_i386.deb

Installiamo il .deb appena scaricato utilizzando dpkg

dpkg -i lighttpd_1.4.3-1_i386.deb

Le configurazioni di base di Lighttpd sono impostate in modo da ottenere la document root su /var/www/ e di servire le richieste attraverso la porta 80.
In caso volessimo cambiare queste semplici configurazioni:

nano /etc/lighttpd/lighttpd.conf

Per cambiare la Document Root:
server.document-root             = “/var/www/”

Per impostare la porta d’ascolto:
#server.port                = 81

Notare che la linea server.port è commentata con “#” e pertanto per fare in modo che le richieste vengano servite attraverso la porta 81, è necessario togliere il commento:
server.port                = 81

Per applicare le impostazioni sarà necessario riavviare Lighttpd:
/etc/init.d/lighttpd restart

Installare PHP4 in modalità Fast-CGI e caricare il modulo in Lighttpd

apt-get install php4-cgi

nano /etc/lighttpd/lighttpd.conf

Eliminare il commento “#” relativo al modulo che s’intende caricare. Nel nostro caso “mod_fastcgi”:

server.modules              = (
#                               “mod_rewrite”,
#                               “mod_redirect”,
“mod_access”,
#                               “mod_auth”,
#                               “mod_status”,
“mod_fastcgi”,
#                               “mod_simple_vhost”,
#                               “mod_evhost”,
#                               “mod_cgi”,
#                               “mod_compress”,
#                               “mod_ssi”,
#                               “mod_usertrack”,
#                               “mod_rrdtool”,
“mod_accesslog” )

Eliminare il commento nelle configurazioni relative al modulo precedentemente abilitato, in modo da ottenere:

#### fastcgi module
## read fastcgi.txt for more info
fastcgi.server              = ( “.php” =>
( “localhost” =>
(
“socket” => “/tmp/php-fastcgi.socket”,
“bin-path” => “/usr/local/bin/php”
)
)
)

Infine moficare la linea di configurazione “bin-path”, in modo da ottenere:
“bin-path” => “/usr/bin/php4-cgi”

Salvare le configurazioni e riavviare Lighttpd:
/etc/init.d/lighttpd restart

Per Verificare che l’installazione del PHP sia andata a buon fine:
nano /var/www/info.php
<?php
phpinfo();
?>

Salvare il file, e accedere alla pagina da un browser remoto.