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.
tetapi, jika kamu mendapati error saat membuka ip di browser, errornya terlihat seperti berikut
Maka kemungkinan firewall ufw di server kami aktif, kamu bisa mengecek nya dengan perintah berikut
sudo ufw status
Hasilnya akan seperti ini
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
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.
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
Gege Riyadi
Founder Gegeriyadi.com, layanan yang sudah 10 tahun bergerak di bidang Web Development Services yang juga intens update seputar SEO dan juga Web Optimization... [Read full bio]