[2023] Install PHP, MySQL, Apache & phpMyAdmin di Ubuntu

Linux, Apache, MySQL/MariaDB, dan PHP/Python/Perl atau biasa disingkat LAMP akan kita install satu per satu. LAMP merupakan aplikasi open source yang populer dan sering digunakan untuk pengembangan web dinamis
[2023] Install PHP, MySQL, Apache & phpMyAdmin di Ubuntu

Linux, Apache, MySQL/MariaDB, dan PHP/Python/Perl atau biasa disingkat LAMP akan kita install satu per satu. LAMP merupakan aplikasi open source yang populer dan sering digunakan untuk pengembangan web dinamis. Apache sebagai web server, MySQL sebagai database, PHP sebagai bahasa pemrograman. Sedangkan phpMyAdmin adalah sebuah aplikasi web untuk menangani administrasi MySQL agar kita tidak bekerja melalui Command Line Interface (CLI).

Untuk menginstall kumpulan aplikasi ini bisa dilakukan dengan mendownload XAMPP. Namun kita akan mencoba melakukan install satu per satu. Dalam tutorial ini, saya menggunakan Linux berbasis Ubuntu. Walaupun install satu per satu agak ribet dan memakan waktu, namun kita akan menjadi lebih paham cara konfigurasi dari aplikasi ini daripada install secara instan menggunakan aplikasi seperti XAMPP.

Baca juga:

Install XAMPP di Linux

Install Apache

Apache merupakan aplikasi web server open source yang handal dan sangat populer. Protokol yang digunakan untuk melayani fasilitas web/www ini menggunakan HTTP.

Pertama-tama, update sistemmu.

sudo apt update
sudo apt upgrade

Selanjutnya, install web server Apache.

sudo apt install apache2

Cek apakah web server berjalan dengan baik.

sudo apache2ctl configtest

Contoh output:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Pada output di atas terdapat pesan peringatan “AH00558: apache2: Could not reliably” bahwa kita tidak menentukan domain name yang kita gunakan. Untuk mengatasinya kita harus konfigurasi apache2.

sudo nano /etc/apache2/apache2.conf

Tambahkan perintah ini pada akhir baris, IP address bisa diisi dengan 127.0.0.1 atau IP statis server.

ServerName 127.0.0.1

Restart apache.

sudo systemctl restart apache2

Untuk mengecek apakah konfigurasi apache tadi sudah benar, kembali jalankan perintah berikut.

sudo apache2ctl configtest

Selamat, apache2 telah berjalan!

Setelah semua konfigurasi telah dilakukan, selanjutnya kita akan mencoba konfigurasi firewall agar layanan web server apache dapat diakses di luar komputer lokal.

Untuk melakukan konfigurasi ini, kita akan menggunakan UFW firewall, pastikan kita sudah mengizinkan akses HTTP maupun HTTPS dari layanan web server. Jalankan perintah berikut.

sudo ufw app list

Contoh output:

Available applications:
  Apache
  Apache Full
  Apache Secure
  CUPS

Dari output di atas terlihat apache memiliki 3 daftar layanan yaitu Apache untuk http saja, Apache Full untuk http dan https, dan Apache Secure untuk https saja. Karena kita akan mencoba mengaktifkan HTTP dan HTTPS, maka kita harus mengizinkan layanan Apache Full pada UFW Firewall, caranya ketikkan perintah berikut.

sudo ufw allow in "Apache Full"

Contoh output:

Rules updated
Rules updated (v6)

Menjalankan web server Apache

Jika sudah selesai, kita dapat mencoba layanan apache dengan menjalankan ip 127.0.0.1 pada web browser.

Apache Default Page

Gambar di atas adalah tampilan default dari apache, itu menandakan apache telah berjalan.

Install MySQL

MySQL merupakan salah satu aplikasi database bertipe RDBMS (Relational Database Management System) yang open source. Untuk menginstall layanan ini jalankan perintah berikut.

sudo apt install mysql-server

Untuk mengecek layanan mysql berjalan atau tidak.

sudo systemctl status mysql

Contoh output:

mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-07-19 09:50:41 WIB; 55min ago
    Process: 913 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 1003 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 9306)
     Memory: 400.5M
     CGroup: /system.slice/mysql.service
             └─1003 /usr/sbin/mysqld

Jul 19 09:50:34 aantamimID systemd[1]: Starting MySQL Community Server...
Jul 19 09:50:41 aantamimID systemd[1]: Started MySQL Community Server.

Selamat, MySQL telah berjalan!

Membuat Password Root

Defaultnya, password user root MySQL masih kosong. Kamu sebaiknya mengamankan MySQL dengan menjalankan perintah.

sudo mysql_secure_installation

Kamu akan ditanya untuk menginstall plugin VALIDATE PASSWORD atau tidak. Plugin ini memperbolehkan kita untuk konfigurasi password MySQL yang kuat. Jika plugin ini diinstall, kamu akan disuguhkan kekuatan opsi kekuatan password dari level LOW, MEDIUM, dan STRONG. Sebenarnya aman untuk tidak menginstall plugin ini, namun kamu perlu membuat password yang kuat dan unik, tapi jika ini untuk komputer lokal pakai password yang biasa saja misalkan “root” tidak masalah, karena hanya kita yang mengakses databasenya.

Jika kamu tidak ingin mengaktifkan plugin ini, tekan tombol apa saja untuk melewati validasi password.

Jika kamu menjawab Yes, kamu akan ditanya level password.

Contoh output:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

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 y

Ada 3 level validasi password yaitu low, medium, dan strong. Masukkan nomor level (0 = low, 1 = medium, dan 2 = strong) dan tekan ENTER. Saya biasa memilih level 1.

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:

Sekarang masukkan password untuk user root. Untuk memasukkan password harus sesuai dengan aturan level password pada lengkah sebelumnya. Jika kamu tidak menginstall plugin ini, gunakan password yang menurutmu aman. Untuk komputer lokal dan yang memakai hanya kita sendiri, cukup memasukkan password yang mudah saja untuk user root misalnya passwordnya “root” juga.

Please set the password for root here.

New password:

Re-enter new password:

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

Jika password sudah kamu masukkan dan merasa yakin tekan tombol Y untuk melanjutkan. Jika ingin mengulang untuk mengatur password lagi tekan tombol apa saja.

Untuk pertanyaan terakhir, pastikan kamu menekan tombol Y dan ENTER. Hal ini akan menghapus anonymous user dan test database, menonaktifkan remote root login, dan melakukan konfigurasi kembali pada MySQL.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Selamat, password untuk user root sudah diatur!

Mengubah metode autentikasi untuk user root MySQL

Defaultnya, user root MySQL mengatur autentikasi menggunakan plugin auth_socket. Karena plugin auth*socket dapat menyulitkan kita ketika mengakses MySQL melalui program eksternal seperti phpMyAdmin maka kita akan mengubah metode autentikasinya dari **_auth*socket*** ke *_mysql_native_password**. Untuk melakukannya, login ke MySQL dengan user root dan password akun root komputermu.

sudo su
mysql

Jalankan perintah berikut untuk mencari metode autentikasi untuk semua akun user.

SELECT user,authentication_string,plugin,host FROM mysql.user;

Contoh output:

+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *F126737722832701DD3979741508F05FA71E5BA0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Seperti yang kamu lihat, mysql root menggunakan plugin auth_socket untuk autentikasi.

Untuk mengubah autentikasi ke metode mysql_native_password, jalankan perintah.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'passwordmu';

Update perubahan dengan menjalankan perintah.

FLUSH PRIVILEGES;

Sekarang cek lagi apakah metode autentikasi sudah terganti.

SELECT user,authentication_string,plugin,host FROM mysql.user;

Contoh output:

MySQL Check Authentication

Selamat, telah berhasil mengganti metode autentikasi login root mysql.

Untuk keluar dari mysql prompt.

exit

Install PHP

PHP merupakan bahasa pemrograman yang banyak digunakan oleh pengembang web. Kemudahan serta integrasi dengan berbagai database seperti MySQL menjadikan bahasa pemrograman ini biasanya menjadi piihan untuk memulai terjun ke dunia pengembangan web.

Kita akan menginstall PHP dan library pendukungnya agar PHP dapat diintegrasikan dengan Apache dan MySQL.

sudo apt install php libapache2-mod-php php-mysql

Sesudah menginstall, silakan buat info.php di dalam folder root Apache, biasanya terletak di /var/www/html/.

sudo nano /var/www/html/info.php

Tambahkan baris kode berikut.

<?php
    phpinfo();
?>

Simpan dengan menekan CTRL + X, kemudian tekan Y dan ENTER.

Menjalankan PHP

Buka web browsermu dan kunjungi IP localhostmu http://127.0.0.1

Sekarang kamu akan melihat halaman tes php.

Halaman dari fungsi phpinfo()

Biasanya, ketika pengguna mengakses directory dari web server, Apache akan melihat file yang bernama index.html. Jika kamu ingin apache menjalankan file php daripada yang lain, pindahkan index.php ke posisi pertama.

Untuk memindah posisi tersebut, jalankan perintah.

sudo nano /etc/apache2/mods-enabled/dir.conf

Hasil output:

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Kita pindahkan index.php menjadi posisi paling awal.

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

Simpan dengan menekan CTRL + X, kemudian tekan Y dan ENTER.

Install modul PHP

Untuk meningkatkan fungsionalitas PHP, kamu dapat menginstall beberapa modul tambahan.

Untuk melihat daftar modul PHP yang ada, jalankan perintah berikut.

sudo apt-cache search php- | less

Contoh output:

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
php-ldap - LDAP module for PHP [default]
php-mysql - MySQL module for PHP [default]
php-odbc - ODBC module for PHP [default]
...

Tekan q untuk keluar.

Untuk melihat deskripsi module.

sudo apt-cache show module_name

Untuk memasang module.

sudo apt install module_name

Jangan lupa untuk restart layanan Apache setelah menginstall modul php apapun. Untuk mengecek apakah modul sudah terpasang buka file info.php tadi di web browser.

Selamat, modul PHP sudah terpasang!

Install phpMyAdmin

phpMyAdmin merupakan aplikasi gratis dan open source yang dibangun dengan bahasa pemrograman PHP. Dengan aplikasi ini, kita dapat menangani proses pengolahan database melalui antarmuka web.

Untuk menginstall PHP, aktifkan repositori ‘universe’, yang mana repositori tersebut dinonaktifkan pada beberapa versi Ubuntu.

sudo add-apt-repository universe

Sekarang install phpMyAdmin, jalankan perintah.

sudo apt update
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

Sekarang pilih opsi web server yang ingin kamu gunakan dengan menekan tombol panah UP/DOWN dan tekan SPASI untuk memilih. Setelah dipilih, akan ada simbol * (bintang) di depan opsi. Tekan tombol TAB untuk memilih OK dan tekan ENTER.

Konfigurasi phpMyAdmin

Tekan ENTER

Konfigurasi phpMyAdmin

Pilih Yes untuk konfigurasi database.

Konfigurasi phpMyAdmin

Masukkan password MySQL, gunakan password MySQL yang kamu masukkan pada langkah sebelumnya, kemudian ENTER.

Konfigurasi phpMyAdmin

Masukkan password kembali.

Konfigurasi phpMyAdmin

Ketika phpMyAdmin berhasil diinstall, aktifkan ekstensi mbstring dan restart layanan Apache.

Jalankan perintah.

sudo phpenmod mbstring
sudo systemctl restart apache2

Untuk mengecek ekstensi mbstring sudah aktif, buka file info.php di web browser.

mbstring Extension

Seperti yang kamu lihat di atas, ekstensi mbstring sudah aktif.

Untuk mengakses phpMyAdmin, buka web browser dan kunjungi 127.0.0.1/phpmyadmin. Kamu akan melihat halaman login phpMyAdmin. Kamu bisa login dengan memasukkan user root mysql.

phpMyAdmin Login Page

Selamat, instalasi phpMyAdmin sudah selesai.


Baca juga.

Mengaktifkan .htaccess Apache di Ubuntu


Selesai sudah proses instalasi Apache, MySQL, PHP & phpMyAdmin di Linux Ubuntu. Semua service yang diinstall tersebut akan dimulai secara otomatis ketika kamu menyalakan komputer. Lebih enak daripada kita harus menyalakan service setiap mau coding. Tapi jika tidak ingin, service tersebut bisa dinonaktifkan. Jika ada pertanyaan silakan berikan komentar!