Misi 1 : inventaris LAMP
lsb_release -d; uname -r
apache2 -v | head -n 1; php -v | head -n 1; mysql --version
systemctl is-active apache2 mysql
sudo ss -ltnp | grep -E ':(80|3306)([[:space:]]|$)'
Laporkan: komponen, versi, service, port, file konfigurasi utama, dan log dari LAMP
Lengkapi tabel berikut:
| Komponen | File konfigurasi utama | Lokasi log |
| Apache | /etc/apache2/ | /var/log/apache2/ |
| PHP | ||
| MySQL |
Misi 2: Menelusuri Query
A. Pastikan log tujuan menggunakan FILE.
sudo mysql -e "SHOW VARIABLES LIKE 'log_output';"
Pastikan hasilnya FILE atau FILE,TABLE
B. jalankan tail -f di terminal.
sudo tail -f /var/log/apache2/wordpress-access.log
Kemudian buka halaman WordPress melalui browser di klien dan amati baris baru. Lalu aktifkan log query MySQL sementara:
sudo mysql -e "SET GLOBAL general_log_file='/var/log/mysql/general.log'; SET GLOBAL general_log='ON';"
# muat ulang halaman blog di browser
sudo grep -E 'wp_options|wp_posts' /var/log/mysql/general.log | tail -n 10
sudo mysql -e "SET GLOBAL general_log='OFF';"
sudo rm /var/log/mysql/general.log
Amati bahwa satu kali buka halaman memicu banyak query SELECT. Log ini hanya untuk lab dan harus dimatikan setelah selesai, karena mencatat semua query.
sudo mysql -e "SET GLOBAL general_log='OFF';"
sudo mysql -e "SHOW VARIABLES LIKE 'general_log';"
sudo rm -f /var/log/mysql/general.log
Laporkan 5–10 baris query yang relevan dengan wp_options atau wp_posts, pastikan log sudah dimatikan.
Misi 3 phpMyAdmin
sudo apt install -y phpmyadmin
Pada prompt, pilih apache2 (spasi, lalu Enter), setujui konfigurasi database, dan kosongkan password aplikasi. Paket ini membuka /phpmyadmin di semua Virtual Host, jadi nonaktifkan dan buat Virtual Host sendiri yang dibatasi IP.
export NAMA=budi
sudo a2query -c phpmyadmin
sudo a2disconf phpmyadmin
sudo tee /etc/apache2/sites-available/60-pma.conf <<EOF
<VirtualHost *:80>
ServerName pma.$NAMA.test
DocumentRoot /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin/>
Options FollowSymLinks
AllowOverride None
Require ip 192.168.10.0/24 127.0.0.1
</Directory>
ErrorLog /var/log/apache2/pma-error.log
CustomLog /var/log/apache2/pma-access.log combined
</VirtualHost>
EOF
sudo a2ensite 60-pma.conf
sudo apache2ctl configtest
sudo systemctl reload apache2sudo apache2ctl -S
Ganti Budi dengan nama anda. Ganti 192.168.10.0/24 dengan subnet LAN anda, dan tambahkan record DNS atau baris hosts untuk http://pma.NAMA.test.
Tugas di browser klien:
- Login dengan user
wp_NAMA, bukan root. Hanya databasewp_NAMAyang terlihat (prinsip hak akses minimal). Coba login sebagairootdan jelaskan mengapa ditolak. - Temukan posting CV di tabel
wp_posts, dan lihat kolomuser_passdiwp_users(isinya hash, bukan password asli). - Jalankan satu query lewat tab SQL.
- Buktikan
curl -I http://pma.NAMA.test/phpmyadminsudah tidak melayani panel (404).
Misi 4: Konfigurasi LAMP
# PHP: batas upload (cek dulu di WordPress: Media > Add New)
sudo sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 16M/' /etc/php/8.3/apache2/php.ini
sudo sed -i 's/^post_max_size = .*/post_max_size = 20M/' /etc/php/8.3/apache2/php.ini
sudo systemctl restart apache2
menggunakan php cli:
php -r 'echo ini_get("upload_max_filesize"), PHP_EOL;'
# Apache: sembunyikan detail versicurl -sI http://blog.NAMA.test |
grep -i '^server'
sudo sed -i 's/^ServerTokens .*/ServerTokens Prod/' /etc/apache2/conf-available/security.conf
sudo apache2ctl configtest && sudo systemctl reload apache2
curl -sI http://blog.NAMA.test | grep -i '^server'
# MySQL: hanya periksa, jangan diubah
sudo mysql -e “SHOW VARIABLES LIKE ‘bind_address’;”
Batas upload di halaman Media WordPress naik ke 16 MB. Perintah php -r tetap menampilkan nilai lama, karena memakai php.ini milik cli.
Misi 5: Penutup, jawab pertanyaan berikut:
(1) Sebutkan urutan komponen LAMP saat satu halaman dibuka.
(2) Mengapa MySQL hanya listen di 127.0.0.1?
(3) Mengapa phpMyAdmin dibatasi IP dan tidak dibuka untuk semua?
(4) Mengapa php.ini untuk cli dan apache2 berbeda?
Buat laporan dan kumpulkan ke LMS
Have Fun!
