Pages

Sunday, July 27, 2025

ASJ - Web Server (BAB 8) (Kelas X)


(BAB 8) (Kelas X)
Web Server

Kompetensi Dasar

3.8 Memahami konsep web server, cara kerja, serta mampu menginstalasi dan mengkonfigurasi web server populer seperti Apache atau Nginx.

4.8 Mampu mengelola virtual host, menempatkan dan menguji konten website, serta mengamankan web server dasar.
Pendahuluan

Setelah Anda menjelajahi berbagai layanan jaringan yang esensial untuk komunikasi dan penyimpanan data, kini saatnya untuk memahami Web Server, pilar utama dari World Wide Web. Di era digital saat ini, hampir setiap informasi dan interaksi daring yang kita lakukan, mulai dari membaca berita hingga berbelanja online, dimediasi oleh web server. Ini adalah layanan yang memungkinkan Anda mengakses website dengan mengetikkan alamat domain di peramban.

Modul ini akan membimbing Anda untuk mempelajari konsep dasar web server, bagaimana ia melayani konten website kepada jutaan pengguna di seluruh dunia. Anda akan dibekali dengan kemampuan praktis untuk menginstalasi dan mengkonfigurasi web server populer seperti Apache HTTP Server dan Nginx, yang merupakan dua web server paling banyak digunakan di dunia. Lebih lanjut, Anda akan belajar cara mengelola Virtual Host, sebuah fitur krusial yang memungkinkan satu server melayani banyak website berbeda. Anda juga akan mampu menempatkan konten website dan melakukan pengujian untuk memastikan website Anda dapat diakses dengan baik. Dengan menguasai bab ini, Anda akan memiliki dasar yang kuat untuk menerbitkan dan mengelola konten web Anda sendiri.
A. Definisi dan Konsep Dasar Web Server

Web server adalah program komputer yang melayani file website kepada peramban web klien.

Definisi Web Server:
Web Server adalah perangkat lunak (atau kombinasi perangkat keras dan perangkat lunak) yang menerima permintaan HTTP dari klien (web browser), dan meresponsnya dengan mengirimkan konten web seperti halaman HTML, gambar, stylesheet, atau script. Tujuan utamanya adalah untuk host website dan melayani kontennya melalui internet atau intranet.


Tujuan dan Kegunaan Web Server:

Melayani Konten Website: Fungsi inti web server adalah menyimpan file website (HTML, CSS, JavaScript, gambar, video) dan mengirimkannya ke peramban web ketika diminta.


Menjalankan Aplikasi Web: Web server dapat bekerja sama dengan application server (seperti PHP-FPM, Node.js, Python Gunicorn) untuk menjalankan aplikasi web dinamis.


Load Balancing: Beberapa web server modern (terutama Nginx) dapat berfungsi sebagai reverse proxy dan load balancer untuk mendistribusikan lalu lintas ke beberapa backend server.


Caching: Menyimpan salinan konten yang sering diminta untuk mempercepat respons.


Keamanan: Mendukung SSL/TLS untuk koneksi terenkripsi (HTTPS), otentikasi pengguna, dan pembatasan akses.


Logging: Merekam semua permintaan, respons, dan kesalahan yang terjadi, yang berguna untuk analisis dan troubleshooting.

Cara Kerja Web Server:

Permintaan Klien (HTTP Request): Ketika Anda mengetik URL (http://www.example.com) di peramban, peramban Anda (klien) mengirimkan permintaan HTTP ke web server yang host www.example.com.


Resolusi Nama Domain: Sebelum permintaan dikirim, web browser menggunakan DNS untuk menerjemahkan nama domain (www.example.com) menjadi alamat IP web server.


Membangun Koneksi: Setelah mendapatkan alamat IP, peramban membuat koneksi TCP ke web server (secara default pada port 80 untuk HTTP atau port 443 untuk HTTPS).


Memproses Permintaan: Web server menerima permintaan, mengidentifikasi file yang diminta (misalnya, index.html), dan memeriksa izin akses.


Mencari Konten: Jika file ditemukan dan diizinkan, web server mengambil file tersebut dari local file system atau memicu eksekusi script aplikasi (misalnya, PHP, Python).


Mengirim Respons (HTTP Response): Web server mengirimkan respons HTTP kembali ke peramban klien, yang berisi file yang diminta atau pesan kesalahan (misalnya, "404 Not Found").


Menampilkan Konten: Peramban menerima respons dan menampilkan konten website kepada pengguna.
B. Instalasi dan Konfigurasi Web Server Populer

Ada dua web server yang sangat populer: Apache HTTP Server dan Nginx. Keduanya memiliki kekuatan dan kasus penggunaan yang berbeda.
1. Apache HTTP Server

Apache adalah web server paling tua dan paling banyak digunakan. Dikenal karena fleksibilitas, modularitas, dan dukungan .htaccess untuk konfigurasi per-directory.
Instalasi Apache (Ubuntu/Debian):

sudo apt update
sudo apt install apache2 -y



Setelah instalasi, Apache akan otomatis berjalan. Anda bisa memeriksanya dengan:

sudo systemctl status apache2



Secara default, web server Apache akan melayani konten dari direktori /var/www/html.
Konfigurasi Dasar Apache:

File Konfigurasi Utama: /etc/apache2/apache2.conf


Konfigurasi Virtual Host: Direktori /etc/apache2/sites-available/. File konfigurasi individual diakhiri dengan .conf.

Contoh file default: /etc/apache2/sites-available/000-default.conf


Aktifkan site: sudo a2ensite <nama_file_config_anda>.conf


Nonaktifkan site: sudo a2dissite <nama_file_config_anda>.conf

Modul Apache: Direktori /etc/apache2/mods-available/ dan /etc/apache2/mods-enabled/.

Aktifkan modul: sudo a2enmod <nama_modul>


Nonaktifkan modul: sudo a2dismod <nama_modul>
Struktur Direktori Penting Apache:

/var/www/html: Direktori root dokumen web default.


/etc/apache2/: Direktori konfigurasi Apache.


/var/log/apache2/: Direktori log akses dan error.
2. Nginx

Nginx (dibaca "engine-x") adalah web server ringan, berkinerja tinggi, dan reverse proxy. Sering digunakan untuk melayani file statis dengan cepat dan sebagai load balancer atau reverse proxy di depan application server.
Instalasi Nginx (Ubuntu/Debian):

sudo apt update
sudo apt install nginx -y



Setelah instalasi, Nginx akan otomatis berjalan. Anda bisa memeriksanya dengan:

sudo systemctl status nginx



Secara default, Nginx akan melayani konten dari direktori /var/www/html.
Konfigurasi Dasar Nginx:

File Konfigurasi Utama: /etc/nginx/nginx.conf


Konfigurasi Server Blocks (Virtual Host): Direktori /etc/nginx/sites-available/.

Simbolik link ke /etc/nginx/sites-enabled/ untuk mengaktifkan.


Aktifkan site: sudo ln -s /etc/nginx/sites-available/<nama_file_config> /etc/nginx/sites-enabled/


Nonaktifkan site: sudo rm /etc/nginx/sites-enabled/<nama_file_config>

Uji Sintaks Konfigurasi: Sebelum restart, selalu uji sintaks konfigurasi:
sudo nginx -t


Struktur Direktori Penting Nginx:

/var/www/html: Direktori root dokumen web default.


/etc/nginx/: Direktori konfigurasi Nginx.


/var/log/nginx/: Direktori log akses dan error.

Setelah setiap perubahan konfigurasi pada Apache atau Nginx, Anda harus me-restart layanannya:

Apache: sudo systemctl restart apache2


Nginx: sudo systemctl restart nginx
C. Mengelola Virtual Host

Virtual Host (untuk Apache) atau Server Blocks (untuk Nginx) adalah fitur yang memungkinkan satu web server melayani banyak website (nama domain) yang berbeda dari satu alamat IP.

Konsep Virtual Host:

Bayangkan Anda memiliki satu server fisik, tetapi Anda ingin host websitebaru.com dan websiteanda.com di server yang sama. Virtual host memungkinkan hal ini dengan mengidentifikasi permintaan berdasarkan nama domain yang diminta oleh peramban klien.


Setiap virtual host memiliki konfigurasinya sendiri, termasuk document root (lokasi file website), log file, dan pengaturan khusus lainnya.

Langkah-langkah Membuat Virtual Host (Contoh: Apache):

Buat Direktori untuk Website Baru:
sudo mkdir -p /var/www/websitebaru.com/html
sudo chown -R $USER:$USER /var/www/websitebaru.com/html
sudo chmod -R 755 /var/www/websitebaru.com




Buat File HTML Sederhana:
echo "<h1>Halo dari websitebaru.com!</h1>" | sudo tee /var/www/websitebaru.com/html/index.html




Buat File Konfigurasi Virtual Host:

Salin template default atau buat baru:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/websitebaru.com.conf




Edit sudo nano /etc/apache2/sites-available/websitebaru.com.conf:
<VirtualHost *:80>
ServerAdmin webmaster@websitebaru.com
ServerName websitebaru.com
ServerAlias www.websitebaru.com
DocumentRoot /var/www/websitebaru.com/html

ErrorLog ${APACHE_LOG_DIR}/websitebaru.com_error.log
CustomLog ${APACHE_LOG_DIR}/websitebaru.com_access.log combined

<Directory /var/www/websitebaru.com/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>



Aktifkan Virtual Host dan Restart Apache:
sudo a2ensite websitebaru.com.conf
sudo apache2ctl configtest # Uji sintaks
sudo systemctl restart apache2



Langkah-langkah Membuat Server Block (Contoh: Nginx):

Buat Direktori untuk Website Baru:
sudo mkdir -p /var/www/websitebaru.com/html
sudo chown -R $USER:$USER /var/www/websitebaru.com/html
sudo chmod -R 755 /var/www/websitebaru.com




Buat File HTML Sederhana:
echo "<h1>Halo dari websitebaru.com (Nginx)!</h1>" | sudo tee /var/www/websitebaru.com/html/index.html




Buat File Konfigurasi Server Block:

Edit sudo nano /etc/nginx/sites-available/websitebaru.com:
server {
listen 80;
listen [::]:80;

root /var/www/websitebaru.com/html;
index index.html index.htm index.nginx-debian.html;

server_name websitebaru.com www.websitebaru.com;

location / {
try_files $uri $uri/ =404;
}

access_log /var/log/nginx/websitebaru.com_access.log;
error_log /var/log/nginx/websitebaru.com_error.log;
}



Aktifkan Server Block dan Restart Nginx:
sudo ln -s /etc/nginx/sites-available/websitebaru.com /etc/nginx/sites-enabled/
sudo nginx -t # Uji sintaks
sudo systemctl restart nginx


D. Menempatkan dan Menguji Website

Setelah web server dikonfigurasi, langkah selanjutnya adalah menempatkan konten website dan menguji aksesibilitasnya.

Menempatkan Konten Website:

Konten website (file HTML, CSS, JavaScript, gambar, dll.) harus ditempatkan di direktori DocumentRoot (Apache) atau root (Nginx) yang telah Anda tentukan di konfigurasi virtual host atau server block.


Anda dapat menyalin file secara manual, menggunakan FTP, SCP, atau Git untuk deployment.


Pastikan izin file system untuk file dan direktori website memungkinkan web server untuk membaca file tersebut (biasanya www-data user/group untuk Apache/Nginx di Debian/Ubuntu, atau IUSR user/group di Windows IIS).

Menguji Website:

Konfigurasi DNS Lokal (untuk Pengujian):

Jika Anda menguji virtual host dengan nama domain seperti websitebaru.com yang belum terdaftar di DNS publik, Anda bisa mengedit file hosts di komputer klien Anda.


Windows: C:\Windows\System32\drivers\etc\hosts


Linux/macOS: /etc/hosts


Tambahkan baris berikut:
<Alamat_IP_Web_Server_Anda> websitebaru.com www.websitebaru.com

Ini akan membuat peramban Anda mengarahkan websitebaru.com langsung ke web server Anda tanpa melalui DNS publik.

Pengujian Menggunakan Web Browser:

Buka web browser Anda.


Ketikkan alamat IP web server Anda (misalnya, http://192.168.1.10) atau nama domain virtual host Anda (misalnya, http://websitebaru.com).


Verifikasi bahwa halaman website yang diharapkan muncul.

Pengujian Menggunakan Perintah curl atau wget:

Ini adalah alat command-line yang berguna untuk menguji konektivitas dan mendapatkan konten web.

curl http://<alamat_ip_web_server>
curl http://<nama_domain_virtual_host> -H "Host: <nama_domain_virtual_host>" # Penting untuk virtual host



Memeriksa Log Web Server:

Periksa log akses dan error web server Anda untuk melihat permintaan yang masuk dan masalah yang mungkin terjadi.


Apache: /var/log/apache2/access.log dan /var/log/apache2/error.log (atau log spesifik virtual host).


Nginx: /var/log/nginx/access.log dan /var/log/nginx/error.log (atau log spesifik server block).
E. Pemecahan Masalah (Troubleshooting) Web Server

Beberapa masalah umum dapat terjadi pada web server.

"Situs Tidak Dapat Dijangkau" atau "Koneksi Ditolak":

Gejala: Peramban tidak dapat terhubung ke web server.


Penyebab:

Layanan web server tidak berjalan (Apache/Nginx).


Firewall memblokir port 80 (HTTP) atau 443 (HTTPS) pada server.


Alamat IP server salah atau tidak dapat dijangkau.

Solusi:

Periksa status layanan (sudo systemctl status apache2 atau sudo systemctl status nginx).


Periksa aturan firewall (misalnya, sudo ufw status di Linux, atau Windows Defender Firewall).


Ping alamat IP server.

Kesalahan "403 Forbidden":

Gejala: Klien dapat terhubung, tetapi web server menolak akses ke konten.


Penyebab:

Izin file system pada direktori atau file website tidak benar (misalnya, web server tidak punya izin baca).


Kesalahan konfigurasi DocumentRoot atau root yang salah menunjuk ke direktori yang tidak ada atau tidak dapat diakses.


Pengaturan Directory (Apache) atau location (Nginx) membatasi akses.

Solusi:

Periksa izin file dan direktori website (ls -l). Pastikan web server user (misalnya, www-data) memiliki izin baca dan eksekusi pada direktori, serta baca pada file.


Verifikasi DocumentRoot / root di konfigurasi virtual host / server block.

Kesalahan "404 Not Found":

Gejala: Klien dapat terhubung, tetapi web server tidak dapat menemukan file yang diminta.


Penyebab:

File yang diminta tidak ada di lokasi yang ditentukan (DocumentRoot/root).


Nama file di URL salah ketik.


Konfigurasi virtual host / server block menunjuk ke direktori yang salah.


Modul rewrite atau konfigurasi routing aplikasi web salah.

Solusi:

Periksa keberadaan dan lokasi file.


Verifikasi URL di peramban.


Periksa DocumentRoot / root di konfigurasi web server.


Lihat error log web server untuk detail lebih lanjut.

Virtual Host Tidak Berfungsi (Selalu Menampilkan Website Default):

Gejala: Meskipun Anda mengakses dengan nama domain virtual host yang benar, web server selalu menampilkan konten dari website default.


Penyebab:

Virtual host / server block baru belum diaktifkan (belum di-symlink di Nginx, belum di-a2ensite di Apache).


Web server belum di-restart setelah perubahan konfigurasi.


Kesalahan penulisan ServerName atau server_name di konfigurasi virtual host.


Prioritas virtual host (misalnya, default virtual host mungkin menangkap semua lalu lintas).


File hosts klien salah atau DNS publik belum diperbarui.

Solusi:

Aktifkan virtual host / server block.


Restart web server.


Periksa ejaan ServerName / server_name.


Pastikan ada Listen 80 (Apache) atau listen 80; (Nginx).


Bersihkan cache DNS klien atau perbaiki file hosts.
Zona Aktivitas
A. Uji Pengetahuan (Nilai Pengetahuan I)

Jelaskan fungsi utama dari sebuah web server.


Sebutkan dua web server populer yang dibahas dalam modul ini dan berikan satu keunggulan masing-masing.


Apa itu Virtual Host (atau Server Block) dalam konteks web server dan mengapa fitur ini penting?


Jelaskan bagaimana DNS berperan dalam proses akses website melalui web server.


Sebutkan dua perintah command-line yang dapat Anda gunakan di Linux untuk menguji konten yang dilayani oleh web server.
B. Praktikum (Nilai Praktik 1)

Buat kelompok dengan anggota maksimal tiga siswa. Lakukan hal berikut:

Skenario Pemilihan Web Server:

Skenario A: Sebuah website statis dengan banyak gambar dan file CSS/JS yang membutuhkan kinerja tinggi dalam melayani konten statis.


Skenario B: Sebuah website dinamis berbasis PHP yang membutuhkan dukungan .htaccess untuk mengatur routing URL tanpa mengubah konfigurasi server.


Untuk setiap skenario, web server mana (Apache atau Nginx) yang paling cocok? Jelaskan alasannya.

Identifikasi Masalah Konfigurasi:

Anda mengkonfigurasi virtual host baru untuk mywebsite.com di Apache. Setelah semua konfigurasi, ketika Anda mengakses mywebsite.com dari peramban, Anda justru melihat halaman "It Works!" dari instalasi Apache default.


Apa saja kemungkinan penyebab masalah ini? Dan bagaimana Anda akan memperbaikinya?

Presentasikan hasil kerja dan diskusi kelompok Anda di depan kelas.
E. Eksperimen (Nilai Proyek I)

Pilih salah satu dari tugas berikut:

Simulasi Instalasi dan Konfigurasi Apache Web Server dengan Virtual Host (Menggunakan Virtual Machine/Simulator):

Instal Ubuntu Server di virtual machine (VirtualBox/VMware).


Instal Apache HTTP Server (apache2).


Buat dua virtual host baru (misalnya, website1.local dan website2.local).


Buat file index.html sederhana di masing-masing document root yang mengindikasikan nama website-nya.


Aktifkan kedua virtual host tersebut.


Konfigurasi file hosts di virtual machine klien Windows atau host Anda agar dapat mengakses kedua nama domain tersebut.


Uji akses ke kedua website dari peramban klien.


Sertakan screenshot konfigurasi virtual host dan hasil pengujian akses website dalam laporan Anda (maksimal 2 halaman).

Simulasi Instalasi dan Konfigurasi Nginx Web Server dengan Server Block (Menggunakan Virtual Machine/Simulator):

Instal Ubuntu Server di virtual machine (VirtualBox/VMware).


Instal Nginx.


Buat dua server block baru (misalnya, app1.local dan app2.local).


Buat file index.html sederhana di masing-masing root directory yang mengindikasikan nama website-nya.


Aktifkan kedua server block tersebut.


Konfigurasi file hosts di virtual machine klien Windows atau host Anda agar dapat mengakses kedua nama domain tersebut.


Uji akses ke kedua website dari peramban klien.


Sertakan screenshot konfigurasi server block dan hasil pengujian akses website dalam laporan Anda (maksimal 2 halaman).
Rangkuman

Web Server adalah program yang melayani konten website (HTML, gambar, dll.) kepada web browser melalui protokol HTTP/HTTPS.


Cara kerja web server melibatkan permintaan HTTP dari klien, resolusi DNS, pembangunan koneksi, pemrosesan permintaan, dan pengiriman respons HTTP.


Dua web server populer adalah Apache HTTP Server (fleksibel, modular, .htaccess support) dan Nginx (ringan, berkinerja tinggi, baik untuk static files dan reverse proxy).


Instalasi melibatkan paket apache2 atau nginx di Linux.


Virtual Host (Apache) atau Server Blocks (Nginx) memungkinkan satu server melayani banyak website berbeda berdasarkan nama domain. Konfigurasinya melibatkan ServerName/server_name dan DocumentRoot/root.


Penempatan konten website dilakukan di direktori yang ditentukan di konfigurasi virtual host / server block. Pastikan izin file system benar.


Pengujian website dapat dilakukan melalui web browser, perintah curl/wget, dan dengan memeriksa log web server. Untuk domain lokal, modifikasi file hosts klien.


Pemecahan masalah umum meliputi server tidak berjalan, firewall memblokir port, error 403 (izin), error 404 (file tidak ditemukan), dan virtual host yang tidak berfungsi dengan benar.
Ulangan Akhir Bab 1
A. Pilihlah salah satu jawaban yang tepat.

Layanan server yang menyediakan konten website kepada peramban adalah ....
a. FTP Server
b. DNS Server
c. Web Server
d. DHCP Server
e. Database Server


Jika Anda ingin mengkonfigurasi satu web server Nginx untuk melayani dua website berbeda, blog.example.com dan shop.example.com, Anda akan menggunakan fitur ....
a. Load Balancing
b. Proxy Server
c. Server Blocks
d. Content Delivery Network
e. Database Server


Direktori default di Linux tempat Nginx menyimpan file website yang akan dilayani adalah ....
a. /etc/www/html
b. /var/html/www
c. /usr/local/nginx/html
d. /var/www/html
e. /opt/web


Perintah yang digunakan untuk mengaktifkan server block baru di Nginx setelah file konfigurasinya dibuat adalah ....
a. sudo nginx enable <nama_server_block>
b. sudo a2ensite <nama_server_block>
c. sudo ln -s /etc/nginx/sites-available/<file> /etc/nginx/sites-enabled/
d. sudo systemctl enable nginx-site
e. sudo nginxctl activate <nama_server_block>


Jika sebuah web browser menerima kesalahan "404 Not Found" saat mencoba mengakses sebuah halaman web, ini biasanya menunjukkan ....
a. Web server tidak berjalan.
b. File website tidak ditemukan di lokasi yang ditentukan.
c. Ada masalah dengan izin akses pada file atau direktori website.
d. Koneksi internet terputus.
e. Nama domain tidak dapat diresolusi.


Web server yang dikenal karena fleksibilitas, modularitas, dan dukungan .htaccess adalah ....
a. Apache
b. IIS
c. Nginx
d. Tomcat
e. Lighttpd


Untuk menguji sintaks konfigurasi Apache sebelum me-restart layanannya, perintah yang dapat Anda gunakan adalah ....
a. sudo apachectl configtest
b. sudo apache test
c. sudo apache -t
d. sudo systemctl configtest apache2
e. sudo checkconf apache


Jika Anda ingin web server Nginx di Linux dapat membaca file di direktori /var/www/aplikasiku/html, user sistem apa yang paling mungkin membutuhkan izin baca pada direktori tersebut?
a. root
b. admin
c. nginx
d. www-data
e. nobody


Apa fungsi dari perintah curl atau wget saat menguji web server dari command-line?
a. Untuk membersihkan cache DNS.
b. Untuk melakukan ping ke server.
c. Untuk mengunduh konten dari URL dan melihat respons HTTP.
d. Untuk menginstal web server.
e. Untuk mematikan layanan web server.


Jika Anda mengkonfigurasi server block Nginx baru dan web server Anda tidak dapat memulai setelah restart, salah satu langkah pertama troubleshooting yang harus Anda lakukan adalah ....
a. Memeriksa log sistem.
b. Menginstal ulang Nginx.
c. Mencoba mengakses dari peramban.
d. Memeriksa sintaks konfigurasi dengan sudo nginx -t.
e. Menyesuaikan izin file website.
B. Jawablah pertanyaan-pertanyaan berikut dengan benar.

Jelaskan secara rinci perbedaan arsitektur dan kinerja antara Apache dan Nginx, serta kapan Anda akan memilih salah satu di antaranya untuk kasus penggunaan spesifik.


Anda diminta untuk mengkonfigurasi web server Nginx di Linux untuk host sebuah website baru dengan nama domain api.perusahaan.local yang akan digunakan untuk API RESTful. Jelaskan langkah-langkah yang perlu Anda lakukan, mulai dari pembuatan direktori hingga pengujian akses dari klien.


Bagaimana Anda akan menggunakan file /etc/hosts di klien Windows untuk menguji virtual host atau server block baru yang belum memiliki entri DNS publik? Berikan contoh baris yang akan Anda tambahkan.


Jelaskan mengapa izin file system pada direktori dan file website sangat penting untuk keamanan dan fungsionalitas web server.


Anda adalah administrator web server. Sebuah website yang di-host di server Anda tiba-tiba menampilkan kesalahan "403 Forbidden" setelah Anda melakukan beberapa perubahan konfigurasi pada direktori website. Jelaskan langkah-langkah troubleshooting yang akan Anda lakukan untuk mendiagnosis dan memperbaiki masalah ini.

No comments:

Post a Comment