Apache: instalacija i virtuelni hostovi
Instalacija Apache-a na VPS, podešavanje virtuelnih hostova i modula i rešavanje čestih konflikata sa Nginx-om na portu 80.
Ažurirano 23. avgust 2026.
Apache biraš kada ti treba .htaccess, stari CMS ili gotov vodič od developera aplikacije. Troši više memorije od Nginx-a, ali na VDS-1 sa jednim malim sajtom to nećeš primetiti.
Instalacija
apt update && apt install -y apache2 # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd # AlmaLinux, CentOS Stream
Naziv servisa se razlikuje: apache2 na Debianu i Ubuntu, httpd u RHEL familiji. I direktorijumi konfiguracije su drugačiji — /etc/apache2 i /etc/httpd.
Provera:
systemctl status apache2
curl -I http://127.0.0.1
Virtuelni host
Fajl /etc/apache2/sites-available/example.ru.conf:
<VirtualHost *:80>
ServerName example.ru
ServerAlias www.example.ru
DocumentRoot /var/www/example.ru
<Directory /var/www/example.ru>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.ru-error.log
CustomLog ${APACHE_LOG_DIR}/example.ru-access.log combined
</VirtualHost>
Uključivanje i provera:
a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2
AllowOverride All je potreban samo ako zaista koristiš .htaccess. Ako ne, postavi None: Apache će prestati da traži te fajlove u svakom direktorijumu pri svakom zahtevu.
Moduli
a2enmod rewrite headers ssl
systemctl restart apache2
Da vidiš šta je uključeno — apache2ctl -M. Ne uključuj sve: svaki modul se učitava u svaki worker proces.
Za PHP koristi PHP-FPM umesto zastarelog mod_php: PHP-FPM.
Apache i Nginx zajedno
Oba servera podrazumevano slušaju na portu 80, pa drugi jednostavno neće startovati i prijaviće Address already in use. Imaš dve opcije:
- zadrži samo jedan server;
- stavi Nginx ispred, prebaci Apache na
Listen 127.0.0.1:8080i prosleđuj mu zahteve — vidi reverse proxy.
Da vidiš šta koristi port:
ss -tulpn | grep :80
Česte greške
| Simptom | Uzrok |
|---|---|
AH00558: Could not reliably determine ... server's fully qualified domain name | ServerName nije postavljen — to je upozorenje, ali ga ipak postavi |
.htaccess ne radi | AllowOverride None u Directory bloku |
| Servis neće da startuje posle izmene | Sintaksa — uvek pokreni apachectl configtest pre reload-a |
| 403 na direktorijumu | Nedostaje Require all granted ili www-data nema dozvole |
Logovi: /var/log/apache2/ (Debian, Ubuntu) ili /var/log/httpd/ (AlmaLinux).
Kopiraj konfiguraciju pre svake izmene:
cp file file.bak. Na virtuelnoj mašini je vraćanje lakše nego pokušavanje da se setiš šta si menjao pre sat vremena.