// Blog

Cum instalezi și configurezi Apache2 cu Virtual Hosts pe un VPS Linux: ghid complet

04 octombrie 2026 · by Alex M.

Cum instalezi și configurezi Apache2 cu Virtual Hosts pe un VPS Linux: ghid complet

Apache2 este unul dintre cele mai populare și mature servere web din lume, cu o cotă de piață semnificativă și o comunitate uriașă. Dacă ai un VPS NVMe și vrei să găzduiești mai multe site-uri pe același server, funcționalitatea Virtual Hosts din Apache2 este soluția perfectă. Acest ghid îți arată pas cu pas cum să instalezi, configurezi și securizezi Apache2 pe Ubuntu 22.04.

Ce sunt Virtual Hosts și de ce ai nevoie de ele?

Virtual Hosts (gazde virtuale) îți permit să rulezi mai multe site-uri web pe același server și aceeași adresă IP, fiecare cu propriul domeniu, configurație și directoare de fișiere. De exemplu, pe un singur VPS SSD poți găzdui simultan site1.md, site2.md și blog.site3.com fără costuri suplimentare de infrastructură.

Există două tipuri principale:

  • Name-based Virtual Hosts – diferențierea se face pe baza numelui de domeniu (cel mai frecvent)
  • IP-based Virtual Hosts – fiecare site are propria adresă IP

În acest ghid ne concentrăm pe name-based virtual hosts, care funcționează perfect pentru majoritatea scenariilor de producție.

Cerințe preliminare

Înainte de a începe, asigură-te că ai:

  • Un VPS cu Ubuntu 22.04 (sau Debian 11/12)
  • Acces root sau utilizator cu privilegii sudo
  • Cel puțin un domeniu înregistrat, cu DNS-ul îndreptat spre IP-ul serverului
  • Conexiune SSH activă

Dacă nu ai încă un server, poți porni rapid cu un VPS NVMe de la CLIQHOST, gata de utilizare în câteva minute.

Pasul 1: Actualizarea sistemului și instalarea Apache2

Conectează-te la server prin SSH și actualizează lista de pachete:

sudo apt update && sudo apt upgrade -y

Instalează Apache2:

sudo apt install apache2 -y

Verifică statusul serviciului:

sudo systemctl status apache2

Dacă totul e în regulă, vei vedea active (running). Activează Apache2 să pornească automat la repornirea serverului:

sudo systemctl enable apache2

Configurarea firewall-ului (UFW)

Dacă folosești UFW, permite traficul HTTP și HTTPS:

sudo ufw allow 'Apache Full'
sudo ufw status

Acum, dacă accesezi IP-ul serverului în browser, ar trebui să vezi pagina implicită Apache2.

Pasul 2: Structura directoarelor pentru Virtual Hosts

Convențional, fiecare site are propriul director în /var/www/. Creăm structura pentru două site-uri demo:

sudo mkdir -p /var/www/site1.md/public_html
sudo mkdir -p /var/www/site2.md/public_html

Atribuie ownership utilizatorului curent (înlocuiește utilizator cu username-ul tău real):

sudo chown -R $USER:$USER /var/www/site1.md/public_html
sudo chown -R $USER:$USER /var/www/site2.md/public_html

Setează permisiunile corecte:

sudo chmod -R 755 /var/www/site1.md
sudo chmod -R 755 /var/www/site2.md

Creează pagini HTML de test:

nano /var/www/site1.md/public_html/index.html

Conținut exemplu:

<!DOCTYPE html>
<html lang="ro">
<head>
  <meta charset="UTF-8">
  <title>Site1.md</title>
</head>
<body>
  <h1>Bun venit pe site1.md!</h1>
  <p>Apache2 Virtual Host funcționează corect.</p>
</body>
</html>

Repetă pentru site2.md.

Pasul 3: Crearea fișierelor de configurare Virtual Host

Apache2 stochează configurațiile site-urilor în /etc/apache2/sites-available/. Există un fișier implicit 000-default.conf pe care îl putem folosi ca model.

Creează configurația pentru primul site:

sudo nano /etc/apache2/sites-available/site1.md.conf

Conținut complet:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName site1.md
    ServerAlias www.site1.md
    DocumentRoot /var/www/site1.md/public_html

    <Directory /var/www/site1.md/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

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

Creează configurația pentru al doilea site:

sudo nano /etc/apache2/sites-available/site2.md.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName site2.md
    ServerAlias www.site2.md
    DocumentRoot /var/www/site2.md/public_html

    <Directory /var/www/site2.md/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

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

Activarea Virtual Hosts

Activează site-urile noi și dezactivează site-ul implicit (opțional):

sudo a2ensite site1.md.conf
sudo a2ensite site2.md.conf
sudo a2dissite 000-default.conf

Verifică sintaxa configurației:

sudo apache2ctl configtest

Ar trebui să primești Syntax OK. Reîncarcă Apache2:

sudo systemctl reload apache2

Pasul 4: Activarea modulelor esențiale Apache2

Apache2 vine cu un set bogat de module. Iată cele mai utile pentru un server de producție:

# Modul pentru rewrite URL (necesar pentru WordPress, Joomla etc.)
sudo a2enmod rewrite

# Modul pentru compresie GZIP
sudo a2enmod deflate

# Modul pentru headere HTTP (securitate)
sudo a2enmod headers

# Modul pentru cache
sudo a2enmod cache cache_disk

sudo systemctl restart apache2

De ce contează modulul rewrite?

Fără mod_rewrite, permalink-urile WordPress, regulile .htaccess și URL-urile prietenoase cu SEO nu vor funcționa. Directiva AllowOverride All din configurația Virtual Host permite Apache2 să citească fișierele .htaccess din directorul site-ului.

Pasul 5: Securizarea Apache2

Un server web expus pe internet trebuie hardened. Iată configurările esențiale.

Ascunde versiunea Apache2

Editează fișierul principal de securitate:

sudo nano /etc/apache2/conf-available/security.conf

Setează:

ServerTokens Prod
ServerSignature Off
TraceEnable Off

Dezactivează listarea directoarelor

Dacă un director nu are index.html sau index.php, Apache2 poate afișa conținutul directorului — o breșă de securitate. Asigură-te că în configurația Virtual Host ai:

Options -Indexes

Adaugă headere de securitate HTTP

În fișierul Virtual Host sau într-un fișier .htaccess:

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

Limitează metodele HTTP permise

<LimitExcept GET POST HEAD>
    deny from all
</LimitExcept>

Pentru securitate avansată a serverului, serviciul nostru de administrare servere poate gestiona configurarea și monitorizarea completă.

Pasul 6: Instalarea SSL cu Let's Encrypt (HTTPS)

Orice site modern trebuie să ruleze pe HTTPS. Instalează Certbot:

sudo apt install certbot python3-certbot-apache -y

Obtine certificat SSL gratuit:

sudo certbot --apache -d site1.md -d www.site1.md

Certbot va modifica automat fișierul Virtual Host și va adăuga redirecționarea HTTP → HTTPS. Verifică reînnoirea automată:

sudo certbot renew --dry-run

Dacă preferi un certificat SSL comercial cu validare organizațională (OV) sau extended (EV), CLIQHOST oferă o gamă completă de certificate.

Pasul 7: Optimizarea performanței Apache2

Configurarea MPM (Multi-Processing Module)

Apache2 suportă trei module MPM: prefork, worker și event. Pentru performanță maximă cu PHP-FPM, folosește event:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

Activarea compresiei GZIP

Adaugă în configurația Virtual Host sau în .htaccess:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/plain text/html text/css
    AddOutputFilterByType DEFLATE application/javascript application/json
    AddOutputFilterByType DEFLATE image/svg+xml application/xml
</IfModule>

Caching pentru conținut static

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Pasul 8: Gestionarea logurilor

Logurile sunt esențiale pentru depanare și monitorizare. Fiecare Virtual Host are propriile fișiere de log definite:

# Vizualizare log erori în timp real
sudo tail -f /var/log/apache2/site1.md-error.log

# Vizualizare log acces
sudo tail -f /var/log/apache2/site1.md-access.log

Pentru a gestiona rotația automată a logurilor, Apache2 folosește logrotate. Fișierul de configurare se află la /etc/logrotate.d/apache2.

Comenzi esențiale Apache2 — referință rapidă

Comandă Descriere
sudo systemctl start apache2 Pornește serviciul
sudo systemctl stop apache2 Oprește serviciul
sudo systemctl restart apache2 Repornește complet
sudo systemctl reload apache2 Reîncarcă config fără downtime
sudo a2ensite nume.conf Activează un Virtual Host
sudo a2dissite nume.conf Dezactivează un Virtual Host
sudo a2enmod modul Activează un modul
sudo a2dismod modul Dezactivează un modul
sudo apache2ctl configtest Verifică sintaxa configurației
sudo apache2ctl -M Listează modulele active

Depanare frecventă

Eroarea 403 Forbidden

Cauze comune: permisiuni greșite pe directoare, Options -Indexes fără index.html, sau AllowOverride None în loc de All. Verifică:

ls -la /var/www/site1.md/public_html
sudo apache2ctl configtest

Eroarea 404 Not Found

Verifică dacă ServerName și ServerAlias sunt setate corect și dacă DNS-ul domeniu pointează spre IP-ul serverului.

Apache2 nu pornește

Uitați-vă la loguri:

sudo journalctl -xe | grep apache2
sudo tail -50 /var/log/apache2/error.log

Portul 80 ocupat

sudo ss -tlnp | grep :80

Dacă Nginx rulează deja pe port 80, trebuie să oprești unul dintre servicii sau să configurezi Apache2 pe alt port.

Concluzie

Apache2 cu Virtual Hosts este o soluție robustă și flexibilă pentru găzduirea mai multor site-uri pe un singur server. Ai parcurs instalarea, configurarea Virtual Hosts, activarea modulelor esențiale, securizarea serverului, instalarea SSL și optimizarea performanței.

Dacă ai nevoie de o platformă stabilă pe care să rulezi această configurație, explorează ofertele noastre de VPS NVMe și servere dedicate — performanță garantată, suport tehnic 24/7 și infrastructură modernă în Moldova și Europa.

Ai întrebări sau ai nevoie de ajutor cu configurarea serverului? Contactează echipa CLIQHOST sau descoperă mai multe ghiduri tehnice pe blogul nostru.

SHARE
// what clients say

What Our Clients Say

Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău