Apache Virtual Hosts memungkinkan Anda menjalankan lebih dari satu situs web pada satu mesin. Dengan Virtual Host, Anda dapat menentukan root dokumen situs (direktori yang berisi file situs web), membuat kebijakan keamanan terpisah untuk setiap situs, menggunakan sertifikat SSL yang berbeda, dan banyak lagi.
Artikel ini menjelaskan cara menyiapkan Apache Virtual Host di server Debian 10.
Prasyarat #
Pastikan Anda telah memenuhi persyaratan berikut sebelum melanjutkan dengan tutorial ini:
- Nama domain menunjuk ke IP server publik Anda.
- Apache terinstal di sistem CentOS Anda.
- Anda masuk sebagai root atau pengguna dengan hak istimewa sudo.
Buat Struktur Direktori #
Akar dokumen adalah direktori tempat file situs web untuk nama domain disimpan dan disajikan sebagai tanggapan atas permintaan. Akar dokumen dapat diatur ke lokasi mana pun yang Anda inginkan.
Kami akan menggunakan struktur direktori berikut:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
Setiap domain yang dihosting di server akan memiliki root dokumen yang disetel ke /var/www/<domain_name>/public_html
.
Mari kita mulai dengan membuat direktori root dokumen untuk domain pertama, example.com
:
sudo mkdir -p /var/www/example.com/public_html
Kami juga akan membuat index.html
file di dalam direktori root dokumen domain yang akan ditampilkan saat Anda mengunjungi domain di browser Anda.
Buka editor teks favorit Anda, buat file baru dan rekatkan yang berikut ke dalamnya:
/var/www/example.com/public_html/index.html<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
Karena perintah di atas dijalankan sebagai pengguna sudo, file dan direktori yang baru dibuat dimiliki oleh root. Untuk menghindari masalah izin, ubah kepemilikan direktori root dokumen domain dan semua file dalam direktori menjadi pengguna apache (www-data
) :
sudo chown -R www-data: /var/www/example.com
Buat Host Virtual #
Pada sistem Debian, file konfigurasi Apache Virtual Hosts terletak di /etc/apache2/sites-available
direktori dan dapat diaktifkan dengan membuat tautan simbolis ke /etc/apache2/sites-enabled
direktori, yang dibaca oleh Apache selama startup.
Buka editor teks pilihan Anda dan buat file konfigurasi Virtual Host dasar berikut:
/etc/apache2/sites-available/example.com.conf<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
ServerName
:Domain yang harus cocok untuk konfigurasi host virtual ini. Ini harus menjadi nama domain Anda.ServerAlias
:Semua domain atau subdomain lain yang juga cocok untuk host virtual ini, biasanyawww
subdomain.DocumentRoot
:Direktori tempat Apache akan melayani file domain.Options
:Direktif ini mengontrol fitur server mana yang tersedia di direktori tertentu.-Indexes
:Mencegah daftar direktori.FollowSymLinks
:Saat opsi ini diaktifkan, Apache akan mengikuti tautan simbolis.
AllowOverride
:Menentukan arahan mana yang dideklarasikan dalam.htaccess
file dapat menimpa arahan konfigurasi.ErrorLog
,CustomLog
:Menentukan lokasi untuk file log.
Edit file sesuai kebutuhan Anda dan simpan.
Anda dapat memberi nama file konfigurasi sesuka Anda. Praktik terbaik adalah menggunakan nama domain sebagai nama file konfigurasi host virtual.
Untuk mengaktifkan file host virtual baru, gunakan a2ensite
skrip pembantu yang membuat tautan simbolis dari file host virtual ke sites-enabled
direktori:
sudo a2ensite example.com
Opsi lainnya adalah membuat symlink secara manual seperti yang ditunjukkan di bawah ini:
sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/
Setelah konfigurasi diaktifkan, uji apakah sintaksnya benar:
sudo apachectl configtest
Jika tidak ada kesalahan, Anda akan melihat output berikut:
Syntax OK
Mulai ulang apache2
layanan agar perubahan diterapkan:
sudo systemctl restart apache2
Untuk memverifikasi bahwa semuanya berfungsi seperti yang diharapkan, buka http://example.com
di browser favorit Anda, dan Anda akan melihat sesuatu seperti ini: