Setup Webserver Apache, MySQL, dan PHP di Raspberry Pi dan Orange Pi

Tujuan Praktik

Setelah menyelesaikan praktik ini, Anda akan dapat:

  • Menginstal dan mengkonfigurasi server web Apache.
  • Menginstal dan mengkonfigurasi MySQL untuk manajemen basis data.
  • Menginstal PHP dan mengintegrasikannya dengan Apache dan MySQL.

Dasar Teori

php mysql apache to raspberry orange pi

  1. Apache Apache adalah perangkat lunak server web yang digunakan untuk menghosting dan menyajikan halaman web kepada pengguna. Apache bekerja berdasarkan permintaan HTTP dan mengirimkan respons berupa halaman HTML ke browser pengguna.
  2. MySQL MySQL adalah sistem manajemen basis data relasional (RDBMS) yang digunakan untuk menyimpan dan mengelola data. MySQL sering digunakan bersama aplikasi berbasis web untuk menangani data dinamis.
  3. PHP PHP (Hypertext Preprocessor) adalah bahasa pemrograman sisi server yang dirancang untuk pengembangan web. PHP memungkinkan pembuatan halaman web dinamis dan integrasi dengan basis data seperti MySQL.

Langkah 1: Perbarui Sistem

  1. Buka terminal pada Raspberry Pi / Orange PI.
  2. Jalankan perintah berikut untuk memperbarui paket sistem:
  sudo apt update

  sudo apt upgrade -y

Langkah 2: Instal Apache

Apache adalah server web yang populer untuk menyajikan halaman web.

  • Instal Apache dengan perintah berikut:
sudo apt install apache2 -y
  • Periksa status layanan Apache:
sudo systemctl status apache2
  • Buka browser web dan akses alamat IP Raspberry Pi / Orange PI Anda. Anda harus melihat halaman default Apache.
Contoh: http://<ip_raspberry_pi>

Langkah 3: Instal MySQL

MySQL digunakan untuk menyimpan dan mengelola data.

  • Instal MySQL server:
sudo apt install mariadb-server -y
  • Amankan instalasi MySQL dengan menjalankan:
sudo mysql_secure_installation

Ikuti panduan untuk menetapkan kata sandi root dan mengkonfigurasi opsi keamanan.

  • Login ke MySQL untuk memverifikasi instalasi:
sudo mysql -u root -p

Keluar dari MySQL dengan mengetik exit.

Langkah 4: Instal PHP

PHP digunakan untuk membuat halaman web dinamis.

  • Instal PHP dan modul yang diperlukan:
sudo apt install php libapache2-mod-php php-mysql -y
  • Verifikasi instalasi PHP:
php -v

Langkah 5: Uji Integrasi Apache dan PHP

  • Buat file uji PHP di direktori root server web:
sudo nano /var/www/html/info.php
  1. Tambahkan konten berikut ke file tersebut:
<?php

phpinfo();

?>
  1. Simpan file dan keluar dari editor (Ctrl + O, Enter, Ctrl + X).
  2. Buka browser web dan akses http://<ip_raspberry_pi / orange pi>/info.php. Anda akan melihat halaman informasi PHP.

Langkah 6: Konfigurasi MySQL untuk PHP

  1. Login ke MySQL:
sudo mysql -u root -p
  1. Buat database dan pengguna baru:
CREATE DATABASE testdb;

CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';

FLUSH PRIVILEGES;

EXIT;

Langkah 7: Bersihkan dan Selesaikan

  • Hapus file informasi PHP untuk keamanan:
sudo rm /var/www/html/info.php
  • Restart Apache untuk memastikan semua perubahan diterapkan:
sudo systemctl restart apache2

Verifikasi

  1. Pastikan Apache, MySQL, dan PHP berjalan:
    • Apache: sudo systemctl status apache2
    • MySQL: sudo systemctl status mariadb
    • PHP: Uji menggunakan skrip PHP.
  2. Cobalah membuat skrip PHP sederhana untuk terhubung ke database MySQL dan menampilkan data untuk memastikan semuanya bekerja.

Pemecahan Masalah

  • Halaman default Apache tidak terlihat: Pastikan Apache berjalan dan tidak ada firewall yang memblokir lalu lintas HTTP.
  • Masalah login MySQL: Periksa kembali kata sandi root dan hak akses pengguna.
  • PHP tidak memproses skrip: Pastikan libapache2-mod-php telah terinstal dan Apache sudah direstart.

Kesimpulan

Anda telah berhasil mengatur dan mengkonfigurasi server web dengan Apache, MySQL, dan PHP di Raspberry Pi. Anda kini dapat menggunakan Raspberry Pi untuk mengembangkan dan menguji aplikasi web!

Catatan: MySQL atau MariaDB?

Perintah di atas memasang MariaDB, bukan MySQL. Raspberry Pi OS dan Armbian (Orange Pi) memakai MariaDB sebagai pengganti MySQL karena sepenuhnya kompatibel: perintah SQL, fungsi PHP (mysqli, PDO MySQL), dan aplikasi seperti phpMyAdmin bekerja sama persis.

Pada MariaDB terbaru, user root memakai autentikasi unix_socket: login cukup dengan sudo mysql tanpa password. Untuk aplikasi web, selalu gunakan user khusus seperti testuser pada Langkah 6, bukan root.

Uji Koneksi PHP ke Database

Buat file /var/www/html/dbtest.php:

<?php
$dsn = "mysql:host=localhost;dbname=testdb;charset=utf8mb4";
try {
    $pdo = new PDO($dsn, "testuser", "password", [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    $pdo->exec("CREATE TABLE IF NOT EXISTS sensor (
        id INT AUTO_INCREMENT PRIMARY KEY,
        suhu FLOAT, rh FLOAT,
        waktu TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
    echo "Koneksi berhasil, tabel sensor siap.";
} catch (PDOException $e) {
    echo "Gagal: " . $e->getMessage();
}

Buka http://<ip_pi>/dbtest.php. Jika muncul “Koneksi berhasil”, Apache, PHP, dan MariaDB sudah terhubung.

Endpoint Penerima Data dari ESP32

Raspberry Pi atau Orange Pi ini bisa langsung menjadi server lokal untuk menyimpan data sensor. Contoh /var/www/html/simpan.php:

<?php
$suhu = filter_input(INPUT_GET, "suhu", FILTER_VALIDATE_FLOAT);
$rh   = filter_input(INPUT_GET, "rh",   FILTER_VALIDATE_FLOAT);
if ($suhu === false || $suhu === null || $rh === false || $rh === null) {
    http_response_code(400); exit("data tidak valid");
}
$pdo = new PDO("mysql:host=localhost;dbname=testdb;charset=utf8mb4", "testuser", "password");
$stmt = $pdo->prepare("INSERT INTO sensor (suhu, rh) VALUES (?, ?)");
$stmt->execute([$suhu, $rh]);
echo "OK";

ESP32 cukup memanggil URL /simpan.php dengan parameter suhu dan rh. Query memakai prepared statement agar aman dari SQL injection. Contoh sisi ESP32 ada di artikel ESP32 menyimpan data ke MySQL dengan PHP dan DIY weather station ESP32 + PHP MySQL.

Keamanan Dasar

  • Server ini ditujukan untuk jaringan lokal. Jangan membuka port 80 ke internet tanpa HTTPS, password kuat, dan pembaruan rutin.
  • Aktifkan firewall: sudo apt install ufw, sudo ufw allow ssh, sudo ufw allow 80/tcp, lalu sudo ufw enable.
  • Ganti password 'password' pada contoh dengan password yang kuat.

Troubleshooting Tambahan

GejalaPenyebabSolusi
403 Forbidden atau gagal menulis fileIzin folder /var/www/htmlsudo chown -R www-data:www-data /var/www/html
File PHP terunduh, bukan dijalankanModul PHP Apache belum aktifsudo a2enmod php* lalu restart Apache
“Access denied for user”Password atau hak akses user salahUlangi GRANT di Langkah 6, cek host 'localhost'
Halaman lambat di Orange Pi ZeroRAM terbatasMatikan layanan yang tidak dipakai; pertimbangkan Nginx + PHP-FPM

Baca Juga

Related Articles

Tinggalkan Balasan

Chat Langsung dengan Kami
Staff bisaioti 1 — +62 823-3306-4821 E-Course, Offline Course, Hardware & Teknis IoT/OT Staff bisaioti 2 — +62 823-3306-4821 Training Korporat & Toko Hardware