Cara Instalasi LEMP Stack di Ubuntu
0 people liked this article
A. Pendahuluan
LEMP Stack adalah kumpulan perangkat lunak yang umum digunakan untuk menjalankan aplikasi dan website berbasis web pada server Linux. LEMP merupakan singkatan dari Linux, Nginx, MySQL/MariaDB, dan PHP. Kombinasi ini banyak dipilih karena ringan, cepat, dan stabil untuk kebutuhan pengembangan maupun produksi.
Pada artikel ini, proses instalasi LEMP Stack dilakukan di Ubuntu 24 menggunakan bash script agar tahapan instalasi menjadi lebih cepat, konsisten, dan mudah diulang. Dengan pendekatan otomatisasi ini, administrator sistem maupun developer dapat mengurangi kesalahan konfigurasi manual serta mempercepat proses penyediaan server.
B. Konfigurasi
Sebelum melakukan konfigurasi , penulis telah menyiapkan 1 VM(server) dengan spesifikasi
vCpu : 2core
RAM : 2Gb
Sebelum memulai proses instalasi, pastikan server/VM yang akan digunakan telah dilakukan update sistem operasi agar seluruh package berada pada versi terbaru dan kompatibel dengan proses instalasi.
A. Pre-Installasi
Pada tahap ini, dilakukan pembuatan bash script yang digunakan untuk mengotomatisasi proses instalasi LEMP Stack di Ubuntu 24. Dengan menggunakan script, proses instalasi menjadi lebih cepat, terstruktur, dan meminimalkan kesalahan yang dapat terjadi saat konfigurasi dilakukan secara manual.
Berikut merupakan contoh pembuatan bash script untuk instalasi LEMP Stack pada Ubuntu 24. Pertama, buat file script terlebih dahulu, lalu edit isinya menggunakan text editor
#!/bin/bash
# Menentukan interpreter yang digunakan untuk menjalankan script ini, yaitu bash
set -e
# Menghentikan eksekusi script jika ada perintah yang gagal
# ==========================================
# KONFIGURASI AWAL
# Silakan ubah nilai variabel di bawah ini
# sesuai kebutuhan sebelum script dijalankan
# ==========================================
DOMAIN="isi_nama_domain_anda"
# Menentukan nama domain yang akan dikonfigurasi
# Contoh: DOMAIN="example.com"
WEBROOT="/var/www/$DOMAIN/public_html"
# Menentukan lokasi document root website berdasarkan domain
PHPVER="8.3"
# Menentukan versi PHP yang akan digunakan
# Contoh: PHPVER="8.3"
DB_NAME="set_nama_database"
# Menentukan nama database yang akan dibuat
# Contoh: DB_NAME="example_db"
DB_USER="set_user_database"
# Menentukan nama user database yang akan dibuat
# Contoh: DB_USER="example_user"
DB_PASS="set_password_database"
# Menentukan password untuk user database
# Contoh: DB_PASS="PasswordAman123!"
# ==========================================
# KONFIGURASI AKHIR
# Tidak perlu diubah jika menggunakan
# skenario instalasi standar
# ==========================================
echo "== Update system =="
# Menampilkan informasi bahwa proses update sistem dimulai
sudo apt update && sudo apt upgrade -y
# Memperbarui daftar repository dan meng-upgrade package sistem secara otomatis
echo "== Install Nginx =="
# Menampilkan informasi bahwa proses instalasi Nginx dimulai
sudo apt install -y nginx
# Menginstal web server Nginx
echo "== Install MariaDB =="
# Menampilkan informasi bahwa proses instalasi MariaDB dimulai
sudo apt install -y mariadb-server mariadb-client
# Menginstal MariaDB server dan client
echo "== Install PHP and extensions =="
# Menampilkan informasi bahwa proses instalasi PHP dan extension dimulai
sudo apt install -y php$PHPVER-fpm php$PHPVER-cli php$PHPVER-mysql \
php$PHPVER-curl php$PHPVER-mbstring php$PHPVER-xml php$PHPVER-zip \
php$PHPVER-gd php$PHPVER-intl unzip curl
# Menginstal PHP-FPM, PHP CLI, dan ekstensi yang dibutuhkan
echo "== Enable services =="
# Menampilkan informasi bahwa service akan diaktifkan saat boot
sudo systemctl enable nginx
# Mengaktifkan service Nginx agar berjalan otomatis saat server boot
sudo systemctl enable mariadb
# Mengaktifkan service MariaDB agar berjalan otomatis saat server boot
sudo systemctl enable php$PHPVER-fpm
# Mengaktifkan service PHP-FPM agar berjalan otomatis saat server boot
echo "== Restart services =="
# Menampilkan informasi bahwa service akan direstart
sudo systemctl restart nginx
# Merestart service Nginx
sudo systemctl restart mariadb
# Merestart service MariaDB
sudo systemctl restart php$PHPVER-fpm
# Merestart service PHP-FPM
echo "== Create web root =="
# Menampilkan informasi bahwa direktori web root akan dibuat
sudo mkdir -p "$WEBROOT"
# Membuat direktori web root beserta parent directory jika belum ada
sudo chown -R $USER:$USER /var/www/$DOMAIN
# Mengubah kepemilikan direktori website ke user yang sedang menjalankan script
sudo chmod -R 755 /var/www/$DOMAIN
# Memberikan permission agar direktori dapat diakses dengan aman
echo "== Create test PHP file =="
# Menampilkan informasi bahwa file uji PHP akan dibuat
cat > /tmp/index.php <<EOF
<?php
\$conn = new mysqli("localhost", "$DB_USER", "$DB_PASS", "$DB_NAME");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>$DOMAIN</title>
</head>
<body>
<h1>LEMP Stack berhasil - $DOMAIN</h1>
<p>Website berhasil dikonfigurasi pada Ubuntu 24.</p>
<?php if (\$conn->connect_error): ?>
<p style="color:red;">Database connection failed: <?php echo \$conn->connect_error; ?></p>
<?php else: ?>
<p style="color:green;">Database connection success</p>
<?php endif; ?>
</body>
</html>
EOF
# Membuat file index.php sederhana untuk pengujian PHP dan koneksi database
sudo mv /tmp/index.php "$WEBROOT/index.php"
# Memindahkan file index.php ke web root website
echo "== Create Nginx server block for domain =="
# Menampilkan informasi bahwa konfigurasi server block domain akan dibuat
sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null <<EOF
server {
listen 80;
listen [::]:80;
server_name $DOMAIN www.$DOMAIN;
root $WEBROOT;
index index.php index.html index.htm;
access_log /var/log/nginx/${DOMAIN}_access.log;
error_log /var/log/nginx/${DOMAIN}_error.log;
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php$PHPVER-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
EOF
# Membuat file konfigurasi Nginx untuk domain utama
echo "== Create default deny server block =="
# Menampilkan informasi bahwa blok default untuk menolak akses via IP akan dibuat
sudo tee /etc/nginx/sites-available/default-deny > /dev/null <<EOF
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
EOF
# Membuat konfigurasi default Nginx untuk menolak semua akses selain domain yang dikonfigurasi
echo "== Enable Nginx site =="
# Menampilkan informasi bahwa site Nginx akan diaktifkan
sudo ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/$DOMAIN
# Mengaktifkan konfigurasi domain
sudo ln -sf /etc/nginx/sites-available/default-deny /etc/nginx/sites-enabled/default-deny
# Mengaktifkan konfigurasi penolakan akses via IP/default host
sudo rm -f /etc/nginx/sites-enabled/default
# Menghapus konfigurasi default bawaan Nginx agar tidak bentrok
echo "== Test Nginx config =="
# Menampilkan informasi bahwa konfigurasi Nginx akan diuji
sudo nginx -t
# Melakukan pengecekan syntax konfigurasi Nginx
echo "== Reload Nginx =="
# Menampilkan informasi bahwa service Nginx akan dimuat ulang
sudo systemctl reload nginx
# Memuat ulang konfigurasi Nginx tanpa menghentikan service
echo "== Create MariaDB database and user =="
# Menampilkan informasi bahwa database dan user MariaDB akan dibuat
sudo mariadb <<EOF
CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;
CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';
GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';
FLUSH PRIVILEGES;
EOF
# Membuat database, user, dan memberikan hak akses ke database
echo ""
# Menampilkan baris kosong
echo "========================================="
# Menampilkan garis pemisah output
echo "INSTALLATION COMPLETE"
# Menampilkan informasi bahwa instalasi selesai
echo "========================================="
# Menampilkan garis pemisah output
echo "Domain : $DOMAIN"
# Menampilkan domain yang dikonfigurasi
echo "Web Root : $WEBROOT"
# Menampilkan lokasi web root website
echo "DB Name : $DB_NAME"
# Menampilkan nama database
echo "DB User : $DB_USER"
# Menampilkan nama user database
echo "DB Password : $DB_PASS"
# Menampilkan password database
echo ""
# Menampilkan baris kosong
echo "Open:"
# Menampilkan informasi alamat yang bisa diakses
echo "http://$DOMAIN"
# Menampilkan URL domain
echo ""
# Menampilkan baris kosong
echo "Next:"
# Menampilkan langkah lanjutan setelah instalasi
echo "1. Pastikan DNS A record domain sudah mengarah ke server"
# Mengingatkan untuk mengarahkan DNS domain ke server
echo "2. Jalankan sudo mysql_secure_installation"
# Mengingatkan untuk menjalankan pengamanan awal MariaDB
echo "========================================="
# Menampilkan garis penutup output.
Script di atas merupakan contoh otomatisasi instalasi LEMP Stack pada Ubuntu 24. Sebelum script dijalankan, harap dilakukan pengecekan dan penyesuaian terlebih dahulu menggunakan text editor agar sesuai dengan kebutuhan environment yang digunakan.
Beberapa bagian yang perlu diperiksa dan diedit antara lain:
- Versi PHP yang akan digunakan
- Nama domain yang akan dikonfigurasi
- Path direktori website / web root
- Nama database
- Username database
- Password database / kredensial database
- Path konfigurasi Nginx
- Socket PHP-FPM yang digunakan
- Struktur direktori website apabila berbeda dengan contoh pada script
Pastikan seluruh parameter tersebut sudah sesuai sebelum proses eksekusi dilakukan. Hal ini penting untuk menghindari kegagalan instalasi, kesalahan konfigurasi service, maupun ketidaksesuaian dengan standar environment server yang digunakan.
Apabila script akan digunakan pada environment production, disarankan untuk melakukan review ulang konfigurasi dan pengujian terlebih dahulu pada server staging atau testing.
B. Installasi
Setelah dilakukan penyesuaian pada isi bash script, tahap selanjutnya adalah menjalankan proses instalasi. Proses ini akan memasang dan mengonfigurasi komponen LEMP Stack secara otomatis sesuai parameter yang telah ditentukan.
Buat file baru yang akan digunakan untuk menyimpan bash script instalasi yang telah dibuat sebelumnya.

Setelah file bash dibuat di server, lakukan copy dan paste isi script yang sebelumnya telah disiapkan pada text editor ke dalam file tersebut.

Setelah seluruh isi script ditempelkan, simpan file dengan menekan tombol Esc, kemudian ketik :wq untuk menyimpan perubahan dan keluar dari editor.
Selanjutnya, berikan permission execute pada file script agar dapat dijalankan.
chmod +x $nama File bash script yang sudah dibuat

Setelah permission execute diberikan, jalankan bash script untuk memulai proses instalasi LEMP Stack pada server../$nama File bash script yang sudah dibuat

Selanjutnya, tunggu hingga proses instalasi dan konfigurasi LEMP Stack selesai dijalankan oleh script.

Pada saat menjalankan bash script, sistem mungkin akan menampilkan prompt konfirmasi terkait pembaruan file konfigurasi, seperti pada file /etc/cloud/cloud.cfg.

Apabila notifikasi tersebut muncul, silakan pilih opsi Y untuk melanjutkan proses instalasi menggunakan versi file konfigurasi terbaru dari package. Jika tidak ingin pembaharuan bisa pilih opsi N
Setelah seluruh proses instalasi dan konfigurasi selesai dijalankan, sistem akan menampilkan informasi hasil eksekusi seperti berikut.

C. Uji Coba
Silakan akses alamat domain secara langsung melalui web browser untuk memastikan website telah berhasil dikonfigurasi.

C. Kesimpulan
Instalasi LEMP Stack pada Ubuntu 24 dapat dilakukan dengan lebih cepat dan efisien menggunakan bash script. Dengan metode ini, proses pemasangan dan konfigurasi layanan seperti Nginx, MariaDB, dan PHP dapat berjalan secara otomatis sehingga mengurangi potensi kesalahan saat dilakukan secara manual.
Meskipun demikian, sebelum script dijalankan, seluruh parameter konfigurasi tetap perlu diperiksa dan disesuaikan terlebih dahulu, seperti nama domain, versi PHP, kredensial database, path direktori website, serta konfigurasi Nginx. Dengan persiapan dan penyesuaian yang tepat, LEMP Stack dapat terpasang dengan baik dan siap digunakan untuk kebutuhan hosting website atau aplikasi berbasis PHP pada Ubuntu 24.
Semoga artikel yang telah kami sampaikan dapat membantu Anda. Anda juga dapat menemukan artikel lainnya melalui halaman Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala teknis terkait dengan layanan Biznet GIO, Anda dapat menghubungi kami melalui email support@biznetgio.com atau dapat melalui live chat di website Biznet GIO, melalui chat WhatsApp dan bisa juga melalui telepon ke nomor (021) 5714567.
Popular Articles
-
Cara Install & Konfigurasi Monitoring Cacti Serta Mengetahui Fungsi Fitur Pada Cacti
15 people say this guide was helpful
-
Cara Mengaktifkan Telnet pada Windows 7, 8 dan 10
5 people say this guide was helpful
-
Install dan Konfigurasi Samba Server pada Ubuntu
5 people say this guide was helpful
-
Jenis-Jenis Software Virtualisasi untuk Membuat Virtual Machine
7 people say this guide was helpful