Setelah Apache diinstal dan dijalankan, Anda dapat mengonfigurasinya untuk melayani beberapa domain dengan menggunakan host virtual .
Buat tata letak
Contoh ini menggunakan dua domain:domain1.com dan domain2.com.
-
Di direktori home Anda, buat folder public_html:
cd ~ mkdir public_html
-
Untuk setiap domain yang ingin Anda host, buat folder dengan kumpulan subfolder standar. Perintah berikut membuat folder publik, pribadi, log, cgi-bin, dan cadangan untuk domain1.com dan domain2.com:
mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup} mkdir -p public_html/domain2.com/{public,private,log,cgi-bin,backup}
Buat index.html
Konten folder publik terserah Anda, tetapi contoh ini menggunakan file HTML yang sangat sederhana sehingga Anda dapat memeriksa pekerjaan host virtual.
-
Untuk setiap domain, buat file index.html:
nano public_html/domain1.com/public/index.html
-
Tambahkan kode berikut ke file index.html:
<html> <head> <title>domain1.com</title> </head> <body> <h1>domain1.com</h1> </body> </html>
-
Ulangi proses tersebut sehingga Anda memiliki file serupa untuk domain2.com. Ganti semua instance
domain1.com
dengandomain2.com
.
Tentukan host virtual
Sekarang Anda memiliki struktur dasar untuk dua domain Anda, Anda dapat menentukan dua host virtual.
Ulas NamaVirtualHost
Dengan host virtual, pengaturan NameVirtualHost sering menyebabkan kebingungan.
Setiap antarmuka dan port tempat Apache diatur untuk mendengarkan memerlukan direktif aNameVirtualHost. Anda dapat menentukan direktif hanya sekali perport.
Pada layout Apache untuk sistem operasi Ubuntu terdapat default NameVirtualHostdirective di ports.conf
berkas.
Jalankan perintah berikut untuk melihat isi ports.conf
:
cat /etc/apache2/ports.conf
Anda akan mendapatkan output berikut (kecuali Anda telah memodifikasi file sebelumnya):
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule>
Pengaturan NameVirtualHost default memenuhi persyaratan saat ini - Apache akan menerapkan logika dan pengaturan host virtual berbasis nama untuk permintaan HTTP yang dibuat pada antarmuka yang tersedia (*) di port 80.
Catatan :Penempatan direktif NameVirtualHost default di 'ports.conf' baru untuk tata letak Apache sistem operasi Ubuntu; priorreleases menempatkan pengaturan serupa di vhost default.
Tentukan host virtual khusus
Sekarang Anda siap untuk menambahkan host virtual Anda sendiri sehingga Anda dapat mulai melayani domain Anda.
Buat file vhost untuk domain1:
sudo nano /etc/apache2/sites-available/domain1.com.conf
Isinya seperti berikut:
# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come
# domain: domain1.com
# public: /home/demo/public_html/domain1.com/
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin [email protected]
ServerName domain1.com
ServerAlias www.domain1.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html
DocumentRoot /home/demo/public_html/domain1.com/public
# Custom log file locations
LogLevel warn
ErrorLog /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined
</VirtualHost>
Aktifkan situs
Aktifkan situs sebagai berikut:
sudo a2ensite domain1.com
Output dari perintah tersebut adalah sebagai berikut:
Site domain1.com installed; run /etc/init.d/apache2 reload to enable.
Jalankan perintah yang disarankan:
sudo /etc/init.d/apache2 reload
Navigasi ke situs
Untuk menguji domain tanpa membuat zona DNS dan catatan di beberapa server nama Internet, Anda dapat memodifikasi file '/etc/hosts' di komputer lokal Anda untuk menyertakan beberapa entri yang memetakan 'domain1.com','domain2.com', dan sisanya ke alamat IP publik Cloud Server demo:
127.0.0.1 localhost
...
# entries related to the demo Cloud Server
123.45.67.890 domain1.com
123.45.67.890 www.domain1.com
123.45.67.890 domain2.com
...
Lokasi file 'host' bervariasi tergantung pada OS apa yang dimuat di komputer lokal Anda.
Catatan :Entri dalam file 'host' harus dihapus sebelum pengujian dan menggunakan zona DNS langsung dan catatan yang dibuat di server nama Internet. Kegagalan untuk menghapusnya dapat menyebabkan kebingungan di pihak Anda dan pengujian yang tidak akurat dari catatan DNS publik baru atau yang dimodifikasi.
Dengan perubahan yang dibuat untuk tujuan pengujian, Anda dapat menavigasi ke situs Anda di browser web di komputer lokal Anda dan konten file public/index.html ditampilkan.
Gunakan ServerAlias
Perhatikan bahwa dalam file vhost, Anda menetapkan ServerAlias. Jika Anda telah menyiapkan DNS dengan benar, Anda juga dapat menggunakan alamat tersebut.
Kita akan berbicara tentang memaksa satu alamat atau yang lain di artikel selanjutnya tentang aturan penulisan ulang.
Ulangi proses untuk domain lain
Untuk membuat dan mengaktifkan domain2.com, ulangi proses sebagai berikut:
-
Buat file vhost:
sudo nano /etc/apache2/sites-available/domain2.com ... # Enter the details for domain2.com as per the example shown above
-
Aktifkan situs dan mulai ulang Apache:
sudo a2ensite domain2.com ... sudo /etc/init.d/apache2 reload
-
Arahkan ke domain kedua:
https://domain2.com or https://www.domain2.com
Anda akan melihat file indeks 'domain2.com'.
Melihat file log
Seperti yang didefinisikan dalam file vhosts, setiap domain memiliki file lognya sendiri.
Cantumkan log untuk domain Anda:
ls /var/log/apache2/error-mydomainname.com.log
Outputnya persis seperti yang diharapkan:
access.log error.log
File vhost default
Meskipun Anda mengubah host virtual default, Anda tetap membiarkannya.
Jika seseorang memasukkan alamat IP server cloud, mereka akan disajikan konten file vhosts default tersebut (jika Anda tidak menyiapkan vhost terpisah untuk alamat IP).
Mengapa disajikan dari file vhost itu?
Apache mencari file vhost yang diaktifkan dalam urutan abjad dan jika tidak dapat menemukannya untuk alamat IP atau nama domain yang diminta, Apache akan melayani yang pertama (berdasarkan abjad).
Jika Anda telah menonaktifkan atau menghapus file vhost default, maka konten domain1.com akan ditampilkan (sebelum domain2.com secara alfabetis).
Ini adalah sesuatu yang perlu dipertimbangkan ketika merencanakan situs web Anda. Apakah Anda ingin domain tertentu menjadi default? Apakah Anda ingin alamat IP memiliki konten yang sama sekali berbeda?
Setel alamat email admin
Tetapkan alamat email untuk administrator server. Alamat ini digunakan jika Anda mengatur server untuk menghubungi Anda saat terjadi kesalahan. Itu juga ditampilkan di ServerSignature jika nilainya diatur ke Email. (Lihat bagian Menentukan footer Apache .
ServerAdmin [email protected]
Setel nama domain
Tetapkan nama domain (NamaServer) untuk host virtual. Anda dapat memiliki banyak alias (ServerAlias) sesuai kebutuhan. Misalnya, Anda dapat memilikidomain.com dan domain.net menunjuk ke konten yang sama.
ServerName domain.com
ServerAlias www.domain.com
Catatan :Ini bukan aturan penulisan ulang, tetapi domain yang ditentukan di sini akan menyajikan konten yang sama (dengan asumsi Anda telah menyetel DNS untuk menunjuk ke IP Server Cloud Anda).
Tentukan file indeks
Tentukan file indeks (halaman beranda yang ditampilkan saat alamat domain dimasukkan). Ini berguna jika Anda ingin pengguna diarahkan ke halaman alternatif atau halaman beranda yang tidak standar.
DirectoryIndex index.html
Catatan :Ini bukan metode yang baik untuk mengarahkan pengguna karena mereka mungkin langsung membuka halaman yang tidak ditentukan, seperti domain.com/index.php, sedangkan nilai DirectoryIndex hanya berfungsi untuk mereka yang memasuki domain.com.
Tentukan jalur dokumen
Tentukan lokasi file publik domain. Gunakan nama path absolut.
DocumentRoot /home/demo/public_html/domain.com/public
Setel file log
Atur level log dan lokasi untuk file log host virtual.
LogLevel warn
ErrorLog /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined
Menentukan dokumen kesalahan
Setel ErrorDocument, yang digunakan untuk semua pesan kesalahan standar.
ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html
Dalam contoh ini, ada folder 'kesalahan' di direktori publik. Setiap dokumen kesalahan dibuat dan ditempatkan di folder kesalahan. Jalur yang ditampilkan adalah relatif terhadap folder DocumentRoot yang ditentukan sebelumnya.
Jika pesan kesalahan tidak ditentukan, Apache membuat halaman kesalahannya sendiri. Halaman kesalahan khusus lebih ramah pengguna dan dapat disesuaikan sebanyak atau sesedikit yang Anda inginkan.
Menentukan footer Apache
Tentukan ServerSignature untuk menentukan apakah detail server ditampilkan di halaman kesalahan atau daftar indeks yang dibuat server. Opsinya Aktif, Nonaktif, dan Email.
ServerSignature On
Tingkat detail dalam tanda tangan dikonfigurasi melalui ServerTokens, yang tidak dapat diatur dalam file Host Virtual. Untuk Apachelayout sistem operasi Ubuntu, ini diatur dengan benar di '/etc/apache2/conf.d/security'. Lihat artikel Konfigurasi Apache #2 MEMBUTUHKAN LINK untuk detail lebih lanjut.
Jika ServerSignature disetel ke Email , email ServerAdmin akan ditampilkan.
Aktifkan cgi-bin
Aktifkan lokasi cgi-bin seperti yang ditentukan oleh tata letak host virtual khusus. Anda dapat meninggalkan cgi-bin di lokasi DocumentRoot jika Anda mau.
ScriptAlias /cgi-bin/ /home/demo/public_html/domain.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
Setel opsi direktori
Atur opsi untuk direktori yang ditentukan. Contoh berikut mengaktifkan opsi FollowSymLinks untuk direktori publik domain.com.
Options FollowSymLinks
Berikut adalah opsi lain yang dapat Anda atur:
Opsi penjelajahan direktori
Untuk mematikan penjelajahan direktori, gunakan -Indexes. Untuk mengaktifkan penjelajahan direktori, gunakan +Indeks.
Options -Indexes
opsi SSI
Mengaktifkan atau menonaktifkan Sisi Server Termasuk. Contoh berikut menonaktifkan.
Options -Includes
Opsi symlink
Aktifkan atau nonaktifkan opsi untuk mengikuti symlink. Hati-hati dengan opsi ini karena dapat menimbulkan risiko keamanan (secara tidak sengaja menautkan ke folder konfigurasi).
Options -FollowSymLinks
Anda dapat mempertimbangkan untuk menggunakan direktif SymLinksIfOwnerMatch alih-alihFollowSymLinks. Direktif SymLinksIfOwnerMatch memungkinkan tautan simbolik untuk diikuti hanya jika pemilik tautan identik dengan pemilik file atau direktori target (dalam hal kepemilikan/izin sistem file Linux). Ini mencegah banyak risiko keamanan yang dapat dibuat oleh arahan FollowSymlinks sederhana.
opsi .htaccess
Setel AllowOverride ke None untuk menonaktifkan dukungan .htaccess. Setel ke Semua untuk mengizinkan dukungan.
AllowOverride None
Anda juga dapat menentukan fitur .htaccess mana yang akan diaktifkan, seperti:
AllowOverride AuthConfig Indexes
ApachehtaccessandAllowOverridedocs memiliki informasi lebih lanjut tentang berbagai fitur.
Ingatlah untuk secara khusus melindungi file .htaccess Anda. Anda dapat melakukannya dengan mengganti namanya menjadi sesuatu yang tidak jelas dan menolak akses akses ke file dari sumber eksternal:
AccessFileName .myobscurefilename
<Files ~ "^\.my">
<SatisfyAll>
Require all denied
</SatisfyAll>
</Files>
Catatan :Contoh sebelumnya diformat untuk Apache 2.4. Jika menggunakan2.2, ganti **
Tidak Ada Opsi
Tentukan Tidak Ada untuk menonaktifkan semua opsi yang tersedia.
Options None
Hierarki opsi
Arahan opsi dapat diatur per direktori, seperti yang ditunjukkan pada contoh berikut:
AllowOverride None
Options None
AllowOverride All
Pengaturan direktori pertama akan menonaktifkan semua opsi dan menonaktifkan dukungan.htaccess untuk semua direktori.
Namun, pengaturan direktori kedua akan menggantikan yang pertama dan dukungan allow.htaccess untuk direktori domain.com/public.
Ringkasan
File host virtual adalah alat yang mudah digunakan tetapi sangat kuat. Kami menyarankan Anda memasukkan satu pengaturan lalu mengujinya. Kemudian masuk ke pengaturan dan pengujian berikutnya, dan seterusnya.
Setelah Anda terbiasa dengannya, Anda akan melihat bahwa Anda memiliki kontrol yang baik atas semua folder dan file web Anda.