Imron Rosyadi
Imron Rosyadi Linux Enthusiast! Meringankan beban pekerjaan menuju kebahagiaan yang hakiki.

Ubuntu: Install LAMP Stack di Ubuntu 20.04


Ubuntu: Install LAMP Stack di  Ubuntu 20.04

LAMP merupakan satu paket software yang digunakan untuk mengaktifkan server guna menghosting situs web dinamis dan ditulis dalam bahasa pemrograman PHP. LAMP stack merupakan akronim dari L inux yang merupakan basis sistem operasinya, sedangkan A pache merupakan web servernya, adapun data-data websitenya disimpan dalam M ySQL sebagai database server, dan konten dinamis website yang diproses oleh P HP.

Pada panduan instalasi LAMP stack kali ini diterapkan pada sistem operasi Ubuntu Server 20.04 LTS, lebih lengkapnya silakan menyimak pembahasan berikut ini.

Persyaratan  untuk menginstall LAMP Stack ini paling utama adalah Ubuntu Server 20.04 dengan menggunakan user non-root.  Untuk mengecek versi Ubuntu Server 20.04 bisa menggunakan perintah sebagai berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ubuntu@tutorialbelajarlinux:~$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Install Web Server Apache2

Sebelum install apache2, update paket Ubuntu Server 20.04 paling terbaru dengan perintah:

1
2
ubuntu@tutorialbelajarlinux:~$ sudo apt update
ubuntu@tutorialbelajarlinux:~$ sudo apt install apache2

Jika Anda menggunakan perintah sudo maka sebagai awalan Anda biasanya akan diminta password user terlebih dahulu, isikan password user tersebut dan tekan enter, tunggu proses update dan instalasi apache2 benar-benar selesai.

Anda bisa mengaktifkan service apache2 ketika server mengalami reboot secara otomatis dengan perintah:

1
ubuntu@tutorialbelajarlinux:~$ sudo systemctl enable apache2

Pastikan service apache2 sudah berstatus aktif.

Status Apache2

Setelah itu, Anda bisa coba akses IP Public Ubuntu Server 20.04 pada browser favorit Anda. Nantinya akan muncul tampilan default apache2 seperti pada gambar berikut.

Tampilan default Apache2

Install MySQL

Sekarang kita sudah memiliki web server dan sudah berstatus running, selanjutnya kita bisa menginstall service MySQL untuk lebih mudah mengelola website terutama  untuk menyimpan data website.

1
ubuntu@tutorialbelajarlinux:~$ sudo apt install mysql-server

Konfirmasi dengan tekan Y dan enter.

Setelah instalasi MySQL berhasil, direkomendasikan untuk menjalankan security script pada waktu pre-install MySQL. Hal tersebut digunakan untuk menghapus pengaturan yang insecure dan membatasi akses ke database server.

1
ubuntu@tutorialbelajarlinux:~$ sudo mysql_secure_installation

Nantinya Anda akan diminta VALIDATE PASSWORD PLUGIN.

Konfirmasi dengan tekan y untuk yes, atau tekan apapun untuk melanjutkan.

1
2
3
4
5
6
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Jika Anda mengkonfirmasi yes, maka Anda akan diminta level password untuk akses database server dengan berbagai  macam pilihan, antara lain:

1
2
3
4
5
6
7
There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Setelah Anda memilih kriteria level password, maka jika kita ingin login ke database server dengan user root maka akan diminta password. Hal tersebut digunakan untuk keamanan dalam mengakses database server Anda.

Selanjutnya, Anda bisa mengkonfirmasi kembali bahwa password yang Anda setup sebelumnya sudah sesuai dengan menekan tombol y untuk yes.

1
2
Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Langkah yang terakhir, Anda bisa menekan tombol y untuk yes pada setiap langkah. Hal tersebut untuk menghapus user anonymouse dan database test, menon-aktifkan remote login user root, dan load hasil setup yang sudah selesai dilakukan sebelumnya.

Setelah setup security script berhasil dilakukan, Anda bisa login ke database  server. Namun sebelumnya pastikan service MySQL sudah berjalan dengan normal.

Status mysql-server
1
ubuntu@tutorialbelajarlinux:~$ sudo mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.22-0ubuntu0.20.04.2 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Ketika Anda login ke MySQL, Anda tidak dimintai password walaupun sudah melakukan setup sebelumnya. Hal ini dikarenakan secara default, MySQL administratif menggunakan autentikasi unix_socket  sebagai pengganti dari input password.

Ketik exit untuk keluar dari konsole MySQL.

1
mysql> exit

Saat ini Anda sudah berhasil menginstall web server dan database server pada Ubuntu Server 20.04.

Install PHP

Kita sudah memiliki apache2 untuk melayani konten website, MySQL untuk menyimpan data website. Selain kedua software tersebut, kita juga butuh PHP untuk menjalankan konten website secara dinamis hingga end user bisa mengaksesnya dengan normal.

PHP modul yang kita butuhkan yaitu php-mysql, dimana modul tersebut berfungsi untuk menghubungkan PHP dengan mysql-server, modul libapache2-mod-php digunakan untuk mengaktifkan service apache2 dalam mengakses file PHP.

Untuk menginstal modul-modul tersebut bisa menjalankan perintah sebagai berikut:

1
ubuntu@tutorialbelajarlinux:~$ sudo apt install php libapache2-mod-php php-mysql

Konfirmasi dengan tekan y dan enter.

Selanjutnya Anda bisa melihat versi PHP yang sudah berhasil diinstall.

Versi PHP 7.4

Sampai langkah ini, kita sudah berhasil menginstall LAMP Stack. Selanjutya Anda bisa mensetting virtualhost pada apache2 untuk mengkolaborasikan LAMP Stack tersebut, hal ini akan dibahas pada langah selanjutnya.

Membuat Virtualhost Website

Ketika kita menggunakan apache2, kita bisa membuat virtualhost layaknya serverblock seperti pada web server Nginx. Kegunaan virtulhost tersebut untuk mengenkapsulasi konfigurasi web server dengan satu domain maupun multi domain, selain itu bisa menentukan root_directory dimana website kita akan disimpan, dan lain sebagainya.

Secara default root_directory tersebut terletak pada direktori /var/www/html. Namun kita juga bisa menentukan diluar direktori tersebut, misalnya kita ingin membuat root_directory pada /var/www/<nama_website>. Disini saya ingin membuat root_directory seperti /var/www/belajar-linux.

Buat direktorinya terlebih dahulu dengan perintah:

1
ubuntu@tutorialbelajarlinux:~$ sudo mkdir /var/www/belajar-linux

Selanjutnya, kita bisa menentukan user dan grup pada root_directory tersebut.

1
ubuntu@tutorialbelajarlinux:~$ sudo chown -R $USER:$USER /var/www/belajar-linux

Buat virtualhost dengan teks editor favorit Anda, disini saya menggunakan vim:

1
ubuntu@tutorialbelajarlinux:~$ sudo vim /etc/apache2/sites-available/nama_domain.conf

Tambahkan konfigurasi virtualhost seperti berikut:

1
2
3
4
5
6
7
8
<VirtualHost *:80>
    ServerName your_domain
    ServerAlias www.your_domain
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Sesuaikan your_domain dengan nama domain yang akan Anda gunakan pada website Anda.

Selanjutnya silakan reload service apache2 untuk load hasil konfigurasi.

1
sudo systemctl reload apache2

Kemudian, akifkan konfigurasi virtualhost yang baru kita buat dan non-aktifkan konfigurasi default virtualhost apache2.

1
ubuntu@tutorialbelajarlinux:~$ sudo a2ensite your_domain
1
ubuntu@tutorialbelajarlinux:~$ sudo a2dissite 000-default

Reload kembali service apache2

1
ubuntu@tutorialbelajarlinux:~$ sudo systemctl reload apache2

Langkah selanjutnya, buat halaman sederhana dengan script html.

1
2
3
4
5
6
7
8
9
10
<html>
  <head>
    <title>your_domain website</title>
  </head>
  <body>
    <h1>Hello World!</h1>

    <p>This is the landing page of <strong>your_domain</strong>.</p>
  </body>
</html>

Simpan, dan akses domain Anda pada browser nantinya akan muncul seperti tampilan berikut ini.

Tampilan website HTML

Secara default halaman index yang diakses pertama kali pada apache2 adalah index.html, apabila ingin menampilkan index.php maka Anda bisa menghapus file index.html tersebut atau mengganti ekstensinya.

Selain opsi itu, kita juga bisa mengubah prioritas index.php agar bisa dibaca pertama kali oleh apache2 dengan mengubah konfigurasi file berikut ini.

1
ubuntu@tutorialbelajarlinux:~$ sudo vim /etc/apache2/mods-enabled/dir.conf
1
2
3
<IfModule mod_dir.c>
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Setelah itu, silakan reload kembali service apache2

1
ubuntu@tutorialbelajarlinux:~$ sudo systemctl reload apache2

Buat script untuk menampilkan versi PHP yang digunakan pada Ubuntu Server 20.04 untuk menguji apakah apache2 berhasil mengeksekusi file .php secara default (tanpa menghapus file index.html).

1
2
3
<?php 
phpinfo();
?>
PHP Info

Test Koneksi Database dari PHP (Opsional)

Modul PHP native yang digunakan untuk menghubungkan ke database server adalah mysqlnd. Untuk menguji apakah PHP berhasil terhubung ke database server, kita bisa membuat database terlebih dahulu dan membuat table dengan konten secara dummy.

Login ke MySQL server dengan user root, dan buat databasenya.

1
ubuntu@tutorialbelajarlinux:~$ sudo mysql
1
mysql> CREATE DATABASE example_database;

Setelah itu, buat user untuk akses ke database tersebut. Isikan sesuai dengan user dan database yang Anda inginkan

1
mysql> CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';

Sekarang, coba berikan hak akses/permission terhadap user untuk mengakses database tersebut.

1
mysql> GRANT ALL ON example_database.* TO 'example_user'@'%';

Exit dari MySQL console, dan coba login menggunakan user database yang sudah dibuat sebelumnya.

1
mysql> exit
1
mysql -u example_user -p

Setelah berhasil login, tampilkan database untuk memastikan bahwa database yang sudah diizinkan akses oleh user tersebut.

1
mysql> SHOW DATABASES;

Jika sudah sesuai, maka buat satu table seperti halnya berikut ini:

1
2
3
4
5
mysql> CREATE TABLE example_database.schedule (
id_item INT AUTO_INCREMENT,
isian VARCHAR(255),
PRIMARY KEY(id_item)
);

Tambahkan konten untuk table database tersebut.

1
mysql> INSERT INTO example_database.schedule (content) VALUES ("Jadwal Pertama Kerja");

Untuk melihat konten yang sudah ditambahkan pada tabel database bisa menggunakan perintah berikut.

1
mysql> SELECT *FROM example_database.schedule;
1
2
3
4
5
6
7
8
9
10
Output
+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | Jadwal Pertama Kerja |
| 2 | Jadwal Kedua Kerja |
| 3 | Jadwal Ketiga Kerja |
| 4 | Jadwal Keempat Kerja |
+---------+--------------------------+
4 rows in set (0.000 sec)

Setelah sesuai dengan konten tabel database yang sudah diisikan sebelumnya, keluar dari mysql consol.

1
mysql> exit

Selanjutnya Anda bisa membuat file script PHP misalnya: jadwal.php untuk menghubungkan dengan database yang sudah dibuat sebelumnya. Silakan menyesuaikan user, password, database dan tabelnya.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "schedule";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>SCHEDULE</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();
}

Setelah itu, simpan file tersebut dan akses ke browser Anda.

Apabila muncul output seperti gambar berikut, maka PHP sudah berhasil terhubung ke database server. Dengan demikian, PHP environment Anda sudah bisa digunakan untuk interaksi ke database server.

Konten PHP untuk menampilkan database

Kesimpulan

Pada pembahasan kali ini, kita telah belajar install LAMP Stack untuk kebutuhan aplikasi website dengan basis PHP yang bisa dilihat oleh end user sekalipun. Dimana apache2 yang bertindak sebagai web server, MySQL sebagai sistem database.

Adapun pembahasan lanjutan yang lain akan kami kupas dan share ke kalian tentunya di blog ini. Semoga bermanfaat dan barokah, Aamiin :)

Sampai jumpa :)

comments powered by Disqus