Administrare server open source

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

Daca avem nevoie de un server web care sa serveasca paginile unui site il putem pune repede pe picioare dupa ce am instalat sistemul de operare urmand un tutorial creat pentru sistemul de operare sau distributia care ne intereseaza – ex. FreeBSD, Ubuntu sau CentOS. Dupa instalare treaba e destul de directa. Accesam http://localhost/ si putem vedea pagina care ne intereseaza sau modificam adresa IP la care serverul Apache asculta cereri pentru a accesa siteul folosind un IP routabil.

In majoritatea cazurilor, avand in vedere ca orice sistem desktop poate fi transformat intr-un server web decent, ne intereseaza sa gazduim mai multe siteuri pe acelasi calculator. Pentru a face asta serverul Apache ne pune la dispozitie posibilitatea de a crea hosturi virtuale, VirtualHosts, o metoda prin care ii spunem serverului web ce pagina sa serveasca in functie de cerere. VirtualHosts se poate face pe baza de adresa IP sau pe baza de nume. IP Based VirtualHosts, adica hosturile virtuale bazate pe adresa IP, nu sunt folosite decat foarte rar datorita risipei de adrese IP. E nevoie de cate o adresa IP diferite pentru fiecare domeniu sau subdomeniu gazduit pe server. De obicei se foloseste NameBased VirtualHosts, adica hosturi virtuale bazate pe nume. Cu NameBased VirtualHosts putem gazdui pe aceeasi adresa IP mai multe domenii sau subdomenii fara ca vizitatorul sa stie asta si implicit fara a exista posibilitatea ca ceva sa il deranjeze in timpul navigarii.

Pentru adaugarea unui VirtualHosts care sa raspunda la un alt nume de host decat cel asociat masinii pe care ruleaza serverul web trebuie sa modificam fisierul httpd.conf si sa adaugam urmatoarele linii:

<virtualhost 1.2.3.4:80>
    ServerName exemplu.ro
    ServerAlias www.exemplu.ro
    DocumentRoot /home/exemplu/public_html
    ErrorLog  /var/log/apache/exemplu.ro_error_log
</virtualhost>

In cazul de fata am adaugat domeniul exemplu.ro. Acum serverul web, care am presupus ca asculta conexiuni pe adresa IP 1.2.3.4, va afisa continutul din directorul /home/exemplu/public_html cand va primi o cerere pentru o resursa din cadrul siteului exemplu.ro si asta pentru ca browserele, conform protocolului HTTP, atunci cand trimit o cerere trimit si un header cu numele Host cu ajutorul caruia serverul web identifica resursa ceruta.

Bazandu-ne pe codul introdus mai sus putem deduce ca resursa va fi valabila doar daca cererea de conexiune vine pe adresa IP specificata in cadrul directivei VirtualHost. Trebuie sa fiti atenti cand adaugati un VirtualHost sa adaugati o adresa IP care este asociata serverului curent si care e specificata in zona DNS a domeniului pentru ca pointarea DNS sa se faca corect.

Tot din codul de mai sus putem deduce ca serverul va oferi resursa ceruta doar daca in cererea care o face vizitatorul e mentionat domeniul exemplu.ro (valoarea pentru ServerName) sau subdomeniul www.exemplu.ro care va oferi acelasi continut ca exemplu.ro pentru ca l-am definit ca adresa secundara pentru aceeasi resursa (ServerAlias).

Cu DocumentRoot ii spunem serverului web de unde sa ia informatia cand cererea vine pe IP-ul specificat in directiva VirtualHost pentru domeniul specificat in ServerName sau unul din subdomeniile sau domeniile secundare specificate in ServerAlias. In cazul nostru stim ca atunci cand vizitatorul intra pe http://exemplu.ro sau pe http://www.exemplu.ro el va primi informatia stocata pe server in directorul /home/exemplu/public_html, director specificat de directiva DocumentRoot.

Directiva ErrorLog nu e necesara pentru ca un VirtualHost sa functioneze corect dar e foarte utila cand facem debuging pentru ca toate erorile hostului mentionat in VirtualHost vor fi salvate in fisierul mentionat in directiva ErrorLog.

E important ca dupa orice modificare a fisierului httpd.conf sa rulati comanda „apachectl restart” pentru ca modificarile sa fie luate in considerare de serverul web. Optional, daca e vorba de un server in productie, puteti rula comanda „apachectl configtest” inainte de restart pentru a verifica sintaxa corecta a modificarilor facute evitand astfel downtimeul sau erorile care pot aparea.

De asemenea e bine sa creati anumite restrictii sau reguli generale pentru directorul public_html din cadrul directoarelor utilizatorilor pentru a nu fi necesara mentionarea restrictiilor in cadrul fiecarui VirtualHost. De exemplu, puteti adauga urmatoarele reguli inainte de definirea oricarui VirtualHost pentru a va asigura ca fiecare site are posibilitatea sa functioneze in parametri normali:

<directory /home/*/public_html>
    Options -Indexes -Includes -ExecCGI FollowSymLinks
    UseCanonicalName Off
    Allow from all
    AllowOverride All
</directory>
Apache

9 Responses so far.

  1. kufu says:

    Salut…

    Daca am un server cu IP xx.xx.xx.xx cum pot gazdui mai multe adrese web (ex: http://www.adresa1.ro, http://www.adresa2.ro, www2.adresa3.ro)?

    Multumesc!

  2. Sergiu Tot says:

    Adaugi un VirtualHost cum am aratat mai sus pentru fiecare domeniu in parte. Pe fiecare VirtualHost pui acelasi IP, dar ServerName si ServerAlias diferite, in functie de numele domeniului.

  3. kufu says:

    Am incercat asa numai ca in loc sa ma duca in directoare diferite (Folder1 pentru adresa1 si Folder2 pentru adresa2) ma ducea doar in Folder1 sau Folder2, in functie de care era primul scris… Vreo idee?

    Multumesc!

  4. kufu says:
  5. Sergiu Tot says:

    Nu prea inteleg. Posteaza cele doua VirtualHost-uri create.

  6. kufu says:

    La configuratia asta am ajuns dupa sfaturile celui de pe bytes.com. Configuratia initiala e prima din postul meu de acolo, bazata pe ce scria aici. In configuratia de mai jos, ma duce in directorul „www” si nu Folder1 sau Folder2 cum ar trebui.

    Folosesc Apache 2.2.11 (in pachetul WAMP) pe Windows XP.

    NameVirtualHost *:80

    ServerName adresa1.ro
    ServerAlias www3.adresa1.ro
    DocumentRoot „c:/wamp/www/Folder1”

    allow from all
    order allow,deny
    AllowOverride All

    DirectoryIndex index.html index.php

    ServerName adresa2.ro
    ServerAlias www2.adresa2.ro
    DocumentRoot „c:/wamp/www/Folder2”

    allow from all
    order allow,deny
    AllowOverride All

    Directory Index index.html index.php

    Include „C:/wamp/alias/*”

  7. Sergiu Tot says:

    Se pare ca WordPress a modificat mesajul tau si nu se intelege nimic. Copiaza inregistrarile pe http://paste.skullbox.info/ si apoi da-mi linkul.

  8. News says:

    as avea si eu nevoie de sfaturile tale in cateva din problemele mele de securitate la server. folosesc un server de la Hostgator si am cateva mici probleme cu flooderii , poti sa ma ajuti cumva ?

  9. Sergiu Tot says:

    Salut,

    Posteaza pe forum problema, spune-mi in ce fel este atacat serverul si vedem ce se poate face 🙂