Instalasi LAMP Stack pada Debian Server 10

Kebutuhan instalasi LAMP Stack pada Linux Server sudah tidak asing lagi ya, baik menggunakan OS Ubuntu, Debian, CentOs, dsb. Karena suatu aplikasi website berbasis PHP dan menggunakan database harus memiliki LAMP Stack ini terlebih dahulu. Nah kali ini saya akan share instalasi LAMP Stack pada OS Debian Server 10, sebelumnya sudah pernah saya share untuk OS Server yang lain :

Install Web Server - Apache

  1. Langkah pertama silakan update paket terlebih dahulu pada VPS/VM debian server :
    sudo apt update
    Update paket server

  2. Berikutnya silakan install apache terlebih dahulu :

    sudo apt update
    sudo apt install apache2

Lalu start service apache dan enable agar start secara otomatis setelah vm reboot. Pastikan statusnya sudah running :

sudo systemctl enable apache2
sudo systemctl start apache2
sudo systemctl status apache2

Status service web server
Untuk memastikan apakah service apache sudah running, Anda bisa akses IP Public server/vm Anda pada browser.
Untuk mengetahui IP Public vm, bisa menjalankan perintah :
curl ifconfig.co

Menampilkan IP Public server

Install Database Server - MariaDB

  1. Selanjutnya silakan install service mariadb/mysql nya, secara default repositori debian server 10 ini sudah menyediakannya dengan versi 10.3. Jadi Anda tinggal menjalankan perintah berikut :
sudo apt install mariadb-server

Start dan enable service mariadb dan pastikan sudah berstatus running :
Status service database

Direkomendasikan untuk menjalankan perintah berikut karena untuk meningkatkan level keamanan database, akses user, dsb.

sudo mysql_secure_installation

Perbaikan security service mysql

Perbaikan security service mysql

Scipt tersebut akan menampilkan beberapa prompt, prompt pertama Anda akan ditanya apakah sudah memiliki password database (mysql/mariadb) sebelumnya, jika tidak silakan ketikkan 'no' (tanpa tanda petik).
Prompt berikutnya silakan isikan password root database Anda, ingat isikan password yang kompleks ya terdiri dari kombinasi huruf besar, kecil, angka, tanda baca.
Contoh : (Kw4dVjT$wf)

Adapun untuk prompt selanjutnya silakan pilih opsi 'Yes'. Hal ini akan menghapus user anonymouse, database test, menon-aktifkan remote login menggunakan user root seperti berikut ini :

Untuk login ke database consolenya bisa menggunakan beberapa perintah seperti :

sudo mysql atau
sudo mariadb  
sudo mysql -u root -p

Note : Flag -p digunakan untuk input password user

Login prompt mysql

Buatlah contoh satu database dan usernya sebagai bukti nantinya bahwa koneksi database dengan PHP berjalan dengan normal. Selain itu, login akses menggunakan user biasa disarankan daripada menggunakan user root secara langsung.

create database contoh_database;
grant all on contoh_database.* to 'contoh_user'@'localhost' identified by 'pasSw0rduSer' with grant option;
flush privileges;

Install PHP

  1. Langkah selanjutnya, install PHP. Untuk repositori PHP juga sudah disediakan secara default oleh debian server 11 ini dengan versi PHP 7.3, Anda tinggal menjalankan perintah :
    sudo apt install php libapache2-mod-php php-mysql
    sudo apt-get install php7.3-{bcmath,bz2,intl,gd,mbstring,mysql,zip}

    Berikut versi PHP nya :

Nah sampai saat ini service LAMP Stacknya sudah terinstall dengan baik. Selanjutnya kita akan membuat virtualhost secara sederhana untuk akses websitenya :
Buatlah direktori website terlebih dahulu :

sudo mkdir /var/www/html/test-web

Lalu jalankan perintah berikut untuk membuat file konfigurasi virtualhostnya :
sudo vim /etc/apache2/sites-available/test.conf

Paste baris konfigurasi berikut :

<VirtualHost *:80>  
ServerName test.kenalinux.id  
ServerAlias www.test.kenalinux.id  
ServerAdmin webmaster@localhost  
DocumentRoot /var/www/html/test-web  
ErrorLog ${APACHE_LOG_DIR}/error.log  
CustomLog ${APACHE_LOG_DIR}/access.log combined  
</VirtualHost>

Note :

  • ServerName : Masukkan nama domain/subdomain Anda (contoh : test.kenalinux.id)
  • ServerAlias : Masukkan nama alias domain/subdomain Anda (contoh : www.test.kenalinux.id)
  • DocumentRoot : Letak direktori utama website Anda

Pastikan konfigurasi virtualhost tidak ada yang error :

sudo apache2ctl configtest

Lalu aktifkan file virtualhost tersebut :

sudo a2ensite test.conf

Reload service apache :
sudo systemctl reload apache2

Disable akses default virtualhost :

sudo a2dissite 000-default

Reload service apache :
sudo systemctl reload apache2

Uji Coba / Akses

Kemudian buatlah satu file php untuk menginformasikan versi PHP dan module PHP apa saja yang terinstall pada vm :
sudo vim /var/www/html/test-web/info.php

Isikan baris berikut :

<?php 
phpinfo();
?>

Simpan file tersebut dan akses pada browser Anda :

enter image description here
Lalu hapus file tersebut karena termasuk informasi yang sensitif.
sudo rm /var/www/html/test-web/info.php

  1. Setelah itu silakan coba test PHP ke koneksi database Anda, hal ini bersifat opsional saja ya. Hal ini hanya memastikan bahwa PHP ke koneksi database normal. Masuk ke console database dan buatlah tabel untuk data dummy kurang lebih seperti berikut ini :
    CREATE TABLE contoh_database.catatan (
    item_id INT AUTO_INCREMENT,
    content VARCHAR(255),
    PRIMARY KEY(item_id)
    );
INSERT INTO contoh_database.catatan (content) VALUES ("Tulisan Blog Pertama Kenalinux ID");

Tambahkan baris data jika mau dan tampilkan datanya :
SELECT * FROM contoh_database.catatan;

Menampilkan query database

Buatlah file php yang berisi script yang menampilkan isi table yang sudah dibuat sebelumnya :

sudo vim /var/www/html/test-web/catatan.php

<?php
$user = "contoh_user";
$password = "pasSw0rduSer";
$database = "contoh_database";
$table = "catatan";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>"; 
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

Untuk mengubah ownership direktori website Anda dan mengubah permission default file (644) dan permission default direktori (755) secara rekursif bisa menggunakan perintah :

sudo find /var/www/html/test-web -type f -exec chmod 644 {} \;
sudo find /var/www/html/test-web -type d -exec chmod 755 {} \;
  1. Langkah yang terakhir, silakan akses alamat website Anda jika berhasil maka akan tampil data dummy yang telah dibuat sebelumnya, kurang lebih seperti berikut ini :

Hasil data dummy php

Agar website Anda memiliki proteksi SSL bisa install SSL nya terlebih dahulu ya, SSL ini bisa menggunakan yang free ataupun yang berbayar. Untuk menggunakan SSL yang free (Let's Encrypt) bisa install certbot terlebih dahulu :

sudo apt-get install python-certbot-apache
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo certbot --apache -d test.kenalinux.id

Note : Flag '-d" digunakan untuk menunjukkan nama domain atau subdomain. Anda bisa menggunakan alamat website Anda contoh : test.kenalinux.id

Pilih opsi Redirect (nomor 2) agar website Anda redirect ke https secara otomatis, jika proses instalasinya sukses akan tampil seperti berikut :
Install SSL Free berhasil
Lalu silakan coba akses kembali, nantinya akan muncul icon "gembok" yang menandakan bahwa website Anda sudah menggunakan SSL.
Tanda SSL sudah muncul

Kesimpulan

Itulah cara instalasi LAMP Stack pada OS Debian Server 10 yang merupakan pondasi aplikasi website aplikasi bisa berjalan di Cloud. Sebagai tambahan saya juga cantumkan untuk instalasi SSL Free pada web servernya.

Semoga bisa bermanfaat.