Praktikum Web Server - Ubuntu 24.04

📌 Tujuan Praktikum

Setelah mengikuti praktikum ini, Anda diharapkan mampu:

  • Memahami fungsi dan cara kerja Web Server
  • Menginstall dan mengkonfigurasi Apache2 sebagai Web Server
  • Menginstall dan mengkonfigurasi PHP untuk pemrosesan dinamis
  • Menginstall dan mengkonfigurasi MariaDB sebagai Database Server
  • Menginstall dan mengkonfigurasi phpMyAdmin untuk manajemen database
  • Membuat website sederhana dan mengujinya melalui browser
1. Fungsi Web Server Teori

Web Server adalah perangkat lunak (software) yang berfungsi untuk menerima permintaan (request) dari client (browser) melalui protokol HTTP/HTTPS dan memberikan respon berupa halaman web (HTML, CSS, JavaScript, gambar, video, dll).

Analogi Web Server:

Web Server seperti "restoran". Client (pengunjung) datang dan memesan makanan (request). Restoran (Web Server) akan menyiapkan makanan (halaman web) dan menyajikannya kepada pengunjung. Jika restorannya bagus (server cepat), pengunjung akan senang dan kembali lagi.

🔑 Fungsi Utama Web Server

  • Menerima Request HTTP: Menerima permintaan dari browser client
  • Memproses Request: Menjalankan script (PHP, Python, dll) jika diperlukan
  • Mengirim Response: Mengirimkan halaman web ke client
  • Menyimpan File Statis: Menyimpan file HTML, CSS, JS, gambar, dll
  • Manajemen Session: Mengelola session user untuk login/logout
  • Keamanan: Melindungi server dari serangan (firewall, SSL, dll)

📋 Komponen Web Server pada Praktikum Ini

  • Apache2: Web Server utama yang menerima dan merespon request
  • PHP: Bahasa pemrograman untuk membuat halaman web dinamis
  • MariaDB: Database untuk menyimpan data website
  • phpMyAdmin: Antarmuka web untuk mengelola database MariaDB
💡 Istilah Penting:
  • HTTP (Hypertext Transfer Protocol): Protokol komunikasi antara client dan server
  • HTTPS (HTTP Secure): Versi aman dari HTTP dengan enkripsi SSL/TLS
  • Virtual Host: Kemampuan menjalankan beberapa website dalam satu server
  • Document Root: Folder tempat file website disimpan
2. Skenario & Topologi Desain

Pada praktikum ini, kita akan membangun sebuah Web Server dengan spesifikasi berikut:

KomponenKeterangan
Sistem OperasiUbuntu Server 24.04 LTS
IP Address Server192.168.10.20/24
Gateway192.168.10.1
Web ServerApache2
Bahasa PemrogramanPHP 8.x
DatabaseMariaDB 10.x
Manajemen DatabasephpMyAdmin
Domainsmk-tkj.lmn (dari DNS Server sebelumnya)
ClientKomputer dalam satu jaringan (192.168.10.0/24)
Topologi Jaringan Web Server
Gambar 1: Topologi Jaringan Web Server
Keterangan Topologi:
  • Router → Gateway (192.168.10.1) dan sumber jaringan
  • Switch → Menghubungkan semua perangkat dalam satu jaringan
  • Web Server → Server dengan IP 192.168.10.20 menjalankan Apache + PHP + MariaDB
  • Client → Komputer yang mengakses website melalui browser
3. Install Apache2 Step 1

Apache2 adalah Web Server yang paling populer dan banyak digunakan di dunia. Langkah pertama kita adalah menginstall Apache2.

📝 Langkah-langkah Install Apache2

1. Update repository dan install Apache2:

sudo apt update
sudo apt install apache2 -y

2. Cek status Apache2:

sudo systemctl status apache2
💡 Catatan: Untuk keluar dari tampilan status, tekan Ctrl + C atau q.

3. Cek versi Apache2:

apache2 -v

4. Uji coba akses dari browser:

Buka browser dan ketik alamat: http://192.168.10.20

Jika berhasil, akan muncul halaman default Apache2 "It Works!".

✅ Apache2 berhasil diinstall! Web Server sudah berjalan di port 80.

📁 Struktur Folder Apache2

FolderFungsi
/etc/apache2/Folder konfigurasi utama Apache2
/var/www/html/Document Root (folder tempat file website)
/etc/apache2/sites-available/Konfigurasi Virtual Host
/etc/apache2/sites-enabled/Virtual Host yang aktif
/var/log/apache2/Folder log (error.log, access.log)
4. Install PHP Step 2

PHP (Hypertext Preprocessor) adalah bahasa pemrograman yang digunakan untuk membuat halaman web dinamis. PHP akan diproses di sisi server sebelum dikirim ke client.

📝 Langkah-langkah Install PHP

1. Install PHP beserta modul-modul pendukung:

sudo apt install php php-mysql php-xml php-curl php-zip php-gd php-intl php-mbstring php-cli -y
📖 Penjelasan Modul PHP:
  • php-mysql → Koneksi ke database MySQL/MariaDB
  • php-xml → Parsing file XML
  • php-curl → Mengirim request HTTP dari PHP
  • php-zip → Manipulasi file ZIP
  • php-gd → Manipulasi gambar (resize, crop, dll)
  • php-intl → Internasionalisasi (format angka, tanggal)
  • php-mbstring → Mendukung multibyte string (UTF-8)
  • php-cli → Menjalankan PHP dari command line

2. Restart Apache2 agar modul PHP terbaca:

sudo systemctl restart apache2

3. Cek versi PHP:

php -v

4. Uji coba PHP dengan membuat file info:

sudo echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

5. Akses dari browser:

Buka browser dan ketik alamat: http://192.168.10.20/info.php

Jika berhasil, akan muncul halaman informasi PHP.

⚠️ Keamanan: Setelah selesai uji coba, hapus file info.php karena bisa menjadi celah keamanan:
sudo rm /var/www/html/info.php
✅ PHP berhasil diinstall! Server sudah bisa memproses file PHP.
5. Install MariaDB Step 3

MariaDB adalah sistem manajemen database yang merupakan fork dari MySQL. Digunakan untuk menyimpan data website secara terstruktur.

📝 Langkah-langkah Install MariaDB

1. Install MariaDB Server:

sudo apt install mariadb-server mariadb-client -y

2. Cek status MariaDB:

sudo systemctl status mariadb

3. Jalankan security script untuk mengamankan MariaDB:

sudo mysql_secure_installation
📖 Panduan menjawab mysql_secure_installation:
  • Enter current password for root: Tekan Enter (kosong)
  • Switch to unix_socket authentication: Ketik n (tidak)
  • Change the root password? Ketik y → masukkan password root (misal: P@ssw0rd123)
  • Remove anonymous users? Ketik y
  • Disallow root login remotely? Ketik y
  • Remove test database and access to it? Ketik y
  • Reload privilege tables now? Ketik y

4. Verifikasi akses MariaDB:

sudo mysql -u root -p
💡 Catatan: Masukkan password root yang sudah Anda buat pada langkah sebelumnya. Untuk keluar dari MariaDB, ketik EXIT; atau tekan Ctrl + D.
✅ MariaDB berhasil diinstall! Database Server siap digunakan.
6. Install phpMyAdmin Step 4

phpMyAdmin adalah aplikasi web berbasis PHP untuk mengelola database MariaDB/MySQL melalui antarmuka grafis (GUI) yang mudah digunakan.

📝 Langkah-langkah Install phpMyAdmin

1. Install phpMyAdmin:

sudo apt install phpmyadmin -y
📖 Panduan menjawab instalasi phpMyAdmin:
  • Pilih Web Server: Pilih apache2 (gunakan spasi untuk memilih, lalu tekan Enter)
  • Configure database for phpmyadmin with dbconfig-common? Pilih Yes
  • Password of the database's administrative user: Masukkan password root MariaDB
  • MySQL application password for phpmyadmin: Bisa dikosongkan (pilih OK)

2. Aktifkan modul PHP yang dibutuhkan:

sudo phpenmod mbstring
sudo systemctl restart apache2

3. Uji coba akses phpMyAdmin:

Buka browser dan ketik alamat: http://192.168.10.20/phpmyadmin

Login dengan username root dan password MariaDB yang sudah dibuat.

✅ phpMyAdmin berhasil diinstall! Anda bisa mengelola database melalui antarmuka web.
7. Konfigurasi Virtual Host Step 5

Virtual Host memungkinkan satu server menjalankan beberapa website dengan domain yang berbeda. Kita akan membuat Virtual Host untuk domain smk-tkj.lmn.

📝 Langkah-langkah Konfigurasi Virtual Host

1. Buat folder untuk website:

sudo mkdir -p /var/www/smk-tkj.lmn
sudo chown -R $USER:$USER /var/www/smk-tkj.lmn

2. Copy konfigurasi default:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/smk-tkj.lmn.conf

3. Edit file konfigurasi:

sudo nano /etc/apache2/sites-available/smk-tkj.lmn.conf

4. Isi dengan konfigurasi berikut:

<VirtualHost *:80>
    ServerAdmin admin@smk-tkj.lmn
    ServerName smk-tkj.lmn
    ServerAlias www.smk-tkj.lmn
    DocumentRoot /var/www/smk-tkj.lmn

    <Directory /var/www/smk-tkj.lmn>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
📖 Penjelasan Konfigurasi:
  • VirtualHost *:80 → Melayani request di port 80 (HTTP)
  • ServerName smk-tkj.lmn → Nama domain utama
  • ServerAlias www.smk-tkj.lmn → Subdomain alias
  • DocumentRoot → Folder tempat file website disimpan
  • Directory → Pengaturan akses ke folder

5. Aktifkan Virtual Host:

sudo a2ensite smk-tkj.lmn.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2

6. Buat file index.html untuk pengujian:

sudo echo "<h1>Selamat Datang di SMK TKJ!</h1>
<p>Website ini berjalan di server Ubuntu 24.04 dengan domain smk-tkj.lmn</p>" | sudo tee /var/www/smk-tkj.lmn/index.html

7. Uji coba Virtual Host:

Buka browser dan ketik alamat: http://smk-tkj.lmn

Jika berhasil, akan muncul halaman "Selamat Datang di SMK TKJ!".

✅ Virtual Host berhasil dikonfigurasi! Website dengan domain smk-tkj.lmn sudah aktif.
8. Membuat Website Sederhana (PHP + Database) Step 6

Pada bagian ini, kita akan membuat website sederhana yang terhubung ke database.

8.1 Membuat Database

Login ke MariaDB:

sudo mysql -u root -p

Jalankan perintah SQL berikut:

CREATE DATABASE sekolah;
CREATE USER 'admin_web'@'localhost' IDENTIFIED BY 'P@ssw0rd123';
GRANT ALL PRIVILEGES ON sekolah.* TO 'admin_web'@'localhost';
FLUSH PRIVILEGES;
EXIT;
📖 Penjelasan SQL:
  • CREATE DATABASE sekolah; → Membuat database bernama "sekolah"
  • CREATE USER 'admin_web'@'localhost' → Membuat user untuk akses database
  • GRANT ALL PRIVILEGES → Memberikan semua hak akses ke user

8.2 Membuat File PHP untuk Koneksi Database

Buat file /var/www/smk-tkj.lmn/index.php:

sudo nano /var/www/smk-tkj.lmn/index.php

Isi dengan kode berikut:

<?php
// Koneksi ke database
$host = 'localhost';
$user = 'admin_web';
$password = 'P@ssw0rd123';
$database = 'sekolah';

$conn = mysqli_connect($host, $user, $password, $database);

if (!$conn) {
    die("Koneksi gagal: " . mysqli_connect_error());
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SMK TKJ - Website Sekolah</title>
    <style>
        body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; }
        h1 { color: #1a6f9f; }
        .success { background: #e8f5ed; padding: 15px; border-radius: 8px; border-left: 4px solid #27ae60; }
        .info { background: #eef4fa; padding: 15px; border-radius: 8px; border-left: 4px solid #1a6f9f; margin-top: 10px; }
    </style>
</head>
<body>
    <h1>🏫 SMK TKJ - Website Sekolah</h1>
    <p>Selamat datang di website resmi SMK TKJ.</p>
    
    <div class="success">
        <strong>✅ Database Terhubung!</strong><br>
        <?php echo "Database: " . $database; ?>
    </div>

    <div class="info">
        <strong>📋 Informasi Server:</strong><br>
        <?php
        echo "Server IP: " . $_SERVER['SERVER_ADDR'] . "<br>";
        echo "Nama Server: " . $_SERVER['SERVER_NAME'] . "<br>";
        echo "PHP Version: " . phpversion();
        ?>
    </div>

    <p style="margin-top:20px; color:#5a7a9a; font-size:14px;">
        <i>Website ini berjalan di Ubuntu 24.04 dengan Apache + PHP + MariaDB</i>
    </p>
</body>
</html>

Cek di browser:

Buka browser dan ketik alamat: http://smk-tkj.lmn/index.php

Jika berhasil, akan muncul halaman website dengan informasi database terhubung.

✅ Website PHP berhasil dibuat! Server sudah terintegrasi dengan database.
9. Pengujian Web Server Step 7

Lakukan pengujian untuk memastikan semua layanan berjalan dengan baik.

9.1 Uji Apache2

sudo systemctl status apache2
curl -I http://192.168.10.20

9.2 Uji PHP

Buat file test PHP:

sudo echo "<?php phpinfo(); ?>" | sudo tee /var/www/smk-tkj.lmn/phpinfo.php

Akses: http://smk-tkj.lmn/phpinfo.php

9.3 Uji MariaDB

sudo mysql -u root -p -e "SHOW DATABASES;"

9.4 Uji phpMyAdmin

Akses: http://192.168.10.20/phpmyadmin

⚠️ Keamanan: Hapus file phpinfo.php setelah selesai uji coba:
sudo rm /var/www/smk-tkj.lmn/phpinfo.php
✅ Semua layanan berjalan dengan baik! Web Server siap digunakan.
10. Kesimpulan Selesai

Dalam praktikum ini, Anda telah berhasil melakukan:

Selanjutnya:

Setelah Web Server berhasil, Anda dapat melanjutkan ke materi berikutnya: Konfigurasi HTTPS Server untuk mengamankan website dengan SSL/TLS.