Apache: Difference between revisions
No edit summary |
|||
| (11 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
'''Apache''' adalah perangkat lunak server web (HTTP) yang bersifat ''open source'' (sumber terbuka) dan tersedia secara gratis. Perangkat lunak ini dirancang untuk memiliki performa tinggi dan merupakan turunan dari perangkat lunak server web NCSA HTTPd. Apache dikenal sebagai server web yang modular dan banyak digunakan dalam sistem operasi berbasis Linux. | |||
== Sejarah dan Etimologi == | |||
Nama Apache sering dikaitkan dengan istilah "A PatCHy" server, yang merujuk pada sifat pengembangan perangkat lunak ini sebagai pengganti atau ''patch'' dari NCSA HTTPd. Apache dikembangkan dan dikelola oleh komunitas di bawah naungan Apache Software Foundation. | |||
== Instalasi dan Manajemen Layanan == | |||
Nama paket dan manajemen layanan Apache dapat berbeda tergantung pada distribusi Linux yang digunakan: | |||
* '''Debian:''' Paket instalasi dikenal dengan nama <code>apache2</code>. Manajemen modul dilakukan menggunakan perintah <code>a2enmod</code> untuk mengaktifkan dan <code>a2dismod</code> untuk menonaktifkan, yang bekerja dengan membuat tautan simbolik dari direktori <code>/etc/apache2/mods-available/</code> ke <code>/etc/apache2/mods-enabled/</code>. | |||
* '''CentOS/Red Hat:''' Paket instalasi dikenal dengan nama <code>httpd</code>. Berkas konfigurasi utama biasanya terletak di <code>/etc/httpd/conf/httpd.conf</code>. | |||
Layanan Apache dapat dikelola menggunakan <code>systemctl</code>, dengan perintah seperti <code>systemctl start</code>, <code>systemctl status</code>, dan <code>systemctl enable</code> untuk memastikan layanan berjalan secara otomatis saat ''boot''. Secara bawaan, dokumen web (DocumentRoot) sering ditempatkan di <code>/var/www/html/</code>. | |||
== Arsitektur dan Fitur == | |||
'''Multi-Processing Modules (MPM)''' Apache menangani pemrosesan paralel dari banyak permintaan menggunakan ''Multi-Processing Modules'' (MPM). Jenis MPM yang tersedia meliputi: | |||
* '''Worker:''' Menggunakan ''thread'' (proses ringan). | |||
* '''Prefork:''' Menggunakan kumpulan proses yang dibuat terlebih dahulu. MPM ini digunakan secara baku jika modul <code>libapache2-mod-php</code> dipasang, kecuali jika menggunakan <code>php-fpm</code>. | |||
* '''Event:''' Menggunakan ''thread'' dengan manajemen koneksi yang lebih efisien, khususnya untuk koneksi ''keep-alive''. | |||
== Host Virtual (Virtual Host) == | |||
Apache mendukung penggunaan ''Host Virtual'', yang memungkinkan satu server melayani beberapa situs web sekaligus. Identifikasi situs dilakukan melalui dua metode: | |||
# '''Berbasis IP:''' Memerlukan alamat IP atau port yang berbeda untuk setiap situs. | |||
# '''Berbasis Nama:''' Mengandalkan nama domain yang dikirim oleh klien HTTP. Metode ini memungkinkan banyak situs berjalan pada satu alamat IP. Konfigurasi ''host virtual'' disimpan dalam berkas terpisah, misalnya di <code>/etc/apache2/sites-available/</code>, dan diaktifkan dengan perintah <code>a2ensite</code>. | |||
== Konfigurasi Direktori dan .htaccess == | |||
Administrator dapat mengontrol perilaku server pada direktori tertentu menggunakan blok <code><Directory></code>. Opsi yang dapat diatur meliputi <code>Options</code> (seperti <code>FollowSymlinks</code> untuk mengikuti tautan simbolik atau <code>Indexes</code> untuk menampilkan daftar isi direktori) dan <code>AllowOverride</code>. Berkas <code>.htaccess</code> digunakan untuk menerapkan konfigurasi pada tingkat direktori tanpa mengubah konfigurasi global, meskipun penggunaannya dibatasi oleh direktif <code>AllowOverride</code>. | |||
== Keamanan dan Autentikasi == | |||
=== '''Identitas Pengguna''' === | |||
Secara baku, Apache menangani permintaan di bawah identitas pengguna <code>www-data</code> (pada sistem Debian) untuk membatasi dampak keamanan jika terjadi kerentanan pada skrip. Modul seperti <code>suexec</code> atau <code>mpm-itk</code> memungkinkan eksekusi skrip atau ''host virtual'' menggunakan identitas pengguna yang berbeda untuk isolasi yang lebih baik. | |||
=== '''Enkripsi SSL/TLS''' === | |||
Apache mendukung HTTPS melalui modul <code>mod_ssl</code>. Untuk melayani beberapa situs HTTPS pada satu alamat IP, Apache mendukung ekstensi protokol ''Server Name Indication'' (SNI), yang memungkinkan peramban mengirimkan nama ''host'' selama proses ''handshake'' SSL. Konfigurasi SSL melibatkan penentuan lokasi sertifikat (<code>SSLCertificateFile</code>) dan kunci privat (<code>SSLCertificateKeyFile</code>). | |||
=== '''Kontrol Akses''' === | |||
Pembatasan akses dapat dilakukan berdasarkan alamat IP menggunakan direktif <code>Require</code> (pada Apache 2.4) atau sintaks <code>Order</code>, <code>Allow</code>, <code>Deny</code> (pada versi yang lebih lama). Apache juga menyediakan fitur autentikasi dasar (Basic Authentication) melalui modul <code>mod_auth*</code>, di mana pengguna dan kata sandi disimpan dalam berkas yang dikelola oleh utilitas <code>htpasswd</code>. Namun, metode ini mengirimkan kata sandi dalam format teks (base64) dan disarankan untuk digunakan bersama enkripsi SSL. | |||
=== '''Dukungan Bahasa Pemrograman''' === | |||
Apache dapat diintegrasikan dengan berbagai bahasa pemrograman sisi server. Sebagai contoh, dukungan untuk PHP dapat ditambahkan dengan memasang paket seperti <code>libapache2-mod-php</code> atau <code>php</code>. Integrasi ini memungkinkan Apache untuk memproses skrip dinamis sebelum mengirimkan respons ke klien. | |||
==Installasi== | ==Installasi== | ||
sudo apt update | sudo apt update | ||
| Line 5: | Line 49: | ||
sudo apt install -y apache2 apache2-utils | sudo apt install -y apache2 apache2-utils | ||
==Membuat Virtual Host dan directory root== | |||
sudo mkdir -p /var/www/html/test | |||
sudo chown -R $USER:$USER /var/www/html/test | |||
sudo chmod -R 755 /var/www/html/test | |||
Membuat virtual host | |||
sudo vim /etc/apache2/sites-available/test.conf | |||
Copy code berikut pada virtual host | |||
ServerAdmin admin@example.com | |||
ServerName example.com | |||
ServerAlias www.example.com | |||
DocumentRoot /var/www/html/test | |||
ErrorLog ${APACHE_LOG_DIR}/error.log | |||
CustomLog ${APACHE_LOG_DIR}/access.log combined | |||
Setalah selesai, sekarang aktifkan virtula host dengan menggunakan perintah | |||
sudo a2ensite test.conf | |||
sudo systemctl reload apache2 | |||
==Terkait== | ==Terkait== | ||
| Line 10: | Line 81: | ||
*[[Apache:Virtual Host]] | *[[Apache:Virtual Host]] | ||
*[[Apache:Virtual Host Sederhana]] | *[[Apache:Virtual Host Sederhana]] | ||
*[[Apache Traffic Server]] | |||
*[[Apache:HSTS Header]] | |||
*[[Apache:SSL Origin Cloudflare]] | |||
==Source== | ==Source== | ||
*[https://www.linuxbabe.com/ubuntu/install-lamp-stack-ubuntu-20-04-server-desktop linuxbabe.com] | *[https://www.linuxbabe.com/ubuntu/install-lamp-stack-ubuntu-20-04-server-desktop linuxbabe.com] | ||
*[https://appkey.id/pembuatan-website/server-hosting/apache-adalah/ appkey.id] | |||
*[https://markey.id/blog/technology/apache-adalah markey.id] | |||
*[https://www.techrepublic.com/article/how-to-use-the-apache-web-server-to-install-and-configure-a-website/ techrepublic.com] | |||
[[Category:Server]] | [[Category:Server]] | ||
[[Category:Website]] | [[Category:Website]] | ||
[[Category:Web Server]] | |||
[[Category:Apache]] | |||