Cara Install Apache dengan Virtual Host di CentOS 8


Server web Apache adalah server web HTTP sumber terbuka dan populer yang terus menikmati pangsa pasar besar dalam industri hosting. Ia dilengkapi dengan banyak fitur termasuk peningkatan modul, dukungan multi-protokol, konfigurasi yang disederhanakan, dan dukungan multi-bahasa, dan masih banyak lagi.

Baca Juga: Cara Install Nginx di CentOS 8

Dalam panduan ini, kami akan memandu Anda melalui instalasi server web Apache di CentOS 8 dan RHEL 8 dengan lingkungan Virtual Host. Pada saat tutorial ini ditulis, versi terbaru Apache adalah Apache 2.2.43.

Menginstal Server Web Apache

Untuk memulai, pertama-tama perbarui daftar paket sistem CentOS 8 atau RHEL 8 Anda menggunakan perintah dnf berikut.

sudo dnf update

Setelah pembaruan selesai, instal server web Apache dengan menjalankan perintah berikut.

sudo dnf install httpd

Setelah terinstal, Anda dapat memverifikasi versi Apache dengan menjalankan perintah rpm.

rpm -qi httpd

Perintah ini mencetak serangkaian informasi seperti versi, tanggal rilis, pembuatan, dan arsitektur paket.

Untuk memulai layanan web HTTP Apache, jalankan perintah systemctl.

sudo systemctl start httpd

Untuk mengonfirmasi apakah layanan sedang berjalan, jalankan.

sudo systemctl status httpd

Dari outputnya, status ‘aktif’ berwarna hijau menunjukkan bahwa server web Apache aktif dan berjalan.

Untuk menghilangkan keraguan bahwa server web sedang berjalan, mintalah halaman pengujian dari Apache dengan menelusuri alamat IP server Anda atau nama domain seperti yang ditunjukkan.

http://server-ip  

Anda dapat memperoleh IP server Anda dengan menjalankan perintah ifconfig. Jika server Anda dihosting di cloud, Anda bisa mendapatkan IP publik dengan menjalankan perintah curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Saat Anda menelusuri alamat IP server, Anda akan menampilkan halaman web berikut.

Ini adalah konfirmasi pasti bahwa server web sedang berjalan.

Mengelola Server Web Apache

Dengan Apache terinstal dan berjalan, Anda dapat menggunakan alat inspeksi systemctl untuk mengelola Apache.

Misalnya, untuk menghentikan Apache, jalankan perintah:

sudo systemctl stop httpd

Untuk memulai layanan sekali lagi, jalankan:

sudo systemctl start httpd

Jika Anda telah membuat perubahan pada salah satu file konfigurasinya dan Anda perlu memulai ulang untuk menerapkan perubahan, jalankan perintah:

sudo systemctl restart httpd

Memulai ulang layanan biasanya menyebabkan gangguan layanan. Alternatif yang lebih baik adalah dengan memuat ulang tanpa gangguan apa pun pada koneksi.

sudo systemctl reload httpd

Untuk memulai server web Apache secara otomatis saat boot atau reboot, jalankan perintah di bawah ini. Ini akan memastikan Apache dimulai secara otomatis tanpa campur tangan Anda.

sudo systemctl enable httpd

Jika Anda memilih untuk tidak memulai layanan secara otomatis saat boot, jalankan:

sudo systemctl disable httpd

Menyiapkan Host Virtual Apache

Secara default, server web Apache dikonfigurasi untuk melayani atau menghosting hanya satu situs web. Jika Anda hanya ingin menghosting satu situs web, langkah ini tidak diperlukan. Namun jika Anda berencana untuk meng-host beberapa domain di server Anda, maka Anda perlu mengkonfigurasi host virtual Apache.

Host virtual adalah file terpisah yang berisi konfigurasi yang memungkinkan Anda menyiapkan domain terpisah dari domain default. Untuk panduan ini, kami akan menyiapkan host virtual untuk domain crazytechgeek.info.

Host virtual default terletak di direktori /var/www/html. Ini hanya berfungsi untuk satu situs. Untuk membuat virtual host terpisah untuk domain kita, kita akan membuat struktur direktori lain dalam direktori /var/www seperti yang ditunjukkan.

sudo mkdir -p /var/www/crazytechgeek.info/html

Selain itu, Anda juga dapat membuat direktori untuk menyimpan file log.

sudo mkdir -p /var/www/crazytechgeek.info/log

Selanjutnya, edit izin file menggunakan variabel lingkungan $USER seperti yang ditunjukkan.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Sesuaikan juga izin direktori webroot seperti yang ditunjukkan.

sudo chmod -R 755 /var/www

Selanjutnya, buat contoh file index.html seperti yang ditunjukkan.

sudo vim /var/www/crazytechgeek.info/html/index.html

Tekan huruf 'i' pada keyboard dan tempelkan beberapa contoh konten seperti yang ditunjukkan yang akan ditampilkan di browser web saat menguji host virtual.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Simpan dan keluar dari file konfigurasi.

Dengan contoh file indeks dan direktori situs dibuat, Anda sekarang dapat melanjutkan dan membuat file host virtual. File host virtual akan berisi konfigurasi situs domain Anda dan menginstruksikan Apache bagaimana menanggapi permintaan klien.

File host virtual akan berisi konfigurasi situs domain Anda dan menginstruksikan Apache bagaimana menanggapi permintaan klien. Namun selanjutnya, Anda perlu membuat 2 direktori: direktori sites-available dan sites-enabled.

File host virtual akan disimpan di direktori sites-available sedangkan direktori sites-enabled akan berisi tautan simbolis ke host virtual.

Buat kedua direktori seperti yang ditunjukkan.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Selanjutnya, ubah file konfigurasi utama server web Apache dan instruksikan Apache di mana menemukan host virtual di dalam direktori yang mendukung situs.

sudo vim /etc/httpd/conf/httpd.conf

Tambahkan baris seperti yang ditunjukkan di bagian paling akhir file konfigurasi.

IncludeOptional sites-enabled/*.conf

Simpan dan keluar.

Sekarang buat file host virtual seperti yang ditunjukkan:

sudo vim /etc/httpd/sites-available/crazytechgeek.info

Tempel konten di bawah ini dan ganti crazytechgeek.info dengan nama domain Anda sendiri.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Simpan dan keluar dari file.

Sekarang aktifkan file host virtual dengan membuat tautan simbolik di direktori sites-enabled.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Menyesuaikan Izin SELinux untuk Host Virtual

CentOS 8 dan RHEL 8 dikirimkan bersama SELinux yang merupakan modul keamanan untuk memperkuat keamanan sistem Linux. Karena Anda mengonfigurasi direktori log khusus pada langkah sebelumnya, Anda perlu memperbarui beberapa kebijakan SELinux untuk memerintahkan server web Apache menulis ke direktori tersebut.

Ada 2 pendekatan dalam menyesuaikan kebijakan SELinux Apache: Menyesuaikan kebijakan penyesuaian secara universal & kebijakan pada direktori. Yang terakhir ini lebih disukai karena lebih disukai.

Menyesuaikan Kebijakan SELinux pada Direktori

Mengedit izin SELinux untuk direktori log memberi Anda kendali penuh atas kebijakan server web Apache. Metode ini cukup panjang dan mengharuskan Anda mengonfigurasi tipe konteks secara manual untuk direktori tambahan yang ditentukan dalam file konfigurasi host virtual.

Sebelum memulai, konfirmasikan terlebih dahulu jenis konteks yang ditetapkan ke direktori log oleh SELinux:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Outputnya harus serupa dengan yang kita miliki di bawah.

Dari keluarannya, konteks yang ditetapkan adalah httpd_sys_content_t. Hal ini menunjukkan bahwa server web hanya dapat membaca file di direktori log. Anda perlu mengubah konteks ini menjadi httpd_log_t agar Apache dapat menghasilkan dan menambahkan entri log ke direktori.

Oleh karena itu, jalankan perintah:

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Jika Anda kebetulan mendapatkan error di bawah “semanage: command not found”.

Ini menyiratkan bahwa paket yang menyediakan perintah semanage tidak diinstal. Untuk memperbaiki kesalahan ini, Anda perlu menginstal paket-paket tersebut. Tapi pertama-tama, periksa paket mana yang menyediakan perintah semanage dengan menjalankan:

sudo dnf whatprovides /usr/sbin/semanage

Outputnya memberi kita paket yang menyediakan semanage, yaitu policycoreutils-python-utils.

Sekarang instal paket seperti yang ditunjukkan menggunakan manajer paket DNF.

sudo dnf install policycoreutils-python-utils

Perintah untuk mengubah konteks sekarang seharusnya berfungsi.

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Untuk menyimpan perubahan dan membuatnya tetap ada, jalankan perintah restorecon seperti yang ditunjukkan:

sudo restorecon -R -v /var/www/crazytechgeek.info/log

Anda dapat mengonfirmasi perubahan dengan menjalankan perintah sekali lagi:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Pastikan untuk mencatat bahwa tipe konteks telah berubah menjadi httpd_log_t seperti yang terlihat pada output.

Mulai ulang Apache agar perubahan diterapkan.

sudo systemctl restart httpd

Anda sekarang dapat mengonfirmasi apakah Apache menyimpan file log di direktori log dengan mencantumkan isinya seperti yang ditunjukkan:

ls -l /var/www/crazytechgeek.info/log/

Anda seharusnya dapat melihat dua file log seperti yang ditunjukkan: log kesalahan dan file log permintaan.

Menguji Host Virtual Apache

Terakhir, Anda perlu memastikan bahwa server web Apache menyajikan file host virtual Anda. Untuk melakukan ini, buka browser Anda dan buka alamat IP atau nama domain server Anda:

http://domain-name

Sempurna! Ini menunjukkan bahwa semuanya berjalan dengan baik dan host virtual kami dilayani seperti yang diharapkan.

Kesimpulan

Dalam panduan ini, kita telah mempelajari cara menginstal server web Apache di CentOS 8 dan RHEL 8 dan juga cara mengonfigurasi file host virtual ke menyajikan konten untuk domain tambahan. Jangan ragu untuk mengonfigurasi beberapa file host virtual sesuai keinginan Anda untuk mengakomodasi domain tambahan.

Jika Anda ingin menyiapkan tumpukan hosting lengkap, saya sarankan Anda menginstal tumpukan LAMP di CentOS 8.