Apache: instalasi dan virtual host
Memasang Apache di VPS, mengonfigurasi virtual host dan modul, serta memecahkan konflik umum dengan Nginx di port 80.
Diperbarui 23 Agustus 2026
Pilih Apache jika Anda memerlukan .htaccess, CMS lama, atau panduan siap pakai dari pengembang aplikasi. Apache lebih berat dalam penggunaan memori dibandingkan Nginx, tetapi pada VDS-1 dengan satu situs kecil Anda tidak akan merasakannya.
Instalasi
apt update && apt install -y apache2 # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd # AlmaLinux, CentOS Stream
Nama layanannya berbeda: apache2 di Debian dan Ubuntu, httpd di keluarga RHEL. Direktori konfigurasinya juga berbeda — /etc/apache2 dan /etc/httpd.
Periksa:
systemctl status apache2
curl -I http://127.0.0.1
Virtual host
File /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>
Mengaktifkan dan memeriksa:
a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2
AllowOverride All hanya diperlukan jika Anda benar-benar menggunakan .htaccess. Jika tidak, atur ke None: Apache akan berhenti mencari file tersebut di setiap direktori pada setiap permintaan.
Modul
a2enmod rewrite headers ssl
systemctl restart apache2
Untuk melihat daftar yang aktif — apache2ctl -M. Jangan aktifkan semuanya: setiap modul dimuat ke setiap proses worker.
Untuk PHP, gunakan PHP-FPM alih-alih mod_php yang sudah usang: PHP-FPM.
Apache dan Nginx bersamaan
Kedua server mendengarkan pada port 80 secara default, sehingga server kedua tidak akan menyala dan akan memunculkan Address already in use. Anda punya dua pilihan:
- pertahankan hanya satu server;
- letakkan Nginx di depan, ubah Apache ke
Listen 127.0.0.1:8080, lalu proxy ke sana — lihat reverse proxy.
Untuk melihat apa yang menggunakan port tersebut:
ss -tulpn | grep :80
Kesalahan umum
| Gejala | Penyebab |
|---|---|
AH00558: Could not reliably determine ... server's fully qualified domain name | ServerName belum diatur — ini hanya peringatan, tetapi tetap atur saja |
.htaccess tidak berfungsi | AllowOverride None di blok Directory |
| Layanan tidak menyala setelah diedit | Sintaks — selalu jalankan apachectl configtest sebelum reload |
| 403 pada direktori | Require all granted tidak ada atau www-data tidak memiliki izin |
Log: /var/log/apache2/ (Debian, Ubuntu) atau /var/log/httpd/ (AlmaLinux).
Salin konfigurasi sebelum setiap edit:
cp file file.bak. Pada mesin virtual, mengembalikan lebih mudah daripada mencoba mengingat apa yang Anda ubah satu jam lalu.