Administrasi Server – Integrasi Web Server, Eksekusi PHP, dan Manajemen Hak Akses File

 

Topik: Integrasi Web Server, Eksekusi PHP, dan Manajemen Hak Akses File
Alokasi Waktu: 3 SKS (150 Menit)


A. TUJUAN PEMBELAJARAN

  1. Memahami perbedaan cara web server menangani file statis (HTML) dan dinamis (PHP).
  2. Menginstal dan mengintegrasikan modul PHP ke dalam web server (Apache).
  3. Mengonfigurasi parameter krusial pada php.ini (batas ukuran upload, eksekusi, dan keamanan).
  4. Melakukan deployment aplikasi PHP sederhana menggunakan protokol SFTP.
  5. Memecahkan masalah (troubleshooting) terkait hak akses (File Permissions / Ownership) antara user OS dan user Web Server.

B. LANDASAN TEORI: “Analogi Restoran”

Untuk memahami cara kerja Web Server dan PHP, bayangkan server kita adalah sebuah Restoran, dan browser (client) adalah Pelanggan.

  • Apache / Web Server = Pelayan Restoran. Pelayan bertugas mengantarkan menu statis yang sudah jadi (seperti air mineral atau keripik). Ini adalah representasi dari file HTML, CSS, dan Gambar. Pelayan tinggal ambil dan sajikan ke pelanggan.
  • PHP = Koki di Dapur. Ketika pelanggan memesan makanan yang butuh dimasak, seperti Nasi Goreng (file .php), pelayan tidak bisa membuatnya. Jika tidak ada koki, pelayan hanya akan memberikan kertas resep ke pelanggan (kode PHP bocor di layar). Dengan menginstal PHP, kita merekrut koki. Pelayan akan memberikan pesanan ke koki, koki memasaknya, lalu memberikan makanan matang (HTML murni) ke pelayan untuk disajikan ke pelanggan.

C. LANGKAH KERJA PRAKTIKUM

Fase 1: Persiapan dan Pengujian Awal (The Trigger)

  1. Buka teks editor di komputer lokal Anda (VS Code / Sublime).
  2. Buat file form.html:
    <!DOCTYPE html>
    <html>
    <body>
        <h2>Formulir Upload File</h2>
        <form action="proses.php" method="POST" enctype="multipart/form-data">
            Nama Anda: <input type="text" name="nama" required><br><br>
            Pilih File: <input type="file" name="berkas" required><br><br>
            <input type="submit" value="Upload ke Server">
        </form>
    </body>
    </html>
  3. Buat file proses.php:
    <?php
    echo "<h1>Laporan Server!</h1>";
    echo "Pengirim: <b>" . htmlspecialchars($_POST['nama']) . "</b><br>";
    ?>
  4. Buka aplikasi FTP Client (FileZilla/WinSCP), login ke server menggunakan SFTP (Port 22).
  5. Upload kedua file tersebut ke direktori /var/www/html.
  6. Buka browser dan akses http://<IP-SERVER-ANDA>/form.html. Isi form dan klik Upload.
  7. Perhatikan apa yang terjadi: Apakah file PHP berhasil dieksekusi atau kodenya malah bocor/ter-download?

Fase 2: Instalasi Koki Server (PHP)

  1. Login ke server Anda menggunakan koneksi SSH via Terminal/PuTTY.
  2. Jalankan perintah instalasi PHP dan modul penghubungnya untuk Apache:
    sudo apt update
    sudo apt install php libapache2-mod-php
  3. Restart layanan web server agar modul baru dimuat:
    sudo systemctl restart apache2
  4. Kembali ke browser, dan refresh halaman proses.php tadi. Kodenya kini harusnya berhasil tereksekusi.

Fase 3: Eksplorasi & Modifikasi php.ini

  1. Cari tahu lokasi konfigurasi PHP Anda dengan membuat file info.php di /var/www/html berisi <?php phpinfo(); ?>. Akses di browser dan cari baris Loaded Configuration File.
  2. Edit file konfigurasi tersebut via SSH (contoh untuk PHP 8.1):
    sudo nano /etc/php/8.1/apache2/php.ini
  3. Gunakan Ctrl+W di Nano untuk mencari dan mengubah parameter berikut:
    • upload_max_filesize = 20M (Ubah batas ukuran upload jadi 20 MB)
    • post_max_size = 25M
    • display_errors = On (Agar pesan error tampil selama masa development)
    • expose_php = Off (Keamanan: Menyembunyikan versi PHP server dari luar)
  4. Simpan (Ctrl+O, Enter, Ctrl+X) dan wajib restart Apache:
    sudo systemctl restart apache2

Fase 4: Praktikum Upload File & Hak Akses (Troubleshooting)

  1. Buat folder penampungan file via SSH:
    mkdir /var/www/html/uploads
  2. Update file proses.php di komputer lokal Anda dengan menambahkan kode berikut, lalu upload ulang ke server via SFTP:
    <?php
    $nama_file = $_FILES['berkas']['name'];
    $tmp_file = $_FILES['berkas']['tmp_name'];
    $folder_tujuan = "uploads/" . $nama_file;
    
    if(move_uploaded_file($tmp_file, $folder_tujuan)) {
        echo "<span style='color:green'>SUKSES: File berhasil disimpan!</span>";
    } else {
        echo "<span style='color:red'>GAGAL: Server menolak menyimpan file.</span>";
    }
    ?>
  3. Uji coba upload file dari browser. Anda akan mendapatkan pesan GAGAL berwarna merah.
  4. Penyelesaian Masalah: Web server (Apache) berjalan menggunakan user bernama www-data, sedangkan folder uploads dibuat oleh user Anda sendiri. Berikan hak milik folder tersebut kepada Apache dengan mengeksekusi perintah ini via SSH:
    sudo chown -R www-data:www-data /var/www/html/uploads
  5. Ulangi proses upload di browser. Pesan akan berubah hijau (<span style=”color:green”>SUKSES</span>).

D. TUGAS STUDI KASUS (EVALUASI)

Skenario: “Portal HRD PT. Teknologi Gemilang”

Anda adalah seorang Senior System Administrator. Admin junior bernama Budi ditugaskan membuat portal internal berbasis PHP untuk mengunggah file CV (Curriculum Vitae). Budi mengklaim sudah menginstal Apache, mengunggah form web, dan membuat folder dokumen_cv di /var/www/html/. Namun, saat tim HRD mengujinya, mereka memberikan 3 laporan keluhan berturut-turut.

Tugas Anda adalah menganalisis akar masalah dari setiap laporan HRD berikut dan menuliskan solusi pastinya (berupa perintah Linux atau konfigurasi).

Laporan Error 1: “Kodenya Bocor!”
  • Keluhan HRD: “Saat kami akses web, form tidak muncul. Halaman malah menampilkan teks mentah yang berisi <?php echo 'Portal HRD'; ?>. Ini data perusahaan kok bocor?”
  • Pertanyaan 1.A: Mengapa web server memunculkan teks asli PHP alih-alih mengeksekusinya?
  • Pertanyaan 1.B: Tuliskan perintah terminal (Linux) untuk menyelesaikan masalah ini!
Laporan Error 2: “File Besar Ditolak!”
  • Keluhan HRD: “Web sudah normal. Tapi saat upload CV format PDF ukuran 4 MB, server langsung menolak. Giliran pasfoto 1 MB, berhasil.”
  • Pertanyaan 2.A: Parameter apa di sistem PHP yang membatasi ini secara default, dan di mana letak file konfigurasinya?
  • Pertanyaan 2.B: Jelaskan langkah mengubahnya agar bisa menerima file hingga 10 MB, dan apa yang harus dilakukan pada sistem server setelah menyimpannya!
Laporan Error 3: “Akses Dilarang!”
  • Keluhan HRD: “Ukuran file sudah beres. Tapi setelah klik upload, web memunculkan pesan error: move_uploaded_file(): Permission denied in /var/www/html/index.php. File CV-nya juga hilang.”
  • Pertanyaan 3.A: Budi membuat folder dokumen_cv menggunakan akun budi_admin miliknya via terminal. Mengapa web server (Apache) gagal menyimpan file ke dalam folder tersebut?
  • Pertanyaan 3.B: Tuliskan satu baris perintah terminal yang akan memperbaiki masalah kepemilikan folder ini!

Format Pengumpulan: Kerjakan di kertas selembar atau ketik dalam format PDF. Kumpulkan ke learning management system kampus sebelum pertemuan berikutnya.





Leave a Reply

Your email address will not be published. Required fields are marked *