Cara Install LEMP Stack
(Nginx, MariaDB, PHP) di Ubuntu
Terbaru 2023

By Last updated on

LEMP Stack merupakan kombinasi perangkat lunak yang memungkinkan anda menyajikan halaman website dinamik dan juga web aplikasi. Sekarang, mari kita telaah lebih dalam untuk memahami apa sebenarnya LEMP Stack itu.

Apa itu LEMP Stack?

LEMP merupakan singkatan dari Linux Os, dengan (e)Nginx sebagai web servernya, basis data nya menggunakan MySQL atau MariaDB, dan diperuntukkan untuk jenis-jenis web yang menggunakan bahasa program PHP.

Jika diperhatikan dengan seksama huruf depan masing-masing software diatas yang saya tandai dengan bold menjadi satu singkatan yaitu LEMP.

Jadi dengan menginstall LEMP Stack ini kita bisa menjalankan web-web sejenis WordPress dan juga Laravel, ini merupakan CMS dan juga web framework yang menggunakan PHP sebagai bahasa program nya.

Sebelum kamu mengikuti tutorial ini, sebaiknya untuk melakukan penginstallan melalui user non-root, yang mempunyai akses sudo. Untuk melakukan setup akun yang seperti ini, kamu bisa ikuti tutorialnya di halaman Langkah pertama setup server di Ubuntu.

Jika kamu sudah mengikuti tutorial diatas, berikutnya kamu bisa mengikuti langkah-langkah dibawah ini.

Step 1 Install Nginx

Untuk web server kita akan menggunakan Nginx,

Nginx merupakan open source web server yang sudah digunakan oleh 400 juta website dan 67% dari 10 ribu top web dunia.

Untuk menginstall Nginx kamu bisa menggunakan perintah berikut.

sudo apt update
sudo apt install nginx -y

Selangkah lagi untuk memastikan bahwa nginx benar-benar berjalan

sudo service nginx start

Selanjutnya kamu bisa mengetest untuk mengetahui Nginx sudah up dan running dengan mengakses ip server di web browser.

Untuk mengetahui ip server dari server ubuntu kamu bisa menjalankan command berikut.

curl ifconfig.co

Lalu akan muncul alamat ip publik dari server kamu dan selanjutnya buka ip tersebut di web browser.

# buka di web browser
http://ipserver

Maka tampilannya seharusnya akan seperti ini.

welcome-to-nginx

tetapi, jika kamu mendapati error saat membuka ip di browser, errornya terlihat seperti berikut

error saat buka ip di browser

Maka kemungkinan firewall ufw di server kami aktif, kamu bisa mengecek nya dengan perintah berikut

sudo ufw status

Hasilnya akan seperti ini

sudo ufw status

Itu artinya port dari Nginx belum ditambahkan sebagai port yang diizinkan di firewall server kamu. Kamu harus menambahkan nya dengan perintah berikut:

sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx Full'

Nginx HTTP adalah port untuk non https atau yang biasa kita kenal dengan port 80, dan Nginx Full adalah port untuk koneksi https atau yang biasa kita kenal dengan port 443.

Lalu jika kita melakukan perintah sudo ufw status sekali lagi maka, hasilnya seperti ini

sudo ufw status after allow nginx

Jika hasilnya sudah seperti itu sekarang coba buka http://ipserver di browser maka kamu akan melihat web page sederhana dengan tulisan “Welcome to nginx!” seperti diatas.

Step 2 Install MariaDB

Sekarang server kamu sudah terinstall Nginx web server, selanjutnya halaman website dinamis biasanya membutuhkan database sebagai basis data nya.

dan sekarang kita akan menginstall MariaDB sebagai database management system untuk server kita.

Untuk menginstall MariaDB kamu bisa menjalankan command berikut.

sudo apt install mariadb-server -y

Sekarang MariaDB database software sudah terinstall, tapi konfigurasi belum selesai.

Untuk memperkuat keamanan, kita perlu mensetting ulang settingan default dari MariaDB. Kamu harus menjalankan perintah berikut.

sudo mysql_secure_installation

Ketika kamu menjalankan perintah diatas, pertama kali kamu akan disuruh untuk memilih tipe dari VALIDATE PASSWORD.

VALIDATE PASSWORD PLUGIN nantinya akan menilai kadar kekuatan password yang akan kamu input.

Pilih 0 untuk password tipe LOW, dan 1 untuk tipe MEDIUM, dan 2 untuk tipe STRONG.

Setelah enter kamu akan diminta untuk memasukkan password untuk root.

Please set the password for root here.

New password:

Re-enter new password:

Selanjutnya ikuti seluruh pertanyaan sisa dengan jawaban y untuk Yes agar keamanan database kamu optimal.

Step 3 Install PHP 8.1

Setelah menginstall Nginx sebagai web server dan juga MariaDB sebagai database management system, selanjutnya kita perlu menginstall PHP untuk memproses dinamik konten.

Di Nginx tidak terdapat PHP processing manager seperti web server lainnya.

Untuk itu kita perlu ekstensi tambahan bernama php-fpm dimana ini merupakan singkatan dari “fastCGI process manager”. Karena kita akan menggunakan php versi terbaru yaitu php8.1 maka kita akan menginstall dengan command php8.1-fpm.

sudo apt install php8.1-fpm -y

Kamu juga bisa menjalankan perintah berikut untuk menginstall ekstensi yang dibutuhkan untuk menjalankan web framework terkini seperti WordPress dan juga Laravel.

sudo apt install php8.1-{curl,gd,intl,mbstring,soap,xml,xmlrpc,zip,mysql} -y

Dalam satu command diatas akan menginstall sekaligus ekstensi php8.1-curl, php8.1-gd, php8.1-intl, php8.1-mbstring, php8.1-soap, php8.1-xml, php8.1-xmlrpc, php8.1-zip dan juga php8.1-mysql.

Step 4 Nginx Server Block

Server block Nginx mirip dengan virtual host dalam Apache. Kita tidak akan menggunakan blok server default karena tidak mencukupi untuk menjalankan kode PHP, dan jika kita mengubahnya, itu akan menjadi berantakan. Oleh karena itu, hapus tautan simbolis default dalam direktori sites-enabled dengan menjalankan perintah berikut.

Blok server default biasanya tersedia di path berikut /etc/nginx/sites-available/default. Dan kita akan menghapus nya dengan perintah:

sudo rm /etc/nginx/sites-available/default

Lalu kita akan membuat server blok default baru dengan editor nano

sudo nano /etc/nginx/conf.d/default.conf

Copy konfigurasi berikut ke dalam file default.conf diatas

server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /var/www/html/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Save dan close file tersebut. Pada editor nano tekan Ctrl+X dan Enter untuk save sekaligus exit.

Setelah itu cek konfigurasi tersebut apakah ada error atau tidak dengan perintah berikut

sudo nginx -t

Jika outputnya seperti dibawah ini, maka Nginx server block yang ditambahkan tadi akan berjalan sempurna.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Langkah akhir adalah reload Nginx dengan perintah berikut.

sudo systemctl reload nginx

Step 5 Lakukan Test

Nah, sampai di point ini semua yang dibutuhkan sudah terinstall, dari Nginx, MySQL dan juga PHP. Dan juga kita sudah melakukan konfigurasi pada virtual host Nginx.

Selanjutnya kita bisa lakukan test dengan membuat file php yang berisi script untuk menampilkan php info.

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

Lalu input script dibawah ini.

<?php
phpinfo();

Jika sudah tekan Ctrl+x lalu pilih Y dan enter untuk menyimpannya.

Lalu buka url berikut di browser kamu.

http://ipserver/info.php

Jangan lupa ganti ipserver dengan ip publik server kamu.

Jika berhasil maka tampilan di browser akan seperti ini.

tampilan php info di browser

Kamu bisa hapus kembali file test tadi dengan command berikut.

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

Step 6 Improve Performa PHP

Konfigurasi PHP default /etc/php/8.1/fpm/php.ini disesuaikan untuk server dengan sumber daya yang sangat terbatas, seperti server dengan RAM 256MB. Untuk meningkatkan kinerja aplikasi web, Kita sebaiknya mengubah beberapa pengaturan tersebut.

Kita dapat mengedit berkas konfigurasi PHP php.ini yang ada, tetapi praktek yang baik adalah membuat berkas konfigurasi PHP kustom. Dengan cara ini, ketika Kita melakukan pembaruan ke versi baru PHP 8.1, konfigurasi kustom Kita akan tetap terjaga.

sudo nano /etc/php/8.1/fpm/conf.d/60-custom.ini

tambahkan kode berikut

; Maximum amount of memory a script may consume. Default is 128M
memory_limit = 512M

; Maximum allowed size for uploaded files. Default is 2M.
upload_max_filesize = 20M

; Maximum size of POST data that PHP will accept. Default is 2M.
post_max_size = 20M

; The OPcache shared memory storage size. Default is 128
opcache.memory_consumption=256

; The amount of memory for interned strings in Mbytes. Default is 8.
opcache.interned_strings_buffer=32

Save dan close file tersebut, lalu lakukan reload pada php8.1

sudo systemctl reload php8.1-fpm

Kesimpulan

Panduan ini telah membantu Anda untuk mensetup kombinasi LEMP (Linux, Nginx, MySQL, dan PHP) pada sistem Ubuntu 22.04 LTS. Sekarang, Anda dapat meng-host aplikasi web berbasis PHP di server Anda.

Sekian, semoga bermanfaat. Jangan lupa share jika artikel ini bermanfaat!

Referensi

About The Author

About image

Founder Gegeriyadi.com, layanan yang sudah 10 tahun bergerak di bidang Web Development Services yang juga intens update seputar SEO dan juga Web Optimization...