Skip to content
VDS · Situs web dan server web

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

GejalaPenyebab
AH00558: Could not reliably determine ... server's fully qualified domain nameServerName belum diatur — ini hanya peringatan, tetapi tetap atur saja
.htaccess tidak berfungsiAllowOverride None di blok Directory
Layanan tidak menyala setelah dieditSintaks — selalu jalankan apachectl configtest sebelum reload
403 pada direktoriRequire 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.