Cara Menyediakan Apache Virtual Hosts pada Pelayan Ubuntu


Pengenalan

Pelayan HTTP Apache adalah pelayan web sumber terbuka yang popular yang menawarkan fleksibiliti, kuasa, dan sokongan meluas untuk pembangun. Konfigurasi pelayan Apache tidak dilakukan dalam satu fail monolitik, tetapi berlaku melalui reka bentuk modular di mana fail baru boleh ditambah dan diubah suai mengikut keperluan. Dalam reka bentuk modular ini, anda boleh mencipta tapak atau domain individu yang dipanggil virtual host.

Dengan menggunakan hos maya, satu instans Apache boleh mengendalikan pelbagai laman web. Setiap domain atau laman individu yang dikonfigurasi menggunakan Apache akan mengarahkan pelawat ke direktori tertentu yang menyimpan maklumat laman tersebut. Ini dilakukan tanpa memberitahu pelawat bahawa pelayan yang sama juga bertanggungjawab untuk laman lain. Skema ini boleh dikembangkan tanpa had perisian selagi pelayan anda mampu menangani beban tersebut.

Dalam panduan ini, anda akan menetapkan pelayan maya Apache pada pelayan Ubuntu. Sepanjang proses ini, anda akan belajar cara menyajikan kandungan yang berbeza kepada pelawat yang berbeza bergantung pada domain yang mereka minta dengan membuat dua tapak pelayan maya.

Diluluskan pada keluaran Ubuntu terkini: Langkah-langkah dan arahan dalam tutorial ini telah disahkan pada Ubuntu 20.04 LTS, 22.04 LTS, dan 24.04 LTS. Susun atur konfigurasi Apache (sites-available, sites-enabled, a2ensite, a2dissite) dan struktur direktori yang digunakan di sini adalah sama di semua versi ini.

Perkara utama yang perlu diambil

  • Hos maya membolehkan satu instans Apache mengendalikan pelbagai laman web; setiap domain menunjuk ke root dokumennya sendiri.
  • Anda membuat direktori di bawah /var/www untuk setiap laman web (contohnya, /var/www/your_domain/public_html) dan menetapkan pemilikan serta kebenaran supaya pelayan web boleh membaca fail dan pengguna anda boleh menyuntingnya.
  • Setiap tapak mendapat fail konfigurasi sendiri di /etc/apache2/sites-available/ dengan ServerName, ServerAlias, dan DocumentRoot.
  • Gunakan a2ensite dan a2dissite untuk mengaktifkan atau menyahaktifkan tapak, kemudian muat semula atau mulakan semula Apache supaya perubahan diterapkan.
  • Anda boleh menguji tanpa DNS sebenar dengan menyunting fail hosts tempatan anda untuk menetapkan domain contoh anda ke IP pelayan.

Prasyarat

Sebelum anda memulakan tutorial ini, anda memerlukan:

  • Sebuah pelayan Ubuntu dengan pengguna bukan root yang mempunyai keistimewaan sudo. Anda boleh menggunakan panduan Penyediaan Pelayan Awal dengan Ubuntu kami untuk menyiapkannya.
  • Apache telah dipasang pada pelayan. Anda boleh mempelajarinya dengan mengikuti langkah 1-3 dalam tutorial Cara Memasang Pelayan Web Apache di Ubuntu kami.

Jika anda menggunakan Linux-Console.net, anda boleh belajar cara menyusun domain dengan mengikuti dokumentasi produk kami, Cara menambah dan menyusun domain.

Untuk berjaya menyelesaikan tutorial ini, anda memerlukan dua domain dengan:

  • Satu rekod A dengan your_domain yang menunjuk ke alamat IP awam pelayan anda.
  • Rekod A dengan www.domain_anda menunjuk ke alamat IP awam pelayan anda.

Bagi penyedia lain, sila rujuk dokumentasi produk mereka yang berkaitan.

Nota: Jika anda tidak mempunyai domain yang tersedia pada masa ini, anda boleh menggunakan nilai ujian secara tempatan di komputer anda. Langkah 6 dalam tutorial ini akan menunjukkan cara untuk menguji dan mengkonfigurasi nilai ujian anda. Ini akan membolehkan anda mengesahkan konfigurasi anda walaupun kandungan anda tidak akan tersedia untuk pengunjung lain melalui nama domain.

Langkah 1 — Membuat Struktur Direktori

Langkah pertama adalah untuk mencipta struktur direktori yang akan menyimpan data tapak yang akan anda sajikan kepada pelawat.

Akar dokumen anda, direktori tahap atas yang Apache lihat untuk mencari kandungan yang akan disediakan, akan ditetapkan kepada direktori individu di bawah direktori /var/www. Anda akan membuat satu direktori di sini untuk setiap hos maya.

Dalam setiap direktori ini, anda akan membuat direktori public_html. Direktori public_html mengandungi kandungan yang akan disajikan kepada pengunjung anda. Direktori induk, yang dinamakan di sini sebagai your_domain_1 dan your_domain_2, akan menyimpan skrip dan kod aplikasi untuk menyokong kandungan web.

Gunakan arahan ini, dengan nama domain anda sendiri, untuk mencipta direktori anda:

sudo mkdir -p /var/www/your_domain_1/public_html

sudo mkdir -p /var/www/your_domain_2/public_html

Pastikan untuk menggantikan your_domain_1 dan your_domain_2 dengan domain masing-masing. Sebagai contoh, jika salah satu domain anda adalah example.com, anda akan membuat struktur direktori ini: /var/www/example.com/public_html.

Langkah 2 — Memberi Kebenaran

Anda telah mencipta struktur direktori untuk fail anda, tetapi ia dimiliki oleh pengguna root. Jika anda mahu pengguna biasa anda dapat mengubah fail dalam direktori web ini, anda boleh menukar pemilikan menggunakan arahan ini:

sudo chown -R $USER:$USER /var/www/your_domain_1/public_html

sudo chown -R $USER:$USER /var/www/your_domain_2/public_html

Pembolehubah $USER akan mengambil nilai pengguna yang sedang anda log masuk apabila anda menekan ENTER. Dengan melakukan ini, pengguna biasa kini memiliki subdirektori public_html di mana anda akan menyimpan kandungan anda.

Anda juga harus mengubah kebenaran anda untuk memastikan bahawa akses baca dibenarkan ke direktori web umum dan semua fail serta folder yang dikandungi supaya halaman dapat dihidangkan dengan betul:

sudo chmod -R 755 /var/www

Pelayan web anda kini mempunyai kebenaran yang diperlukan untuk menyampaikan kandungan, dan pengguna anda seharusnya dapat membuat kandungan dalam folder yang diperlukan. Langkah seterusnya ialah untuk membuat kandungan untuk laman hos maya anda.

Langkah 3 — Membuat Halaman Lalai untuk Setiap Hos Maya

Dengan struktur direktori anda yang telah disediakan, anda boleh mula menumpukan perhatian pada setiap laman hos maya individu dan kandungan dalam laman tersebut. Mulakan dengan membuat halaman index.html untuk laman pertama anda your_domain_1.

Buka dan cipta fail index.html dengan penyunting teks pilihan anda. Contoh ini menggunakan nano:

nano /var/www/your_domain_1/public_html/index.html

Dalam fail ini, buat satu fail HTML yang memberitahu pengunjung laman web mana yang mereka sambungkan:

<html>
  <head>
    <title>Welcome to your_domain_1!</title>
  </head>
  <body>
    <h1>Success! The your_domain_1 virtual host is working!</h1>
  </body>
</html>

Untuk menyimpan dan menutup fail dalam nano, mulakan dengan menekan CTRL+X. Tekan Y apabila diminta untuk menyimpan fail, kemudian tekan ENTER apabila anda selesai untuk keluar.

Seterusnya, salin fail ini untuk digunakan sebagai asas bagi laman kedua anda dengan menaip:

cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.html

Kemudian buka fail baharu ini dan ubah suai maklumat yang berkaitan menggunakan penyunting teks anda seperti sebelumnya:

nano /var/www/your_domain_2/public_html/index.html
<html>
  <head>
    <title>Welcome to your_domain_2!</title>
  </head>
  <body> <h1>Success! The your_domain_2 virtual host is working!</h1>
  </body>
</html>

Simpan dan tutup fail ini. Anda kini mempunyai satu muka surat untuk setiap laman yang boleh anda gunakan untuk menguji konfigurasi hos maya.

Langkah 4 — Mewujudkan Fail Hos Maya Baru

Fail hos maya menentukan konfigurasi sebenar hos maya anda dan mengawal bagaimana pelayan web Apache bertindak balas terhadap permintaan domain yang berbeza. Untuk maklumat lanjut mengenai susunan Apache dan pilihan global, lihat Cara Mengkonfigurasi Pelayan Web Apache pada VPS Ubuntu atau Debian.

Apache datang dengan fail hos maya lalai yang dipanggil 000-default.conf. Anda boleh menyalin fail ini untuk membuat fail hos maya bagi setiap domain anda.

Salin fail konfigurasi lalai ke domain pertama:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.conf

Sedarilah bahawa konfigurasi lalai Ubuntu memerlukan setiap fail hos maya berakhir dengan .conf.

Buka fail baru dalam penyunting teks pilihan anda dengan keistimewaan root:

sudo nano /etc/apache2/sites-available/your_domain_1.conf

Dengan komen dialih keluar, fail itu akan kelihatan seperti ini:

<VirtualHost *:80>
  ...
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
   ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Dalam fail ini, sesuaikan item untuk domain pertama anda dan tambah beberapa arahan tambahan. Bahagian hos maya ini sepadan dengan sebarang permintaan yang dibuat pada port 80, iaitu port HTTP lalai.

Pertama, tukar arahan ServerAdmin kepada emel yang boleh diterima oleh pentadbir laman web:

ServerAdmin admin@your_domain_1

Selepas ini, tambah dua arahan tambahan. Yang pertama, dipanggil ServerName, menetapkan domain asas untuk definisi hos maya. Yang kedua, dipanggil ServerAlias, menentukan nama tambahan yang sepatutnya sepadan seolah-olah ia adalah nama asas. Ini berguna untuk memadankan hos tambahan yang anda telah tetapkan. Sebagai contoh, jika anda menetapkan arahan ServerName kepada example.com, anda boleh menentukan ServerAlias kepada www.example.com, dan kedua-duanya akan menunjuk ke alamat IP pelayan ini.

Tambah kedua-dua arahan ini ke dalam fail konfigurasi anda selepas baris ServerAdmin:

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_1
    ServerName your_domain_1
    ServerAlias www.your_domain_1
    DocumentRoot /var/www/html
    ...
</VirtualHost>

Seterusnya, tukar lokasi fail hos maya anda untuk akar dokumen bagi domain ini. Sunting arahan DocumentRoot untuk menunjuk ke direktori yang anda buat bagi hos ini:

DocumentRoot /var/www/your_domain_1/public_html

Berikut adalah contoh fail hos maya dengan semua penyesuaian yang dibuat di atas:

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_1
    ServerName your_domain_1
    ServerAlias www.your_domain_1
    DocumentRoot /var/www/your_domain_1/public_html
    ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ...
</VirtualHost>

Simpan dan tutup fail itu.

Buat fail konfigurasi kedua anda dengan menyalin fail daripada laman hos maya pertama anda:

sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.conf

Buka fail baru dalam penyunting pilihan anda:

sudo nano /etc/apache2/sites-available/your_domain_2.conf

Anda sekarang perlu mengubah semua maklumat untuk merujuk kepada domain kedua anda. Apabila anda selesai, ia sepatutnya kelihatan seperti ini:

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_2
    ServerName your_domain_2
    ServerAlias www.your_domain_2
    DocumentRoot /var/www/your_domain_2/public_html
    ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ...
</VirtualHost>

Simpan dan tutup fail apabila anda telah selesai.

Langkah 5 — Menghidupkan Fail Hos Maya Baharu

Sekarang bahawa anda telah membuat fail hos maya anda, anda mesti mengaktifkannya. Apache termasuk beberapa alat yang membolehkan anda melakukan ini.

Anda akan menggunakan alat a2ensite untuk mengaktifkan setiap tapak anda. Jika anda ingin membaca lebih lanjut mengenai skrip ini, anda boleh merujuk kepada laman manual a2ensite.

Gunakan arahan berikut untuk mengaktifkan laman hos maya anda:

sudo a2ensite your_domain_1.conf

sudo a2ensite your_domain_2.conf

Akan ada keluaran untuk kedua-dua tapak, serupa dengan contoh di bawah, yang mengingatkan anda untuk memuat semula pelayan Apache anda:

Enabling site example.com.
To activate the new configuration, you need to run:
  systemctl reload apache2

Sebelum memuat semula pelayan anda, nyahaktifkan laman web lalai yang ditetapkan dalam 000-default.conf dengan menggunakan arahan a2dissite:

sudo a2dissite 000-default.conf
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

Seterusnya, uji untuk kesilapan konfigurasi:

sudo apache2ctl configtest

Anda sepatutnya menerima output berikut:

. . .
Syntax OK

Apabila anda selesai, mulakan semula Apache untuk menjadikan perubahan ini berkuat kuasa.

sudo systemctl restart apache2

Sebagai pilihan, anda boleh memeriksa status pelayan selepas semua perubahan ini dengan arahan ini:

sudo systemctl status apache2

Pelayan anda sekarang sepatutnya sudah disediakan untuk mengendalikan dua laman web. Jika anda menggunakan nama domain sebenar, anda boleh terus ke Langkah 7 dan mengabaikan Langkah 6. Jika anda menguji konfigurasi anda secara tempatan, ikuti Langkah 6 untuk mempelajari cara menguji tetapan anda menggunakan komputer tempatan anda.

Langkah 6 — (Pilihan) Menyediakan Fail Host Tempatan

Jika anda belum menggunakan nama domain sebenar yang anda miliki untuk menguji prosedur ini, dan telah menggunakan domain contoh sebagai gantinya, anda masih boleh menguji fungsi laman hos maya anda dengan mengubah sementara fail hosts pada komputer tempatan anda. Ini akan menghalang sebarang permintaan untuk domain yang anda konfigurasikan dan mengarahkannya ke Pelayan Peribadi Maya (VPS) anda, sama seperti sistem DNS akan lakukan jika anda menggunakan domain berdaftar. Ini hanya akan berfungsi dari komputer tempatan anda dan hanya untuk tujuan ujian.

Pastikan anda menjalankan langkah-langkah ini di komputer tempatan anda dan bukan di pelayan VPS anda. Anda perlu mengetahui kata laluan pentadbir komputer atau sekurang-kurangnya menjadi ahli kumpulan pentadbir.

Jika anda menggunakan komputer Mac atau Linux, sunting fail tempatan anda dengan keistimewaan pentadbir dengan menaip:

sudo nano /etc/hosts

Jika anda menggunakan komputer Windows, buka Command Prompt dan taip:

notepad %windir%\system32\drivers\etc\hosts

Butiran yang perlu anda tambahkan ialah alamat IP awam bagi pelayan anda, diikuti dengan domain yang anda ingin gunakan untuk mengakses pelayan tersebut. Menggunakan domain yang digunakan dalam panduan ini, dan menggantikan IP pelayan anda pada teks your_server_IP, fail anda sepatutnya kelihatan seperti ini:

127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2

Ini akan mengarahkan sebarang permintaan untuk dua domain anda di komputer anda dan menghantarnya ke pelayan anda di alamat IP yang ditetapkan.

Simpan dan tutup fail itu.

Langkah 7 — Menguji Keputusan Anda

Sekarang bahawa anda telah mengkonfigurasi hos maya anda, anda boleh menguji tetapan anda dengan mengunjungi domain yang telah anda konfigurasikan dalam pelayar web anda:

http://your_domain_1

Anda juga boleh melawat halaman hos kedua anda dan melihat fail yang anda buat untuk laman kedua anda:

http://your_domain_2

Jika kedua-dua laman web ini berfungsi seperti yang dijangkakan, anda telah berjaya mengkonfigurasi dua hos maya pada pelayan yang sama.

Nota: Jika anda telah menyesuaikan fail hosts komputer tempatan anda, seperti dalam Langkah 6 tutorial ini, anda mungkin ingin menghapuskan baris-baris yang telah anda tambahkan sekarang setelah anda mengesahkan bahawa konfigurasi anda berfungsi. Ini akan mengelakkan fail hosts anda dipenuhi dengan entri yang tidak lagi diperlukan.

Soalan Lazim

1. Apakah Apache Virtual Hosts?

Hos Maya Apache adalah cara untuk menjalankan lebih daripada satu laman web pada satu pelayan Apache. Setiap hos maya mempunyai domainnya sendiri (atau subdomain), akar dokumen, dan tetapan tersendiri. Pelawat hanya melihat tapak untuk domain yang mereka minta; mereka tidak melihat bahawa tapak lain berada pada pelayan yang sama.

2. Berapa banyak hos maya yang boleh dikendalikan oleh Apache?

Apache tidak mengehadkan bilangan hos maya. Anda boleh menambah sebanyak mana yang mampu ditampung oleh sumber pelayan anda. Setiap laman baru memerlukan fail konfigurasi sendiri di /etc/apache2/sites-available/, direktori sendiri di bawah /var/www, dan kemudian anda mengaktifkannya dengan a2ensite dan memuat semula Apache.

3. Apakah perbezaan antara ServerName dan ServerAlias?

Arahan ServerName dan ServerAlias menentukan hostname yang harus direspon oleh Apache untuk setiap hos maya, tetapi mereka berfungsi untuk tujuan yang sedikit berbeza:

ArahanPeneranganContoh
ServerName
Nama hos utama dan kanonik untuk hos maya. Apache padankan nama ini dengan tepat.
example.com
ServerAlias
Nama hos alternatif yang juga menunjuk kepada hos maya ini, termasuk wildcard.
www.example.com, *.example.com

Bagaimana ia berfungsi?

  • Gunakan ServerName untuk domain utama.
  • Gunakan ServerAlias untuk nama hos lain (seperti versi www. atau subdomain) yang sepatutnya memaparkan kandungan laman yang sama.

Sebarang permintaan yang sepadan dengan ServerName atau mana-mana entri ServerAlias akan dilayan oleh hos maya tersebut. Untuk maklumat lanjut, lihat dokumentasi rasmi Apache mengenai hos maya.

4. Adakah saya memerlukan nama domain untuk hos maya?

Anda tidak memerlukan domain berdaftar untuk mengikuti panduan ini. Anda boleh menggunakan nama hos contoh dan menunjuknya ke pelayan anda dengan mengedit fail hosts pada komputer anda (lihat Langkah 6). Untuk laman web yang boleh diakses oleh orang lain melalui internet, anda memerlukan domain sebenar dan rekod DNS yang menunjuk ke pelayan anda. Jika anda menggunakan Linux-Console.net, anda boleh menambahkan dan mengurus domain di panel kawalan; lihat panduan permulaan DNS kami untuk mengetahui cara menambahkan domain.

5. Di manakah fail hos maya Apache disimpan?

Pada Ubuntu dan Debian, konfigurasi hos maya terletak di /etc/apache2/sites-available/. Setiap laman web mempunyai fail .conf di sana (contohnya, example.com.conf). Mengaktifkan laman web menggunakan a2ensite akan menambah pautan simbolik di /etc/apache2/sites-enabled/ yang menunjuk kepada fail itu. Laman web lalai yang menjawab apabila tiada hos lain yang sepadan ialah 000-default.conf.

Kesimpulan

Kini anda mempunyai satu pelayan yang mengendalikan dua nama domain yang berasingan. Anda boleh memperluaskan proses ini dengan mengikuti langkah-langkah yang telah kami jelaskan di atas untuk menambah hos maya tambahan. Tidak ada had perisian bagi bilangan nama domain yang boleh diuruskan oleh Apache, jadi jangan ragu untuk membuat sebanyak mana hos maya yang mampu ditangani oleh pelayan anda.

Langkah seterusnya dan sumber berkaitan

  • Kukuhkan Apache dan tambah HTTPS: Selepas hos maya berfungsi, anda boleh menambah TLS dengan Cara Menyediakan Keselamatan Apache menggunakan Let’s Encrypt pada Ubuntu dan menala pelayan menggunakan Cara Mengkonfigurasi Pelayan Web Apache pada VPS Ubuntu atau Debian.
  • Paket LAMP penuh: Untuk menambahkan MySQL dan PHP pada pelayan Ubuntu yang sama, ikut Panduan Cara Memasang Paket LAMP di Ubuntu.
  • Produk Linux-Console.net: Gunakan Droplets untuk menjalankan Ubuntu dan Apache, serta DNS untuk mengurus rekod domain dan menuding domain anda ke pelayan anda. Dokumen produk: Tambah domain (panduan ringkas DNS).

Terima kasih kerana belajar bersama Komuniti Linux-Console.net.