Cara Menginstal Linux, Nginx, MySQL, PHP (LEMP) Stack di Ubuntu: Panduan Lengkap
LEMP stack — singkatan dari Linux, Nginx, MySQL, dan PHP — adalah salah satu konfigurasi web server yang paling banyak diadopsi untuk menjalankan website dinamis dan aplikasi web berkinerja tinggi. Dengan menggabungkan stabilitas Linux yang kokoh, kecepatan Nginx yang luar biasa, kemampuan manajemen data MySQL yang tangguh, dan keserbagunaan PHP, LEMP stack memberikan lingkungan hosting yang powerful, scalable, dan resource-efficient.
Baik Anda menerapkan blog pribadi, website bisnis, atau aplikasi enterprise yang kompleks, LEMP stack yang dikonfigurasi dengan baik 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 virtual server berbasis Linux berkinerja tinggi dengan akses root penuh, memberikan Anda kontrol lengkap atas setiap komponen lingkungan LEMP Anda. Padukan dengan SSL Certificate untuk mengamankan aplikasi Anda sejak hari pertama.
Dalam panduan komprehensif ini, kami akan memandu Anda melalui setiap langkah instalasi dan konfigurasi LEMP stack lengkap di server Ubuntu — dari persiapan sistem awal hingga pengujian lingkungan PHP live Anda.
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 hak istimewa 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 sumber daya yang terjamin, paket VPS Hosting adalah titik awal yang 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 perangkat lunak.
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 dan reverse proxy berkinerja tinggi yang berbasis event-driven. Tidak seperti Apache, Nginx menangani koneksi bersamaan dengan konsumsi memori minimal, menjadikannya pilihan utama untuk lingkungan lalu lintas 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 navigasi ke alamat IP server Anda:
http://your_server_ipJika Nginx berjalan dengan benar, Anda akan disambut oleh halaman default “Welcome to nginx!”.
Langkah 4: Konfigurasikan Firewall (Jika Berlaku)
Jika Anda memiliki UFW (Uncomplicated Firewall) diaktifkan, izinkan lalu lintas HTTP dan HTTPS:
sudo ufw allow 'Nginx Full'
sudo ufw status4. Instal MySQL
MySQL adalah sistem manajemen basis data relasional (RDBMS) yang powerful dan open-source yang berfungsi sebagai tulang punggung data untuk sebagian besar aplikasi web dinamis, termasuk WordPress, Joomla, dan aplikasi PHP kustom.
Langkah 1: Instal MySQL Server
sudo apt install mysql-server -yLangkah 2: Amankan Instalasi MySQL
Setelah diinstal, jalankan skrip pengerasan keamanan bawaan. Skrip ini membantu Anda menetapkan kata sandi root yang kuat, menghapus pengguna anonim, menonaktifkan login root jarak jauh, dan menghapus basis data pengujian:
sudo mysql_secure_installationAnda akan diminta dengan serangkaian pertanyaan. Respons yang direkomendasikan untuk server produksi adalah:
| Prompt | Jawaban yang Direkomendasikan |
|---|---|
| Siapkan komponen VALIDATE PASSWORD? | Ya |
| Tingkat kebijakan validasi kata sandi | 2 (STRONG) |
| Hapus pengguna anonim? | Ya |
| Larang login root dari jarak jauh? | Ya |
| Hapus basis data pengujian? | 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 kata sandi root Anda saat diminta. Ketik exit untuk meninggalkan shell MySQL.
5. Instal PHP
PHP (Hypertext Preprocessor) adalah bahasa skrip sisi server yang memproses konten dinamis dan berkomunikasi dengan MySQL untuk melayani halaman web yang digerakkan data. Saat menggunakan Nginx, PHP ditangani melalui PHP-FPM (FastCGI Process Manager), yang memproses permintaan PHP secara independen dari server web untuk kinerja yang lebih baik.
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: Konfigurasikan PHP-FPM untuk Keamanan
Buka file konfigurasi PHP-FPM. Ganti 8.1 dengan versi PHP yang terinstal (periksa dengan php -v):
sudo nano /etc/php/8.1/fpm/php.iniTemukan direktif cgi.fix_pathinfo dan aturnya ke 0 untuk mencegah kerentanan keamanan yang 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 memulai ulang 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 dengan virtual host Apache di Nginx) yang menginstruksikan Nginx untuk meneruskan permintaan PHP ke PHP-FPM untuk diproses.
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 yang 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 cermat — 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 untuk mencocokkan versi PHP yang terinstal.
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 memulai ulang Nginx, selalu uji konfigurasi untuk kesalahan sintaks:
sudo nginx -tJika output menampilkan:
nginx: configuration file /etc/nginx/nginx.conf test is successfulAnda siap untuk melanjutkan.
Langkah 5: Mulai Ulang Nginx
Terapkan semua perubahan dengan memulai ulang layanan Nginx:
sudo systemctl restart nginx7. Buat dan Uji File PHP Info
Untuk mengonfirmasi bahwa Nginx dengan benar meneruskan permintaan PHP ke PHP-FPM, buat file uji PHP sederhana di root dokumen Anda.
Langkah 1: Buat File PHP Info
sudo nano /var/www/your_domain/info.phpTambahkan konten berikut:
<?php
phpinfo();
?>Simpan dan tutup file.
Langkah 2: Akses Halaman PHP Info
Buka browser web Anda dan navigasikan ke:
http://your_domain/info.phpAtau, jika Anda belum mengonfigurasi domain:
http://your_server_ip/info.phpAnda akan melihat halaman informasi PHP — gambaran terperinci tentang instalasi PHP Anda, modul yang dimuat, nilai konfigurasi, dan variabel lingkungan. Ini mengonfirmasi bahwa ketiga komponen (Nginx, PHP-FPM, dan MySQL) bekerja bersama dengan benar.
Langkah 3: Hapus File PHP Info (Langkah Keamanan Kritis)
Setelah Anda mengonfirmasi semuanya berfungsi, hapus file info.php segera. File ini mengekspos detail konfigurasi server sensitif yang dapat dimanfaatkan oleh aktor jahat:
sudo rm /var/www/your_domain/info.php8. Langkah Selanjutnya: Hardening dan Optimasi 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";
}Siapkan Pengguna MySQL Khusus
Hindari menggunakan akun root MySQL untuk aplikasi Anda. Buat pengguna database khusus 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 menawarkan VPS dengan cPanel dan berbagai Panel Kontrol VPS lainnya untuk menyederhanakan administrasi server tanpa mengorbankan performa atau kontrol.
9. Kesimpulan
Anda telah berhasil menginstal dan mengonfigurasi stack LEMP (Linux, Nginx, MySQL, PHP) yang lengkap di server Ubuntu Anda. Berikut adalah ringkasan cepat dari apa yang telah Anda capai:
- ✅ Nginx diinstal, dimulai, dan dikonfigurasi sebagai web server Anda
- ✅ MySQL diinstal dan diamankan dengan skrip pengerasan
- ✅ PHP-FPM diinstal dengan konfigurasi yang berfokus pada keamanan
- ✅ Blok server Nginx dikonfigurasi untuk merutekan permintaan PHP ke PHP-FPM
- ✅ Pemrosesan PHP diverifikasi melalui halaman uji
phpinfo()
Stack ini memberikan Anda fondasi yang siap produksi untuk menghosting hampir semua aplikasi berbasis PHP — dari WordPress dan Laravel hingga platform khusus yang dibuat sendiri. Kombinasi arsitektur berbasis acara Nginx dan manajemen proses PHP-FPM membuatnya sangat cocok untuk beban kerja dengan konkurensi tinggi.
Untuk performa dan keandalan terbaik, hosting stack LEMP Anda di lingkungan Linux yang dirancang khusus. Paket VPS Hosting AlexHost menawarkan penyimpanan didukung SSD, RAM terjamin, akses root penuh, dan dukungan teknis 24/7 — semua yang Anda butuhkan untuk menjalankan aplikasi web yang cepat, aman, dan dapat diskalakan.
Ingat untuk terus memperbarui semua komponen secara berkala, pantau log server Anda, dan terapkan firewall serta sistem deteksi intrusi sebagai bagian dari postur keamanan berkelanjutan Anda.
untuk semua layanan hosting