| |

Cara Install LEMP (Linux, Nginx, MariaDB/Mysql, dan PHP) di Ubuntu 22.04

Install LEMP umumnya ditujukan Host / Server mendukung aplikasi dinamis berbasis PHP. LEMP sendiri adalah singaltan dari L untuk Linux, N merujuk pada Nginx (dibaca sebagai “engine-x”), M merujuk ke Mariadb/Mysql dan P merujuk ke PHP.

Pada artikel ini bisa menjadi panduan untuk instalasi LEMP di Linux dengan distro Ubuntu, jadi sebelumnya pastikan kalian sudah memiliki Server, PC atau Perangkat lainnya yang sudah terinstall Ubuntu 22. Untuk instalasi ubuntt bisa dilihat stepnya di artikel instalasi ubuntu.

Install Nginx Web Server

Sebelum memulai instalasi melalui package manager ada baiknya melalukan update package index dari apt . Agar lebh mudah tidak menggunakan sudo pastikan menggunakan user root.

# apt-get update

Selanjutnya install Nginx melalui package manager apt

# sudo apt-get install nginx -y

Tunggu hingga instalasi selesai

Jika ubuntu firewall ufw dalam status aktif, maka perlu dilakukan penambahan rule allow service agar bisa diakses selain host. Untuk pengecekan status firewall ufw bisa gunakan perintah berikut, jika ufw disable bisa lanjut atau lewatkan bagian ufw

# sudo ufw status

Tampilan berikut menandakan kalau Firewall Aktif.

Cara Install LEMP (Linux, Nginx, MariaDB/Mysql, dan PHP) di Ubuntu

Lalu tambahan nginx ke dalam rule Allow service ini dengan perintah berikut ini.

# sudo ufw app list
# sudo ufw allow 'Nginx Full'
# sudo ufw status 

Tampilan hasil eksekusi perintah diatas akan seperti dibawah ini.

Cara Install LEMP (Linux, Nginx, MariaDB/Mysql, dan PHP) di Ubuntu

Setelah itu lanjutkan dengan reload ufw agar membaca rule terbaru. Gunakan perintah berikut ini.

# sudo ufw reload
Firewall reloaded

Karena belum ada virtualhost yang terpointing ke IP host / server saat ini untuk pengecekan apakah nginx sudah dapat merespon request http, akses ip dari browser.
Cek ip ver 4 dengan perintah berikut.

# sudo ip -4 addr
root@ubuntusobit:~# ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.137.196/24 metric 100 brd 192.168.137.255 scope global dynamic enp0s3
       valid_lft 601066sec preferred_lft 601066sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    inet 192.168.56.108/24 metric 100 brd 192.168.56.255 scope global dynamic enp0s8
       valid_lft 424sec preferred_lft 424sec

Berdasarkan hasil output diatas, ip yang dapat dicoba di akses melalui browser adalah 192.168.56.108.

Cara Install LEMP (Linux, Nginx, MariaDB/Mysql, dan PHP) di Ubuntu

Jika sudah tampil seperti diatas nginX sudah berhasil di install dan running.

Install MariaDB

Selanjutnya install Database MariaDB versi open source dari Mysql, untuk installnya gunakan perintah berikut ini.

# sudo apt-get install mariadb-server -y

Setelah proses instalasi selesai lanjutkan untuk menjalankan perintah secure instalation untuk mengamankan akses MariaDB dari luar host.

# sudo mariadb-secure-installation

Untuk kemanan disarankan jawab ‘Y’ untuk semua prompt konfigurasi yang ditanyakan. Pertama kali akan menanyakan root password dari mysql cukup tekan key Enter.

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Lanjut ke penggunaan unix_socket merupakan plugin yang terinstall dalam default instalasi MariaDB. Fungsinya membuat autentifikasi login ke mariadb berdasarkan user System OS ubuntu. Jadi login ke root user tidak bisa dilakukan semua user kecuali diberikan hak.

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
 ... Success!

Selanjutnya setup password dari root database MariaDB.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Selanjutnya penghapusan anonymous users, disallow root login remotely, test database and access dan Reload privilege tables now. Prompt ini wajib di jawab ‘Y’.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!

By default, MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Untuk pertama Kalinya coba login ke database MariaDB dengan perintah berikut dan menajalan perintah sederhana.

# sudo mariadb
atau
# sudo mysql
Cara Install LEMP (Linux, Nginx, MariaDB/Mysql, dan PHP) di Ubuntu

Dengan tampilan out seperti diatas maka instalasi database MariaDB sudah berhasil.

Install PHP

Selanjutnya Install PHP dengan php-fpm (php fastcgi process manager), Dalam instalasi ini ditambahkan juga module mysql untuk koneksi database ke MariaDB.

untuk instalasinya bisa gunakan perintah berikut ini.

# sudo apt-get install php8.1-fpm php8.1-mysql -y

Setelah instalasi php selesai module php yang didapat adalah

root@ubuntusobit:~# ll /etc/php/8.1/mods-available/
total 96
drwxr-xr-x 2 root root 4096 Sep 27 19:10 ./
drwxr-xr-x 5 root root 4096 Sep 27 19:10 ../
-rw-r--r-- 1 root root   74 Aug 18 11:41 calendar.ini
-rw-r--r-- 1 root root   71 Aug 18 11:41 ctype.ini
-rw-r--r-- 1 root root   70 Aug 18 11:41 exif.ini
-rw-r--r-- 1 root root   69 Aug 18 11:41 ffi.ini
-rw-r--r-- 1 root root   74 Aug 18 11:41 fileinfo.ini
-rw-r--r-- 1 root root   69 Aug 18 11:41 ftp.ini
-rw-r--r-- 1 root root   73 Aug 18 11:41 gettext.ini
-rw-r--r-- 1 root root   71 Aug 18 11:41 iconv.ini
-rw-r--r-- 1 root root   71 Aug 18 11:41 mysqli.ini
-rw-r--r-- 1 root root   72 Aug 18 11:41 mysqlnd.ini
-rw-r--r-- 1 root root   79 Aug 18 11:41 opcache.ini
-rw-r--r-- 1 root root   69 Aug 18 11:41 pdo.ini
-rw-r--r-- 1 root root   74 Aug 18 11:41 pdo_mysql.ini
-rw-r--r-- 1 root root   70 Aug 18 11:41 phar.ini
-rw-r--r-- 1 root root   71 Aug 18 11:41 posix.ini
-rw-r--r-- 1 root root   76 Aug 18 11:41 readline.ini
-rw-r--r-- 1 root root   71 Aug 18 11:41 shmop.ini
-rw-r--r-- 1 root root   73 Aug 18 11:41 sockets.ini
-rw-r--r-- 1 root root   73 Aug 18 11:41 sysvmsg.ini
-rw-r--r-- 1 root root   73 Aug 18 11:41 sysvsem.ini
-rw-r--r-- 1 root root   73 Aug 18 11:41 sysvshm.ini
-rw-r--r-- 1 root root   75 Aug 18 11:41 tokenizer.ini

Jika ada keperluan khusus yang memerlukan module lainnya bisa dicari melali repository dengan perintah.

# apt-cache search php8.1-

Cek kembali versi php yang aktif.

# sudo php -v
root@ubuntusobit:~# php -v
PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies

Dengan tampilan diatas php 8.1 sudah siap digunakan.

Konfigurasi nginX agar bisa merespon PHP.

Sebelum bisa merespon php file nginx perlu dilakukan setting. Defaultnya nginX di ubuntu 22 memiliki direktori aktif /var/www/html. Untuk lokasi konfigurasi ada di dalam /etc/nginx.

Lokasi setting ini berapa di file /etc/nginx/sites-available/default. Ada baiknya sebelum melakukan edit kedalam file konfigurasi melakukan backup file.

# sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bk

Edit file konfigurasi default nginX. Dengan editor apapun yang kalian kuasai, dalam contoh ini menggunakan nano.

# sudo nano /etc/nginx/sites-available/default

Tampilan Awal isi file sebelum konfigurasi

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
				 try_files $uri $uri/ =404;
        }
        
  

}

Tambahkan beberapa block script konfigurasi berikut ini dan save.

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.php index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
				 try_files $uri $uri/ =404;
        }
        location ~\.php {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        }
        location ~/\.ht {
                deny all;
        }
        
      
}

Pada penambahan diatas ditambahkan block berikut ini :

  • location ~\.php
  • index index.php
  • location ~/\.ht

Cek kembali agar tidak ada kesalahan syntax yang membuat service nginX gagal start nantinya.

# sudo nginx -t

Hasil test sukses seperti dibawah.

root@ubuntusobit:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@ubuntusobit:~#

Lanjut ke restart service nginX

# sudo systemctl restart nginx.service

Sampai Disini konfigurasi LEMP sudah selesai.

Test Hasil Akhir

Untuk Test uji coba bisa membuat file php didalam direktori /var/www/html

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

Isikan dengan php script seperti dibawah ini dan save.

<?php
phpinfo();
?>

Lalu akses file info.php melalui ip http://192.168.56.108/info.php, hasilnya akan seperti gambar dibawah ini.

Cara Install LEMP (Linux, Nginx, MariaDB/Mysql, dan PHP) di Ubuntu

Kesimpulan

Dengan begini nginx sebagai Web serber, MariaDB sebagai database server, dan PHP sebagai skrip server side yang digunakan untuk membangun sebuah website sudah selesai. Siap digunakan dalam setting standard instalasi belum bisa merespon banyak domain karena belum dibuatkan server block nya. Server block sendiri berguna seperti Virtual Host diapache. Untuk Setup server block nginX agar bisa merespon banyak domain dengan dokumen root yang berbeda bisa membaca artikel berikutnya.

Similar Posts

5 1 vote
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments