Jump to content

Apache: Difference between revisions

From Wiki
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Apache adalah perangkat lunak (software) server web open-source gratis yang sempat mendukung kurang lebih 46% website di seluruh dunia pada tahun 2019. Nama resmi adalah Apache HTTP Server. Apache dikelola dan dikembangkan oleh Apache Software Foundation.
'''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.


Apache memungkinkan pemilik website untuk menyajikan konten di website– karenanya dinamai “server web”. Ini adalah salah satu server website tertua dan paling dapat diandalkan, dengan versi pertama dirilis lebih dari 20 tahun yang lalu, pada tahun 1995.
== 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.


Ketika seseorang ingin mengunjungi website, mereka memasukkan nama domain ke bagian alamat browser mereka. Kemudian, server web mengirimkan file yang diminta dengan bertindak sebagai pengirim pengiriman virtual.
== Instalasi dan Manajemen Layanan ==
Nama paket dan manajemen layanan Apache dapat berbeda tergantung pada distribusi Linux yang digunakan:


==Kelebihan dan Kekurangan==
* '''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>.
Setiap web server memiliki kelebihan dan kekurangannya masing-masing, termasuk Apache. Kelebihan Apache yang wajib Anda ketahui sebelum menggunakannya sebagai web server pilihan antara lain:
* '''CentOS/Red Hat:''' Paket instalasi dikenal dengan nama <code>httpd</code>. Berkas konfigurasi utama biasanya terletak di <code>/etc/httpd/conf/httpd.conf</code>.


*Bersifat lintas platform serta mendukung sistem WordPress.
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>.
*Bersifat open source atau berlisensi gratis.
*Mudah untuk dikonfigurasi.
*Software bersifat lebih stabil dan patch security yang sering diupdate.
*Mempunyai dokumentasi lengkap serta komunitas besar.


Sementara kekurangan dari Apache adalah:
== Arsitektur dan Fitur ==
'''Multi-Processing Modules (MPM)''' Apache menangani pemrosesan paralel dari banyak permintaan menggunakan ''Multi-Processing Modules'' (MPM). Jenis MPM yang tersedia meliputi:


*Performa website bisa terganggu dalam kondisi trafik tinggi ke sebuah website.
* '''Worker:''' Menggunakan ''thread'' (proses ringan).
*Masih ada sejumlah konfigurasi yang belum dioptimalkan, sehingga berdampak pada keamanan yang agak rentan.
* '''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==


<syntaxhighlight lang="bash">
sudo apt update
sudo apt update
</syntaxhighlight>


<syntaxhighlight lang="bash">
sudo apt upgrade
sudo apt upgrade
</syntaxhighlight>


<syntaxhighlight lang="bash">
sudo apt install -y apache2 apache2-utils
sudo apt install -y apache2 apache2-utils
</syntaxhighlight>


==Membuat Virtual Host dan directory root==
==Membuat Virtual Host dan directory root==


<syntaxhighlight lang="bash">
sudo mkdir -p /var/www/html/test
sudo mkdir -p /var/www/html/test
</syntaxhighlight>


<syntaxhighlight lang="bash">
sudo chown -R $USER:$USER /var/www/html/test
sudo chown -R $USER:$USER /var/www/html/test
</syntaxhighlight>


<syntaxhighlight lang="bash">
sudo chmod -R 755 /var/www/html/test
sudo chmod -R 755 /var/www/html/test
</syntaxhighlight>


Membuat virtual host
Membuat virtual host


<syntaxhighlight lang="bash">
sudo vim /etc/apache2/sites-available/test.conf
sudo vim /etc/apache2/sites-available/test.conf
</syntaxhighlight>


Copy code berikut pada virtual host
Copy code berikut pada virtual host


<syntaxhighlight lang="bash" line="1">
  ServerAdmin admin@example.com
ServerAdmin admin@example.com
  ServerName example.com
ServerName example.com
  ServerAlias www.example.com
ServerAlias www.example.com
  DocumentRoot /var/www/html/test
DocumentRoot /var/www/html/test
  ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
CustomLog ${APACHE_LOG_DIR}/access.log combined
</syntaxhighlight>


Setalah selesai, sekarang aktifkan virtula host dengan menggunakan perintah
Setalah selesai, sekarang aktifkan virtula host dengan menggunakan perintah


<syntaxhighlight lang="bash">
sudo a2ensite test.conf
sudo a2ensite test.conf
</syntaxhighlight>


<syntaxhighlight lang="bash">
sudo systemctl reload apache2
sudo systemctl reload apache2
</syntaxhighlight>


==Terkait==
==Terkait==

Latest revision as of 13:15, 12 December 2025

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 apache2. Manajemen modul dilakukan menggunakan perintah a2enmod untuk mengaktifkan dan a2dismod untuk menonaktifkan, yang bekerja dengan membuat tautan simbolik dari direktori /etc/apache2/mods-available/ ke /etc/apache2/mods-enabled/.
  • CentOS/Red Hat: Paket instalasi dikenal dengan nama httpd. Berkas konfigurasi utama biasanya terletak di /etc/httpd/conf/httpd.conf.

Layanan Apache dapat dikelola menggunakan systemctl, dengan perintah seperti systemctl start, systemctl status, dan systemctl enable untuk memastikan layanan berjalan secara otomatis saat boot. Secara bawaan, dokumen web (DocumentRoot) sering ditempatkan di /var/www/html/.

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 libapache2-mod-php dipasang, kecuali jika menggunakan php-fpm.
  • 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:

  1. Berbasis IP: Memerlukan alamat IP atau port yang berbeda untuk setiap situs.
  2. 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 /etc/apache2/sites-available/, dan diaktifkan dengan perintah a2ensite.

Konfigurasi Direktori dan .htaccess

Administrator dapat mengontrol perilaku server pada direktori tertentu menggunakan blok <Directory>. Opsi yang dapat diatur meliputi Options (seperti FollowSymlinks untuk mengikuti tautan simbolik atau Indexes untuk menampilkan daftar isi direktori) dan AllowOverride. Berkas .htaccess digunakan untuk menerapkan konfigurasi pada tingkat direktori tanpa mengubah konfigurasi global, meskipun penggunaannya dibatasi oleh direktif AllowOverride.

Keamanan dan Autentikasi

Identitas Pengguna

Secara baku, Apache menangani permintaan di bawah identitas pengguna www-data (pada sistem Debian) untuk membatasi dampak keamanan jika terjadi kerentanan pada skrip. Modul seperti suexec atau mpm-itk memungkinkan eksekusi skrip atau host virtual menggunakan identitas pengguna yang berbeda untuk isolasi yang lebih baik.

Enkripsi SSL/TLS

Apache mendukung HTTPS melalui modul mod_ssl. 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 (SSLCertificateFile) dan kunci privat (SSLCertificateKeyFile).

Kontrol Akses

Pembatasan akses dapat dilakukan berdasarkan alamat IP menggunakan direktif Require (pada Apache 2.4) atau sintaks Order, Allow, Deny (pada versi yang lebih lama). Apache juga menyediakan fitur autentikasi dasar (Basic Authentication) melalui modul mod_auth*, di mana pengguna dan kata sandi disimpan dalam berkas yang dikelola oleh utilitas htpasswd. 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 libapache2-mod-php atau php. Integrasi ini memungkinkan Apache untuk memproses skrip dinamis sebelum mengirimkan respons ke klien.

Installasi

sudo apt update
sudo apt upgrade
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

Source