Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Conform specificatiilor celor care au devenit autoritati in ceea ce priveste parsarea siteurilor web si a randarii paginilor, si ma refer in mod deosebit la Google si Yahoo, orice continut care se transfera dinspre server spre client trebuie sa aiba o dimensiune cat mai mica. In aceasta categorie intra si fisierele JavaScript si CSS externe care in cazul CMS-urilor publice pot sa ajunga la dimensiuni de cateva sute de KB din care peste 20% e spatiu ocupat de comentarii si spatiile albe folosite la formatare. Eliminand spatiile albe si comentariile, care sunt utile doar in debugging, putem micsora cantitatea de informatie transferata ceea ce duce la o incarcare mai rapida a siteului.

Varianta folosita cel mai des este modificarea fisierelor JavaScript si CSS pentru a se servi varianta micsorata. Asta se face cu addonul Page Speed sau cu diverse utilitare online. Dezavantajul e ca operatia trebuie facuta de fiecare data cand avem de facut o modificare, in caz contrar va trebui sa lucram direct pe codul micsorat ceea ce e un adevarat chin pentru ca fara formatare elementele sunt greu de identificat.

O alternativa la modificarea fisierelor putem obtine folosind un mic script Perl care sa parseze rezultatul si sa afiseze continutul micsorat. Pentru asta avem nevoie de:

  • suport CGI;
  • suport Perl;
  • modulele mod_mime, mod_alias pentru Apache;
  • modulele Perl JavaScript::Minifier si CSS::Minifier instalate in sistem;
  • acces la httpd.conf sau posibilitatea de a modifica parametri de functionare din .htaccess.

Exceptand cele doua module Perl, restul conditiilor sunt de obicei indeplinite in orice instalare implicita si chiar pe conturile de hosting in regim shared.

Pentru simplitate presupunem situatia cel mai des intalnita in care locatia binarului perl este „/usr/bin/perl” iar directorul CGI este „/cgi-bin/„.

In „/cgi-bin/” vom crea doua fisiere, „cssmin.pl” si „jsmin.pl” si le punem permisiuni 755 pentru a putea fi executate. Continutul fisierelor este urmatorul:

cssmin.pl

#!/usr/bin/perl
use CSS::Minifier qw(minify);
print "Content-type: text/css\r\n\r\n";
if( open(CSSF, '< ', $ENV{PATH_TRANSLATED}) ) {
    minify( input=>*CSSF, outfile=>*STDOUT );
    close(CSSF);
}
exit;

jsmin.pl

#!/usr/bin/perl
use JavaScript::Minifier qw(minify);
print "Content-type: text/javascript\r\n\r\n";
if( open(JSF, '< ', $ENV{PATH_TRANSLATED}) ) {
    minify( input=>*JSF, outfile=>*STDOUT );
    close(JSF);
}
exit;

Din „$ENV{PATH_TRANSLATED}” luam calea absoluta catre fisierul al carui continut urmeaza sa fie micsorat de functia „minify()„.

Acum ca am pregatit scripturile va trebui sa facem in asa fel incat cele doua scripturi sa fie rulate atunci cand se cere un fisier cu extensiile „.js” sau „.css„. Asta se face cu directivele „Action” si „AddHandler” plasate in fisierul „.htaccess„. Cu „Action” cream o actiune specificandu-i numele si calea relativa a scriptului care urmeaza sa fie rulat iar cu „AddHandler” ii spunem serverului Apache sa acceseze actiunea creata de fiecare data cand se cere un fisier cu extensia mentionata:

Action jsmin  /cgi-bin/jsmin.pl
AddHandler jsmin .js
 
Action cssmin /cgi-bin/cssmin.pl
AddHandler cssmin .css

Dupa ce salvam fisierul totul trebuie sa functioneze corect. Pentru un test putem deschide in browser un fisier de pe server care are una din extensiile mentionate. Ar trebui sa vedem o varianta modificata a fisierului, destul de greu de inteles datorita lipsei formatarii, dar considerabil mai mica decat cea reala care a ramas intacta.

Apache

3 Responses so far.

  1. George says:

    Am gasit articolul tau foarte interesant. Stiam de site-ul asta doar ca nu am intrat pana azi ca am crezut ca e pe parte hardware. Dar nu este asa.

    Cititorii mei vor fi si ei interesati probabil de el si de aceea il pun acolo la blogroll ca nu strica.

    George.

  2. Sergiu says:

    Salut,

    Merci de apreciere si link! De hardware nu ma ocup. Imi place mai mult partea de administrare 🙂

  3. George says:

    Da servere, hosting, administrare,etc. Nu prea ma pasioneaza subiectul. Las pe altii sa se ocupe 😛