15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
01.11.2024
1 +1

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

  1. Prasyarat
  2. Perbarui Sistem Anda
  3. Instal Nginx
  4. Instal MySQL
  5. Instal PHP
  6. Konfigurasi Nginx untuk Memproses PHP
  7. Buat dan Uji File Info PHP
  8. 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 -y

Perintah 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 -y

Langkah 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 nginx

Langkah 3: Verifikasi Nginx Berjalan

Periksa status layanan untuk mengkonfirmasi Nginx aktif:

sudo systemctl status nginx

Anda harus melihat output yang menunjukkan layanan active (running). Anda juga dapat membuka web browser dan menavigasi ke alamat IP server Anda:

http://your_server_ip

Jika 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 status

4. 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 -y

Langkah 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_installation

Anda akan diminta dengan serangkaian pertanyaan. Respons yang direkomendasikan untuk server produksi adalah:

PromptJawaban yang Direkomendasikan
Atur komponen VALIDATE PASSWORD?Ya
Tingkat kebijakan validasi password2 (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 mysql

Langkah 4: Login ke MySQL (Verifikasi Opsional)

sudo mysql -u root -p

Masukkan 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 -y

Anda 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 -y

Langkah 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.ini

Temukan 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-fpm

6. 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_domain

Ganti 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_domain

Tambahkan 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.conf

Temukan 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 -t

Jika output menunjukkan:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Anda siap untuk melanjutkan.

Langkah 5: Restart Nginx

Terapkan semua perubahan dengan me-restart layanan Nginx:

sudo systemctl restart nginx

7. 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.php

Tambahkan 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.php

Atau, jika Anda belum mengkonfigurasi domain:

http://your_server_ip/info.php

Anda 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.php

8. 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_domain

Atau, 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

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai