Cara Menginstal Linux, Nginx, MySQL, PHP (LEMP) Stack di Ubuntu: Panduan Lengkap
Stack LEMP — akronim untuk Linux, Nginx, MySQL, dan PHP — adalah salah satu konfigurasi web server yang paling banyak diadopsi untuk menggerakkan situs web dinamis dan aplikasi web berkinerja tinggi. Dengan menggabungkan stabilitas Linux yang solid, kecepatan Nginx yang luar biasa, kemampuan manajemen data MySQL yang robust, dan keserbagunaan PHP, stack LEMP memberikan lingkungan hosting yang powerful, scalable, dan resource-efficient.
Baik Anda menerapkan blog pribadi, situs web bisnis, atau aplikasi enterprise yang kompleks, stack LEMP yang dikonfigurasi dengan benar memberikan Anda skalabilitas yang lebih baik, waktu muat halaman yang lebih cepat, dan manajemen memori yang efisien — terutama dalam kondisi traffic tinggi.
Jika Anda membutuhkan fondasi yang andal untuk menjalankan stack ini, VPS Hosting AlexHost menyediakan server virtual berbasis Linux berkinerja tinggi dengan akses root penuh, memberikan Anda kontrol lengkap atas setiap komponen lingkungan LEMP Anda. Pasangkan dengan Sertifikat SSL untuk mengamankan aplikasi Anda sejak hari pertama.
Dalam panduan komprehensif ini, kami akan memandu Anda melalui setiap langkah instalasi dan konfigurasi stack LEMP lengkap di server Ubuntu — dari persiapan sistem awal hingga pengujian lingkungan PHP live Anda.
Daftar Isi
- Prasyarat
- Perbarui Sistem Anda
- Instal Nginx
- Instal MySQL
- Instal PHP
- Konfigurasi Nginx untuk Memproses PHP
- Buat dan Uji File Info PHP
- Kesimpulan
1. Prasyarat
Sebelum Anda memulai, pastikan Anda memiliki hal-hal berikut:
- Server yang menjalankan Ubuntu 18.04, 20.04, atau 22.04 LTS
- Akun pengguna dengan privilege sudo
- Akses SSH atau akses terminal langsung ke server Anda
- Nama domain terdaftar (opsional tetapi direkomendasikan untuk deployment produksi — Anda dapat mendaftarnya melalui Pendaftaran Domain AlexHost)
> Pro Tip: Untuk lingkungan yang bersih dan terisolasi dengan resource yang terjamin, paket VPS Hosting adalah titik awal ideal untuk deployment LEMP apa pun.
2. Perbarui Sistem Anda
Sebelum menginstal paket apa pun, sangat penting untuk menyegarkan indeks paket Anda dan menerapkan semua pembaruan yang tertunda. Ini memastikan Anda bekerja dengan versi terbaru dan paling aman dari semua software.
Buka terminal Anda dan jalankan:
sudo apt update && sudo apt upgrade -yPerintah ini memperbarui database paket lokal dan meningkatkan semua paket yang terinstal ke versi terbaru yang tersedia.
3. Instal Nginx
Nginx (diucapkan “engine-x”) adalah web server berkinerja tinggi yang berbasis event dan reverse proxy. Tidak seperti Apache, Nginx menangani koneksi concurrent dengan konsumsi memori minimal, menjadikannya pilihan utama untuk lingkungan traffic tinggi.
Langkah 1: Instal Nginx
sudo apt install nginx -yLangkah 2: Mulai dan Aktifkan Nginx
Setelah instalasi, mulai layanan Nginx dan konfigurasikan untuk diluncurkan secara otomatis saat boot sistem:
sudo systemctl start nginx
sudo systemctl enable nginxLangkah 3: Verifikasi Nginx Berjalan
Periksa status layanan untuk mengkonfirmasi Nginx aktif:
sudo systemctl status nginxAnda harus melihat output yang menunjukkan layanan active (running). Anda juga dapat membuka web browser dan menavigasi ke alamat IP server Anda:
http://your_server_ipJika Nginx berjalan dengan benar, Anda akan disambut oleh halaman default “Welcome to nginx!”.
Langkah 4: Konfigurasi Firewall (Jika Berlaku)
Jika Anda memiliki UFW (Uncomplicated Firewall) diaktifkan, izinkan traffic HTTP dan HTTPS:
sudo ufw allow 'Nginx Full'
sudo ufw status4. Instal MySQL
MySQL adalah sistem manajemen database relasional (RDBMS) open-source yang powerful dan berfungsi sebagai backbone data untuk sebagian besar aplikasi web dinamis, termasuk WordPress, Joomla, dan aplikasi PHP custom.
Langkah 1: Instal MySQL Server
sudo apt install mysql-server -yLangkah 2: Amankan Instalasi MySQL
Setelah diinstal, jalankan script hardening keamanan built-in. Script ini membantu Anda menetapkan password root yang kuat, menghapus pengguna anonim, menonaktifkan login root jarak jauh, dan menghapus database test:
sudo mysql_secure_installationAnda akan diminta dengan serangkaian pertanyaan. Respons yang direkomendasikan untuk server produksi adalah:
| Prompt | Jawaban yang Direkomendasikan |
|---|---|
| Atur komponen VALIDATE PASSWORD? | Ya |
| Tingkat kebijakan validasi password | 2 (STRONG) |
| Hapus pengguna anonim? | Ya |
| Larang login root secara remote? | Ya |
| Hapus database test? | Ya |
| Muat ulang tabel privilege? | Ya |
Langkah 3: Verifikasi MySQL Berjalan
sudo systemctl status mysqlLangkah 4: Login ke MySQL (Verifikasi Opsional)
sudo mysql -u root -pMasukkan password root Anda saat diminta. Ketik exit untuk meninggalkan shell MySQL.
5. Instal PHP
PHP (Hypertext Preprocessor) adalah bahasa scripting sisi server yang memproses konten dinamis dan berkomunikasi dengan MySQL untuk melayani halaman web berbasis data. Saat menggunakan Nginx, PHP ditangani melalui PHP-FPM (FastCGI Process Manager), yang memproses permintaan PHP secara independen dari web server untuk performa yang ditingkatkan.
Langkah 1: Instal PHP-FPM dan Ekstensi MySQL
sudo apt install php-fpm php-mysql -yAnda mungkin juga ingin menginstal ekstensi PHP yang umum digunakan untuk kompatibilitas aplikasi yang lebih luas:
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -yLangkah 2: Konfigurasi PHP-FPM untuk Keamanan
Buka file konfigurasi PHP-FPM. Ganti 8.1 dengan versi PHP yang Anda instal (periksa dengan php -v):
sudo nano /etc/php/8.1/fpm/php.iniTemukan direktif cgi.fix_pathinfo dan atur ke 0 untuk mencegah kerentanan keamanan kritis:
cgi.fix_pathinfo=0> Mengapa ini penting: Jika cgi.fix_pathinfo diatur ke 1, PHP akan mencoba mengeksekusi file terdekat yang dapat ditemukannya jika file PHP yang diminta tidak ada. Perilaku ini dapat dieksploitasi oleh penyerang untuk mengeksekusi kode arbitrer.
Simpan dan tutup file (Ctrl+X, kemudian Y, kemudian Enter).
Langkah 3: Restart PHP-FPM
Terapkan perubahan konfigurasi dengan me-restart layanan PHP-FPM:
sudo systemctl restart php8.1-fpm6. Konfigurasi Nginx untuk Memproses PHP
Secara default, Nginx tidak tahu cara menangani file PHP. Anda perlu membuat server block (setara Nginx dari virtual host Apache) yang menginstruksikan Nginx untuk meneruskan permintaan PHP ke PHP-FPM untuk pemrosesan.
Langkah 1: Buat Direktori Web Root
Buat direktori tempat file website Anda akan disimpan:
sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domainGanti your_domain dengan nama domain aktual Anda atau nama proyek deskriptif.
Langkah 2: Buat Server Block Nginx Baru
Buat file konfigurasi Nginx baru untuk situs Anda:
sudo nano /etc/nginx/sites-available/your_domainTambahkan blok konfigurasi berikut. Baca komentar inline dengan hati-hati — mereka menjelaskan apa yang dilakukan setiap direktif:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain; # Replace with your domain or server IP
root /var/www/your_domain; # Document root — where your files live
index index.php index.html index.htm; # Default files to serve
# Handle all requests; return 404 if file not found
location / {
try_files $uri $uri/ =404;
}
# Pass PHP scripts to PHP-FPM for processing
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Adjust PHP version as needed
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Deny access to hidden files (e.g., .htaccess)
location ~ /.ht {
deny all;
}
}> Penting: Ganti your_domain dengan nama domain aktual Anda dan sesuaikan php8.1-fpm.sock agar sesuai dengan versi PHP yang Anda instal.
Langkah 3: Aktifkan Server Block
Buat symbolic link dari sites-available ke sites-enabled untuk mengaktifkan konfigurasi:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Untuk menghindari potensi masalah memori hash bucket, juga merupakan praktik yang baik untuk membuka konfigurasi Nginx utama dan memastikan direktif server_names_hash_bucket_size tidak dikomentari:
sudo nano /etc/nginx/nginx.confTemukan dan hapus komentar:
server_names_hash_bucket_size 64;Langkah 4: Uji Konfigurasi Nginx
Sebelum me-restart Nginx, selalu uji konfigurasi untuk kesalahan syntax:
sudo nginx -tJika output menunjukkan:
nginx: configuration file /etc/nginx/nginx.conf test is successfulAnda siap untuk melanjutkan.
Langkah 5: Restart Nginx
Terapkan semua perubahan dengan me-restart layanan Nginx:
sudo systemctl restart nginx7. Buat dan Uji File Info PHP
Untuk mengkonfirmasi bahwa Nginx dengan benar meneruskan permintaan PHP ke PHP-FPM, buat file test PHP sederhana di document root Anda.
Langkah 1: Buat File Info PHP
sudo nano /var/www/your_domain/info.phpTambahkan konten berikut:
<?php
phpinfo();
?>Simpan dan tutup file.
Langkah 2: Akses Halaman Info PHP
Buka web browser Anda dan navigasikan ke:
http://your_domain/info.phpAtau, jika Anda belum mengkonfigurasi domain:
http://your_server_ip/info.phpAnda harus melihat halaman informasi PHP — gambaran detail tentang instalasi PHP Anda, modul yang dimuat, nilai konfigurasi, dan variabel lingkungan. Ini mengkonfirmasi bahwa ketiga komponen (Nginx, PHP-FPM, dan MySQL) bekerja bersama dengan benar.
Langkah 3: Hapus File Info PHP (Langkah Keamanan Kritis)
Setelah Anda mengkonfirmasi semuanya berfungsi, hapus file info.php segera. File ini mengekspos detail konfigurasi server sensitif yang dapat dieksploitasi oleh aktor jahat:
sudo rm /var/www/your_domain/info.php8. Langkah Selanjutnya: Hardening dan Optimalkan Stack LEMP Anda
Dengan stack LEMP Anda berjalan, pertimbangkan langkah-langkah tambahan berikut untuk mempersiapkan server Anda untuk produksi:
Aktifkan HTTPS dengan Sertifikat SSL Gratis
Amankan situs Anda dengan enkripsi TLS/SSL menggunakan Certbot dan Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domainAtau, jelajahi Sertifikat SSL AlexHost untuk sertifikat yang divalidasi secara komersial premium yang memberikan tingkat kepercayaan lebih tinggi untuk aplikasi bisnis dan e-commerce.
Optimalkan Performa Nginx
Tambahkan direktif berikut ke konfigurasi Nginx Anda untuk meningkatkan performa:
# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Atur Pengguna MySQL Dedicated
Hindari menggunakan akun root MySQL untuk aplikasi Anda. Buat pengguna database dedicated dengan privilege terbatas:
CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;Pertimbangkan Panel Kontrol untuk Manajemen yang Lebih Mudah
Jika Anda lebih suka antarmuka grafis untuk mengelola stack LEMP, virtual host Nginx, database, dan akun email Anda, pertimbangkan untuk menerapkan panel kontrol. AlexHost menawar
