Panduan praktis dan terstruktur mengenai panduan lengkap: cara install linux, nginx, mysql, php (lemp stack) di ubuntu 18.04 berstandar enterprise. Pelajari konsep, implementasi kode modern, dan tips arsitektur enterprise siap produksi.
Selamat datang di seri tutorial engineering SiHubung! Pada artikel ini, kita akan membedah secara komprehensif implementasi Panduan Lengkap: Cara Install Linux, Nginx, Mysql, Php (Lemp Stack) Di Ubuntu 18.04 Berstandar Enterprise dengan standar kode bersih (clean code), performa tinggi, dan arsitektur siap produksi.

Membangun aplikasi web di era modern memerlukan pondasi yang kokoh. Framework modern memberikan fleksibilitas luar biasa bagi developer untuk menghadirkan fitur kompleks secara cepat tanpa mengabaikan aspek keamanan dan keandalan sistem.

Tahapan Implementasi & Walkthrough Kode

Berikut adalah langkah demi langkah teknis yang dapat Anda ikuti langsung pada codebase Anda:

Tahap 1: Penulisan Kode & Konfigurasi

sudo apt update

Tahap 2: Penulisan Kode & Konfigurasi

sudo apt install nginx

Tahap 3: Penulisan Kode & Konfigurasi

sudo ufw allow 'Nginx HTTP'

Tahap 4: Penulisan Kode & Konfigurasi

sudo ufw status

Tahap 5: Penulisan Kode & Konfigurasi

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Tahap 6: Penulisan Kode & Konfigurasi

http://server_domain_or_IP

Tahap 7: Penulisan Kode & Konfigurasi

sudo apt install mysql-server

Tahap 8: Penulisan Kode & Konfigurasi

sudo mysql_secure_installation

Tahap 9: Penulisan Kode & Konfigurasi

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Tahap 10: Penulisan Kode & Konfigurasi

Please set the password for root here.

New password:

Re-enter new password:

Tahap 11: Penulisan Kode & Konfigurasi

sudo mysql

Tahap 12: Penulisan Kode & Konfigurasi

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Tahap 13: Penulisan Kode & Konfigurasi

Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Tahap 14: Penulisan Kode & Konfigurasi

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Tahap 15: Penulisan Kode & Konfigurasi

mysql> FLUSH PRIVILEGES;

Tahap 16: Penulisan Kode & Konfigurasi

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Tahap 17: Penulisan Kode & Konfigurasi

Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Tahap 18: Penulisan Kode & Konfigurasi

mysql> exit

Tahap 19: Penulisan Kode & Konfigurasi

mysql -u root -p

Tahap 20: Penulisan Kode & Konfigurasi

sudo add-apt-repository universe

Tahap 21: Penulisan Kode & Konfigurasi

sudo apt install php-fpm php-mysql

Tahap 22: Penulisan Kode & Konfigurasi

sudo nano /etc/nginx/sites-available/example.com

Tahap 23: Penulisan Kode & Konfigurasi

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

Tahap 24: Penulisan Kode & Konfigurasi

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Tahap 25: Penulisan Kode & Konfigurasi

sudo nginx -t

Tahap 26: Penulisan Kode & Konfigurasi

sudo systemctl reload nginx

Tahap 27: Penulisan Kode & Konfigurasi

sudo nano /var/www/html/info.php

Tahap 28: Penulisan Kode & Konfigurasi

<?php
phpinfo();
💡 Tips Rekayasa Perangkat Lunak (SiHubung Engineering Best Practice)

Selalu gunakan pendekatan deklaratif, validasi input seawal mungkin di boundary layer, dan lakukan logging terstruktur untuk memudahkan observability ketika sistem dijalankan di lingkungan cloud produksi.

Kesimpulan

Dengan mengikuti langkah-langkah terstruktur di atas, implementasi modul Anda akan jauh lebih rapi, aman dari bug umum, serta siap diskalakan ke lingkungan produksi.

Nantikan artikel tutorial praktis lainnya seputar fullstack development, microservices, dan otomasi AI di Blog Engineering SiHubung. Selamat mencoba!