GNU/Linux >> Belajar Linux >  >> Linux

Siapkan host virtual Apache di sistem operasi Ubuntu

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.

  1. Di direktori home Anda, buat folder public_html:

    cd ~
    mkdir public_html
    
  2. 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.

  1. Untuk setiap domain, buat file index.html:

    nano public_html/domain1.com/public/index.html
    
  2. Tambahkan kode berikut ke file index.html:

    <html>
      <head>
        <title>domain1.com</title>
      </head>
      <body>
    
        <h1>domain1.com</h1>
      </body>
    </html>
    
  3. Ulangi proses tersebut sehingga Anda memiliki file serupa untuk domain2.com. Ganti semua instance domain1.com dengan domain2.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

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:

  1. Buat file vhost:

    sudo nano /etc/apache2/sites-available/domain2.com
    ...
    # Enter the details for domain2.com as per the example shown above
    
  2. Aktifkan situs dan mulai ulang Apache:

    sudo a2ensite domain2.com
    ...
    sudo /etc/init.d/apache2 reload
    
  3. 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

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 ** Wajibkan semua ditolak ** dengan Order Allow,Deny | Tolak dari semua | Memuaskan .

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.


Linux
  1. Cara Mengatur Host Virtual Apache di CentOS

  2. Konfigurasi Apache pada sistem operasi Ubuntu

  3. Konfigurasikan server MySQL pada sistem operasi Ubuntu

  1. Buat host virtual CentOS NGINX

  2. Instal IMAP untuk PHP 7.1 di sistem operasi Ubuntu

  3. Instal Server MySQL di sistem operasi Ubuntu

  1. Ubah Port SSH di sistem operasi Linux Ubuntu

  2. Jadwalkan reboot di sistem operasi Ubuntu

  3. Siapkan vhost Apache di Ubuntu 20.04 dan Debian 10