Apache: inštalácia a virtuálne hosty
Inštalácia Apache na VPS, konfigurácia virtuálnych hostov a modulov a riešenie bežných konfliktov s Nginx na porte 80.
Aktualizované 23. augusta 2026
Apache zvolíš vtedy, keď potrebuješ .htaccess, starý CMS alebo hotový návod od vývojára aplikácie. Je náročnejší na pamäť než Nginx, ale na VDS-1 s jednou malou stránkou to nepocítiš.
Inštalácia
apt update && apt install -y apache2 # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd # AlmaLinux, CentOS Stream
Názov služby sa líši: apache2 na Debiane a Ubuntu, httpd v rodine RHEL. Odlišné sú aj adresáre s konfiguráciou — /etc/apache2 a /etc/httpd.
Overenie:
systemctl status apache2
curl -I http://127.0.0.1
Virtuálny host
Súbor /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>
Zapnutie a kontrola:
a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2
AllowOverride All potrebuješ len vtedy, ak .htaccess naozaj používaš. Ak nie, nastav None: Apache prestane tieto súbory hľadať v každom adresári pri každej požiadavke.
Moduly
a2enmod rewrite headers ssl
systemctl restart apache2
Zoznam zapnutých zobrazíš cez apache2ctl -M. Nezapínaj všetko: každý modul sa načítava do každého pracovného procesu.
Pre PHP použi PHP-FPM namiesto zastaraného mod_php: PHP-FPM.
Apache a Nginx spolu
Oba servery štandardne počúvajú na porte 80, takže druhý jednoducho nenastartuje a vyhodí Address already in use. Máš dve možnosti:
- ponechať len jeden server;
- postaviť pred Apache Nginx, prepnúť Apache na
Listen 127.0.0.1:8080a proxovať naň — pozri reverse proxy.
Čo port využíva, zistíš takto:
ss -tulpn | grep :80
Časté chyby
| Príznak | Príčina |
|---|---|
AH00558: Could not reliably determine ... server's fully qualified domain name | ServerName nie je nastavené — je to len upozornenie, ale aj tak ho nastav |
.htaccess nefunguje | AllowOverride None v bloku Directory |
| Služba po úprave nenastartuje | Syntax — pred reloadom vždy spusti apachectl configtest |
| 403 na adresári | Chýba Require all granted alebo www-data nemá oprávnenia |
Logy: /var/log/apache2/ (Debian, Ubuntu) alebo /var/log/httpd/ (AlmaLinux).
Pred každou úpravou si skopíruj konfiguráciu:
cp file file.bak. Na virtuálnom stroji je návrat späť jednoduchší než spomínať, čo si pred hodinou zmenil.