15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
30.10.2024
1 +1

Sites-Enabled și Sites-Available: Ghid Complet pentru NGINX și Apache

NGINX și Apache rămân cele două servere web cele mai dominante pe internet — și din bună dreptate. Ambele sunt testate în luptă, extrem de configurabile și capabile să servească site-uri complexe și cu trafic ridicat cu ușurință. Unul dintre conceptele cele mai importante pentru orice administrator de sistem care gestionează un server bazat pe Linux este înțelegerea modului în care aceste servere web gestionează configurația site-urilor prin structura directoarelor sites-available și sites-enabled.

Indiferent dacă rulezi un singur site sau gestionezi zeci de gazde virtuale pe un plan VPS Hosting, stăpânirea acestui model de configurare îți va oferi control precis asupra site-urilor active, celor în fază de testare și asupra modului în care sunt alocate resursele serverului.

Acest ghid oferă o prezentare cuprinzătoare, pas cu pas, a modului în care se activează, dezactivează și gestionează site-urile folosind atât NGINX cât și Apache pe sisteme Linux.

Înțelegerea sites-available și sites-enabled

Atât NGINX cât și Apache folosesc un model cu două directoare pentru a separa configurația site-ului de activarea site-ului. Acest model arhitectural este elegant în simplitatea sa și extrem de puternic în practică.

sites-available

Directorul /etc/nginx/sites-available/ sau /etc/apache2/sites-available/ acționează ca o bibliotecă a tuturor configurațiilor de site posibile. Fiecare site web pe care intenționezi să-l găzduiești pe server primește propriul fișier de configurare stocat aici. Crucial, fișierele din acest director nu sunt active — definesc configurația dar nu servesc niciun trafic până când nu sunt activate în mod explicit.

sites-enabled

Directorul /etc/nginx/sites-enabled/ sau /etc/apache2/sites-enabled/ conține link-uri simbolice care indică fișierele de configurare din sites-available. Doar site-urile cu un symlink activ în acest director sunt încărcate de serverul web și servite vizitatorilor.

Această separare oferă mai multe avantaje cheie:

  • Dezactivare non-distructivă: Poți dezactiva un site fără a-i șterge configurația.
  • Implementare rapidă: Pregătirea unui site nou este la fel de simplă ca crearea unui symlink.
  • Organizare curată: Toate configurațiile există într-un singur loc, indiferent dacă sunt active.

Gestionarea Site-urilor cu Apache

1. Configurația Apache Virtual Hosts

Apache folosește Virtual Hosts pentru a servi mai multe site-uri web dintr-o singură instanță de server. Fiecare site web primește propriul fișier de configurare care spune Apache cum să gestioneze cererile primite pentru acel domeniu — inclusiv rădăcina documentului, căile de jurnal, alias-urile serverului și altele.

Fișierele de configurare pentru gazde virtuale Apache sunt stocate în:

/etc/apache2/sites-available/

#### Crearea unui fișier de configurare Virtual Host

Pentru a crea un fișier de configurare pentru un site numit test.oo.md, rulează:

sudo nano /etc/apache2/sites-available/test.oo.md.conf

În fișier, definește blocul tău de gazdă virtuală:

<VirtualHost *:80>
    ServerAdmin admin@test.oo.md
    ServerName your_domain_or_IP
    ServerAlias www.test.oo.md
    DocumentRoot /var/www/test.oo.md

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

> Notă: Înlocuiește your_domain_or_IP cu numele tău de domeniu real sau adresa IP a serverului. Directiva ServerAlias permite Apache să răspundă și la subdomeniul www.

Salvează și ieși din fișier când ai terminat.

2. Activează site-ul cu a2ensite

Odată ce fișierul de configurare este la locul lui, activează site-ul folosind comanda a2ensite (Apache 2 Enable Site):

sudo a2ensite test.oo.md.conf

Această comandă creează automat un link simbolic din sites-available la sites-enabled:

/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.conf

Site-ul este acum pregătit să fie servit, dar schimbările nu vor intra în vigoare până când Apache nu este reîncărcat.

3. Testează configurația Apache

Înainte de a reîncărca Apache, validează întotdeauna sintaxa configurației pentru a detecta orice erori:

sudo apachectl configtest

O ieșire reușită va arăta:

Syntax OK

Dacă sunt erori, Apache va descrie problema și numărul liniei — corectează acestea înainte de a continua.

4. Reîncarcă Apache pentru a aplica modificările

sudo systemctl reload apache2

Folosirea reload în loc de restart este preferată în mediile de producție deoarece aplică noua configurație fără a întrerupe conexiunile active.

5. Dezactivează un site cu a2dissite

Pentru a scoate un site offline fără a-i șterge configurația, folosește comanda a2dissite:

sudo a2dissite test.oo.md.conf

Aceasta elimină link-ul simbolic din sites-enabled. Fișierul de configurare din sites-available rămâne neatins. Reîncarcă Apache pentru a aplica:

sudo systemctl reload apache2

Gestionarea Site-urilor cu NGINX

1. Configurația NGINX Server Block

NGINX folosește Server Blocks — echivalentul funcțional al Virtual Hosts-urilor Apache. Fișierele de configurare ale blocului de server sunt stocate în:

/etc/nginx/sites-available/

#### Crearea unui fișier de configurare Server Block

Pentru a crea un fișier de configurare pentru test.oo.md, rulează:

sudo nano /etc/nginx/sites-available/test.oo.md

Definește blocul tău de server în fișier:

server {
    listen 80;
    server_name test.oo.md www.test.oo.md;

    root /var/www/test.oo.md;
    index index.html index.htm;

    access_log /var/log/nginx/test.oo.md_access.log;
    error_log  /var/log/nginx/test.oo.md_error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

> Directive cheie explicate:

> – listen 80 — Instruiește NGINX să asculte traficul HTTP pe portul 80.

> – server_name — Definește care nume de domeniu răspunde acest bloc.

> – root — Stabilește directorul rădăcină al documentului pentru fișierele site-ului.

> – try_files — Încearcă să servească fișierul sau directorul solicitat; returnează 404 dacă nu este găsit.

Spre deosebire de Apache, NGINX nu oferă o comandă încorporată cum ar fi a2ensite. În schimb, creezi manual link-ul simbolic:

sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/

Aceasta leagă fișierul de configurare în directorul sites-enabled, făcând-ul eligibil să fie încărcat de NGINX.

3. Testează configurația NGINX

Testează întotdeauna configurația NGINX înainte de a reîncărca:

sudo nginx -t

Un test reușit returnează:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Dacă sunt raportate erori, revizuiește liniile indicate în fișierul tău de configurare și corectează-le înainte de a continua.

4. Reîncarcă NGINX pentru a aplica modificările

sudo systemctl reload nginx

Ca și cu Apache, reload aplică cu ușurință modificările de configurare fără a întrerupe conexiunile active — întotdeauna preferabil unui restart complet restart în mediile live.

5. Dezactivează un site în NGINX

Pentru a dezactiva un site, elimină link-ul simbolic din directorul sites-enabled:

sudo rm /etc/nginx/sites-enabled/test.oo.md

Apoi reîncarcă NGINX pentru a aplica schimbarea:

sudo systemctl reload nginx

Fișierul de configurare din sites-available este păstrat și poate fi reactivat oricând.

Referință rapidă: Gestionarea site-urilor Apache vs. NGINX

SarcinăComanda ApacheComanda NGINX
Crează fișier confignano /etc/apache2/sites-available/site.confnano /etc/nginx/sites-available/site
Activează sitesudo a2ensite site.confsudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
Testează configurațiasudo apachectl configtestsudo nginx -t
Reîncarcă serverul websudo systemctl reload apache2sudo systemctl reload nginx
Dezactivează sitesudo a2dissite site.confsudo rm /etc/nginx/sites-enabled/site

Bune practici pentru gestionarea site-urilor cu NGINX și Apache

1. Un fișier de configurare pe site

Creează întotdeauna un fișier de configurare dedicat pentru fiecare domeniu sau subdomeniu în directorul sites-available. Amestecarea mai multor site-uri într-un singur fișier creează dureri de cap în mentenanță și face depanarea semnificativ mai dificilă.

2. Testează întotdeauna înainte de a reîncărca

Fă-ți o obicei de neîncălcat să rulezi apachectl configtest sau nginx -t înainte de fiecare reîncărcare. O eroare de sintaxă într-un fișier de configurare poate duce la căderea tuturor site-urilor de pe server — nu doar a celui pe care-l editezi.

3. Folosește controlul versiunilor pentru fișierele de configurare

Pentru servere care găzduiesc mai multe site-uri sau configurații complexe, urmărește fișierele tale de configurare cu Git:

cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"

Aceasta îți oferă un istoric complet al modificărilor și capacitatea de a reveni instant la o stare cunoscută și bună.

4. Aplică întotdeauna HTTPS cu certificate SSL

Servirea site-urilor peste HTTP simplu nu mai este acceptabilă. Configurează Certificate SSL pentru fiecare site pe care-l gestionezi. Let’s Encrypt oferă certificate gratuite, cu reînnoire automată și se integrează perfect cu Apache (prin mod_ssl și Certbot) și NGINX.

După obținerea unui certificat, actualizează blocul tău de server sau gazda virtuală pentru a asculta pe portul 443 și redirecționează tot traficul HTTP la HTTPS.

5. Configurează jurnalizare cuprinzătoare

Definește întotdeauna directivele access_log și error_log pentru fiecare site. Jurnalele sunt prima ta linie de apărare atunci când diagnostichezi probleme, investighezi incidente de securitate sau analizezi modele de trafic. Stochează jurnalele în fișiere specifice site-ului în loc să te bazezi pe jurnalul global implicit.

6. Folosește denumiri de fișiere descriptive și consistente

Numește fișierele tale de configurare după domeniul pe care-l servesc (de ex., example.com.conf pentru Apache, example.com pentru NGINX). Aceasta face imediat evident care fișier corespunde cu care site atunci când gestionezi un server cu multe gazde virtuale.

Alegerea mediului de găzduire potrivit

Tehnicile de configurare acoperite în acest ghid se aplică indiferent de configurația ta de găzduire, dar alegerea mediului tău de server afectează semnificativ performanța și flexibilitatea.

  • Shared Web Hosting — Ideal pentru începători sau site-uri mici unde configurația serverului este gestionată pentru tine. NGINX sau Apache este pre-configurat și interacționezi cu site-urile printr-un panou de control.
  • VPS Hosting — Punctul dulce pentru dezvoltatori și administratori de sistem care au nevoie de acces root complet pentru a configura NGINX sau Apache exact așa cum este descris în acest ghid. Ai control complet asupra sites-available, sites-enabled și fiecărui alt aspect al serverului.
  • Dedicated Servers — Cel mai bun pentru site-uri cu trafic ridicat sau aplicații care necesită performanță maximă și izolare. Gestionezi întregul server, inclusiv configurația serverului web, fără partajare de resurse.
  • VPS with cPanel — Combină puterea unui VPS cu un panou de control grafic, făcând g
15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți