Apa itu LAMP Stack?
LAMP stack adalah kumpulan software yang sering digunakan untuk membangun situs web atau aplikasi web. LAMP adalah singkatan dari:
- L – Linux, adalah sistem operasi yang digunakan untuk menjalankan komputer.
- A – Apache, adalah web server yang digunakan untuk menampilkan situs web di internet.
- M – MySQL, adalah software database untuk menyimpan data yang digunakan oleh situs web atau aplikasi.
- P – PHP, adalah bahasa pemrograman yang digunakan untuk membuat logika dan fitur-fitur pada situs web atau aplikasi.
Jadi, LAMP stack adalah kumpulan empat perangkat lunak berbeda yang bekerja sama untuk membangun situs web atau aplikasi web. Linux menyediakan sistem operasi, Apache menampilkan situs web, MySQL menyimpan data, dan PHP membuat fitur-fiturnya.
Dalam tutorial ini, kami akan menginstal dan mengonfigurasi setiap komponen LAMP stack menggunakan Cloud VPS Compute SSD.
Persyaratan
- Akses SSH ke server, baik sebagai root atau pengguna dengan hak sudo.
- Koneksi internet yang stabil untuk mengunduh paket-paket yang diperlukan.
- Pengetahuan dasar tentang sistem operasi Linux.
Persiapan
Update server terlebih dahulu agar mendapatkan pembaruan
1 |
dnf update -y |
Kemudian install repository EPEL
1 |
dnf install epel-release -y |
Langkah 1 — Install Apache
Jalankan perintah berikut untuk menginstall Apache pada server,
1 |
dnf install httpd -y |
Kemudian enable service Apache agar otomatis auto-start ketika server di reboot
1 |
systemctl enable --now httpd |
Cek status Apache
1 |
systemctl status httpd |
Jika Anda menggunakan firewalld silahkan jalankan perintah berikut untuk membuka port 80 dan 443
1 |
firewall-cmd --add-port={80,443}/tcp --permanent |
Kemudian reload firewalld menggunakan perintah berikut
1 |
firewall-cmd --reload |
Konfigurasi Virtual Host
Virtual host atau VirtualHost adalah fitur pada Apache web server yang memungkinkan Anda menjalankan beberapa situs web (domain) pada satu server web fisik yang sama.
Kami akan menggunakan domain lamp.focusnic.biz.id yang sudah kami pointing ke server. Anda dapat mengikuti tutorial Cara Mengakses Server dengan Domain. Selanjutnya, jalankan perintah berikut untuk membuat file VirtualHost dan silahkan sesuaikan dengan nama domain yang akan Anda gunakan
1 |
nano /etc/httpd/conf.d/lamp.focusnic.biz.id.conf |
Isi script berikut pada file diatas
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<VirtualHost *:80> ServerName lamp.focusnic.biz.id DocumentRoot /var/www/lamp.focusnic.biz.id/public_html ErrorLog logs/lamp.focusnic.biz.id_error.log CustomLog logs/lamp.focusnic.biz.id_access.log combined <Directory /var/www/lamp.focusnic.biz.id/public_html> AllowOverride All Require all granted DirectoryIndex index.html index.php </Directory> </VirtualHost> |
Kemudian buat direktori root untuk penyimpanan file website pada domain lamp.focusnic.biz.id
1 |
mkdir -p /var/www/lamp.focusnic.biz.id/public_html |
Selanjutnya sesuaikan permission
1 |
chown -R apache:apache /var/www/lamp.focusnic.biz.id/ |
Buat test file index.html
1 |
chown -R apache:apache /var/www/lamp.focusnic.biz.id/ |
Setelah melakukan penambahan virtual host kemudian restart Apache dengan perintah berikut
1 |
systemctl restart httpd |
1 |
nano index.html |
Isi script simple html
1 2 3 4 5 6 |
<!DOCTYPE html> <html> <body> <h1>Hello world!</h1> </body> </html> |
Anda dapat mengakses melalui web browser dengan mengetik nama domain dari virtual host yang sudah Anda buat, berikut adalah tampilan test index.html kami
Langkah 2 — Install Database
MySQL adalah salah satu sistem database relasional (DBMS) yang paling terkenal dan digunakan di seluruh dunia, disamping itu ada MariaDB yang dikembangkan sebagai alternatif open source dari MySQL. Kami akan akan memberikan dua pilihan cara instalasi MySQL dan MariaDB lalu Anda dapat memilih salah satu dari DBMS tersebut.
Install MySQL
Berikut adalah perintah untuk menginstall MySQL, kami akan menggunakan default repository dari AppStream namun jika aplikasi Anda memiliki versi database MySQL tertentu Anda dapat mengikuti artikel berikut
1 |
dnf module install mysql:8.0 |
Enable service MySQL agar otomatis auto-start ketika server di reboot
1 |
systemctl enable --now mysqld |
Cek status MySQL
1 |
systemctl status mysqld |
Install MariaDB
Jalankan perintah berikut untuk menginstall MariaDB. Jika Anda memiliki versi tertentu dari MariaDB silahkan ikuti artikel berikut
1 |
dnf module install mariadb:10.3 |
Enable service MariaDB agar otomatis auto-start ketika server di reboot
1 |
systemctl enable --now mariadb |
Konfigurasi Keamanan MySQL
Jalankan perintah berikut untuk melakukan konfigurasi basic security dari MySQL
1 |
mysql_secure_installation |
Berikut adalah output diatas, Anda dapat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT 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 component? Press y|Y for Yes, any other key for No: Y 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: 0 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) : Yes By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Yes 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) : Yes 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) : Yes - 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) : Yes Success. All done! |
Langkah 3 — Install PHP
Kami akan menggunakan repository default dari AppStream dan akan menginstall PHP versi 8.2
1 |
dnf module install php:8.2 |
Anda dapat menggunakan perintah berikut untuk mengecek versi PHP dan untuk memastikan bahwa PHP sudah terinstall pada server
1 |
php -v |
Berikut adalah contoh outputnya:
1 2 3 |
PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64) Copyright (c) The PHP Group Zend Engine v4.2.13, Copyright (c) Zend Technologies |
Langkah 4 — Install phpMyAdmin (Opsional)
phpMyAdmin biasanya dibutuhkan jika Anda ingin melakukan manajemen database secara web based.
Tambahkan repository REMI
1 |
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y |
Jalankan perintah berikut untuk menginstall phpMyAdmin
1 |
dnf --enablerepo=remi install phpmyadmin -y |
Konfigurasi lanjutan untuk phpMyAdmin agar dapat diakses
1 |
nano /etc/httpd/conf.d/phpMyAdmin.conf |
Kemudian sesuaikan parameter berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# phpMyAdmin - Web based MySQL browser written in php # # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 Require all granted </Directory> |
Setelah melakukan perubahan pada virtualhost silahkan restart web server menggunakan perintah berikut
1 |
systemctl restart httpd |
Jika Anda sudah melakukan pointing dan mengkonfigurasi virtualhost Anda dapat mengakses phpMyAdmin melalui web browser dengan mengetik http://namadomain.tld/phpmyadmin lalu isi dengan username dan password MySQL
Langkah 5 — Install SSL Let’s Encrypt (Opsional)
Let’s Encrypt adalah SSL authority gratis, otomatis, dan open source yang dikelola oleh Internet Security Research Group (ISRG). Website atau domain Anda akan terlindungi dengan SSL selama 3 bulan dan dapat di renew kembali.
Jalankan perintah berikut untuk menginstall certbot
1 |
dnf -y install certbot python3-certbot-apache mod_ssl |
Sebelumnya kita sudah menentukan domain yang akan digunakan adalah lamp.focusnic.biz.id selanjutnya kami akan menginstall SSL pada domain tersebut
1 |
certbot --apache -d lamp.focusnic.biz.id |
Kemudian setelah Anda menjalankan perintah diatas akan muncul output berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Saving debug log to /var/log/letsencrypt/letsencrypt.log Error while running apachectl configtest. Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): nama@domain.tld - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Yes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: No Account registered. Requesting a certificate for lamp.focusnic.biz.id Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/lamp.focusnic.biz.id/fullchain.pem Key is saved at: /etc/letsencrypt/live/lamp.focusnic.biz.id/privkey.pem This certificate expires on 2024-09-28. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for lamp.focusnic.biz.id to /etc/httpd/conf.d/lamp.focusnic.biz.id-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://lamp.focusnic.biz.id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
Setelah Anda menginstall SSL Let’s Encrypt, maka saat ini website Anda sudah terlindungi dengan SSL dan dapat berjalan pada port 443 atau HTTPS
Langkah 6 — Ujicoba
Selanjutnya kita akan menguji coba script sederhana untuk mengetes PHP yang sudah diinstall. Anda hanya perlu membuat sebuah file hello-world.php pada root directory
1 |
nano /var/www/lamp.focusnic.biz.id/public_html/hello-world.php |
Isi script sederhana berikut lalu simpan:
1 2 3 4 5 |
<?php echo "Hello, World!"; echo "<br>"; echo "PHP Version: " . phpversion(); ?> |
Akses melalui browser, berikut adalah contoh tampilannya
Penutup
Dengan mengikuti langkah-langkah di atas, Anda telah berhasil menginstal LAMP stack pada server VPS AlmaLinux 8 serta mengamankan dengan SSL Sertifikat Let’s Encrypt. LAMP stack merupakan kombinasi yang sangat berguna untuk membangun aplikasi web dinamis. Selamat, Anda sekarang siap untuk mulai membangun aplikasi web Anda!