Cara Install LEMP Stack di VPS Rocky Linux

Halo, Sobat! Linux, Nginx, MySQL, dan PHP (LEMP stack) adalah kumpulan aplikasi open-source yang memungkinkan pengembangan dan hosting aplikasi web dinamis pada server. Stack ini mencakup Linux sebagai sistem operasi, Nginx sebagai aplikasi server web, MySQL (atau MariaDB) sebagai database dan PHP (atau Python/Perl) sebagai bahasa skrip sisi server. Aplikasi-aplikasi tersebut saling terhubung dan bekerja sama untuk membentuk lingkungan server yang stabil dan efisien. Dengan lingkungan ini, para pengembang dapat lebih mudah membuat, mengelola, dan menjalankan aplikasi web yang cepat dan dapat digunakan banyak orang.

Berikut ini adalah panduan instalasi LEMP di VPS Rocky Linux menggunakan MySQL sebagai sistem manajemen basis data.

Prasyarat

  1. Memiliki server Rocky Linux dengan akses pengguna non-root yang memiliki akses hak sudo. Sebagai informasi Rocky Linux yang digunakan pada artikel ini yaitu Rocky Linux 9.
  2. Memiliki domain yang sudah diarahkan ke VPS (opsional). Panduan mengarahkan domain ke VPS bisa diakses pada Cara mengarahkan domain ke vps.

Step 1: Buat Koneksi SSH VPS

Pertama, buat koneksi SSH ke VPS kamu melalui terminal. Jika menggunakan sistem operasi Windows, kamu bisa menggunakan PuTTY.

Detail informasi awal layanan kamu bisa diakses pada Informasi Awal Layanan VM.

Step 2: Instal Web Server Nginx

Sebelum mulai instalasi, pastikan sistem kamu menggunakan daftar paket terbaru dengan menjalankan perintah di bawah ini.

				
					sudo apt update
				
			

Setelah sistem diperbarui, pasang web server Nginx di VPS di Rocky Linux. Caranya bisa kamu akses di Cara Install Nginx di Rocky Linux. Ikuti step instalasi 1 dan 2.

Step 3: Instal MySQL

MySQL tersedia di repositori default Rocky Linux 9 dengan informasi paket terbaru. Kamu bisa beralih antara paket MySQL dan MariaDB untuk digunakan, tergantung pada kebutuhan develop kamu. Untuk menginstal MySQL ikuti panduan Cara Install MySQL di Rocky Linux dari step 1 sampai 4 saja lalu kamu bisa mencoba mengakses console MySQL seperti pada step 5 nomor 1.

Step 4: Instal PHP dan Konfigurasi PHP-FPM

PHP memproses konten web dinamis dalam aplikasi, sementara PHP-FPM memungkinkan akses ke PHP dengan konfigurasi kinerja tertentu pada server kamu.

Jalankan perintah di bawah ini untuk instal PHP dan PHP-FPM di server kamu:

				
					sudo dnf install php php-fpm
				
			

Kemudian install ekstensi PHP yang digunakan untuk aplikasi web.

				
					sudo dnf install php-mysqlnd php-gd php-mbstring php-xml
				
			

Penjelasan:

  • php-mysqlnd: Memungkinkan PHP untuk terhubung ke server basis data MySQL dan melakukan operasi SQL.
  • php-mbstring: Mengaktifkan fungsi string multi-byte dalam aplikasi PHP.
  • php-xml: Mengaktifkan fungsi-fungsi XML.
  • php-gd: Mengaktifkan fungsi manipulasi gambar dalam aplikasi PHP.

Untuk melihat versi PHP yang diinstal di server kamu, jalankan:

				
					php -v
				
			

Output:

PHP 8.0.30 (cli) (built: Aug  3 2023 17:13:08) ( NTS gcc x86_64 )

Copyright (c) The PHP Group

Berikutnya, aktifkan dan jalankan PHP-FPM agar otomatis start ketika server boot.

				
					sudo systemctl enable php-fpm
sudo systemctl start php-fpm
				
			

Output:

[root@tutorial ~]# sudo systemctl enable php-fpm

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

[root@tutorial ~]# sudo systemctl start php-fpm

Untuk membuat koneksi dengan web server Nginx, buka default PHP-FPM pool www.conf.

				
					sudo dnf install nano
sudo nano /etc/php-fpm.d/www.conf
				
			

Temukan bagian user dan group dan pastikan sama valuenya seperti di bawah ini (karena biasanya secara default tertulis apache, nginx).

				
					user = nginx
group   = nginx
				
			

Kemudian, restart PHP-FPM.

				
					sudo systemctl restart php-fpm
				
			

Step 5: Konfigurasi Nginx dengan PHP-FPM

Nginx terhubung dengan PHP-FPM menggunakan socket atau default TCP 9000 di server kamu. Sebagai tambahan, Nginx harus menggunakan user dan grup yang sama dengan PHP-FPM untuk mengizinkan koneksi PHP di server. Ikuti langkah berikut ini untuk mengkonfigurasi Nginx dengan PHP-FPM.

1. Buat file info.php di direktori root /var/www/html.

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

2. Salin baris kode berikut ini di dalamnya. Untuk menyimpan Ctrl+C lalu Y dan Enter untuk keluar dari editor.

				
					<?php
   phpinfo();
?>
				
			

3. Lalu, buat virtual host Nginx seperti domainkamu.com.conf pada direktori /etc/nginx/conf.d

				
					sudo nano /etc/nginx/conf.d/domainkamu.conf
				
			

4. Salin dan simpan baris kode di bawah ini:

				
					server {

    listen 80;
    server_name domainkamu.com;
    root /var/www/html;
    index info.php;

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

# Deny access to the .htaccess file
    location ~ /\.ht {
        deny all;
    }

}
				
			

Konfigurasi server block Nginx di atas akan membuat virtual host baru yang mendengarkan koneksi masuk pada port HTTP 80 menggunakan domain kamu atau ip server kamu, kalau tidak punya domain. Kemudian, server web mengirimkan berkas menggunakan indeks info.php dari direktori root web default /var/www/html. Lokasi ~ \.php blok termasuk arahan proxy yang terhubung ke soket PHP-FPM Unix /run/php-fpm/www.sock untuk memproses semua permintaan file PHP di serverkamu.

5. Kemudian, pastikan konfigurasi tidak ada error.

				
					sudo nginx -t
				
			

Output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

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

6. Dan restart Nginx untuk menerapkan perubahan.

				
					sudo systemctl restart nginx
				
			

7. Berikutnya, berikan hak kepemilikan Nginx kepada user nginx dan grup nginx.

				
					sudo chown -R nginx:nginx /var/www/html/
				
			

8. Atur akses info.php ke 755 supaya user nginx memiliki akses full privileges.

				
					sudo chmod 755 /var/www/html/info.php
				
			

9. Atur direktori root web SELinux (Security-Enhanced Linux) ke httpd_sys_content_t untuk mengizinkan server web Nginx mengirimkan file dari direktori tersebut.

				
					sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
				
			

10. Kembalikan konteks halaman SELinux berdasarkan aturan kebijakan httpd_sys_content_t untuk menerapkan perubahan.

				
					sudo restorecon -Rv /var/www/html
				
			

11. Lihat konteks direktori root web dan verifikasi bahwa kebijakan server web httpd_Sys_content_T tersedia.

				
					ls -Z /var/www/html
				
			

Output:

1-cara-install-lemp stack-vps-rocky-linux

12. Izinkan koneksi HTTP melalui firewall default. Kalau belum instal perintah firewall ikuti urutannya berikut:

				
					sudo dnf install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo systemctl status firewalld
				
			

Pastikan statusnya “active(running)”. Lalu jalankan aturan firewall:

				
					sudo firewall-cmd --zone=public --permanent --add-service=http
				
			

Kemudian restart untuk menerapkan perubahan:

				
					sudo firewall-cmd --reload
				
			

13. Akses domain kamu http://domainkamu.com atau http://ipserverkamu, kalau berhasil akan menampilkan informasi lengkap PHP yang kamu gunakan.

2-php info-cara-install-lemp stack-vps-rocky-linux

Setelah berhasil mengakses halaman info.php dan memastikan PHP bekerja dengan benar, hapus file tersebut dengan perintah:

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

Step 6: Tes Hasil Instalasi

Nginx menangai permintaan HTTP dan meneruskannya ke PHP-FPM untuk diproses. Selain itu, modul php-mysqlnd berinteraksi dengan database MySQL untuk mengambil atau menyimpan data di server. Kemudian, PHP-FPM memproses konten dinamis dan merespons permintaan pengguna nginx. Langkah di bawah ini untuk membuat contoh aplikasi PHP baru yang menampilkan pesan Greetings from Vultr dari database MySQL di server kamu.

1. Masuk ke console MySQL sebagai root user.

				
					mysql -u root -p
				
			

2. Lalu, buat contoh database.

				
					CREATE DATABASE nama_db;
				
			

3. Dan pilih database tersebut.

				
					USE nama_db;
				
			

4. Kemudian, buat user baru untuk databasenya (kalau belum punya user). Jangan lupa ganti ‘user_db’ dan ‘password’ sesuai kebutuhan kamu.

				
					CREATE USER 'user_db'@'localhost' IDENTIFIED BY 'password';
				
			

5. Berikan hak akses penuh kepada user_db tersebut ke database nama_db kamu.

				
					GRANT ALL PRIVILEGES ON nama_db.* TO 'user_db'@'localhost';
				
			

6. Kemudian reload MySQL untuk menerapkan perubahan.

				
					FLUSH PRIVILEGES;
				
			

7. Lalu, buat tabel greetings yang terdiri dari dua kolom.

				
					CREATE TABLE greetings (id INT AUTO_INCREMENT PRIMARY KEY, message VARCHAR(255) NOT NULL);
				
			

8. Berikutnya, masukkan data ke dalam tabelnya.

				
					INSERT INTO greetings (message) VALUES ('Greetings from Vultr');
				
			

9. Periksa isi tabel greetings apakah sesuai dengan yang diinginkan.

				
					SELECT * FROM greetings;
				
			

Output:

3-select-data-cara-install-lemp stack-vps-rocky-linux

10. Kemudian keluar console MySQL.

				
					exit
				
			

11. Selanjutnya, buat aplikasi kamu, misalnya dengan nama ‘webapp.php’ di /var/www/html

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

12. Masukkan baris kode di bawah ini.

				
					<?php

$servername = "localhost";
$username = "user_db";
$password = "password";
$dbname = "nama_db";

// Create database connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check database connection
if ($conn->connect_error) {
    die("Database Connection Failed: " . $conn->connect_error);
}

echo "<h4 align='center'> Below is the message retrieved from the test_db Mysql database on your server</h4>";

// Retrieve the record from greetings Table
$sql = "SELECT message FROM greetings";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    echo "<h1 align='center'>" . $row["message"] . "</h1>";
} else {
    echo "<h1 align='center'>No message found.</h1>";
}

$conn->close();
?>
				
			

Jangan lupa ganti bagian:

$username = “user_db”;

$password = “password”;

$dbname = “nama_db”;

Baris kode di atas terhubung ke server database MySQL dan mengambil pesan greetings dari Vulte dari tabel greetings. Kemudian, kode tersebut akan tampil di web browser.

13. Selanjutnya, aktifkan httpd_sys_content_t SELinux pada file aplikasi PHP yang baru.

				
					sudo restorecon -v /var/www/html/webapp.php
				
			

14. Terakhir, coba akses url domain kamu dengan http://domainkamu/webapp.php atau http://ipserverkamu/webapp.php, hasilnya akan seperti berikut.

4-tes-nginx-cara-install-lemp stack-vps-rocky-linux

Kamu sudah menginstall Nginx, MySQL, dan PHP (LEMP stack) pada server Rocky Linux 9. Kamu bisa menggunakan LEMP stack untuk mengembangkan, menghosting, dan mengirimkan aplikasi web dinamis secara aman pada server kamu.

Kalau ada yang masih bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting via Live Chat atau Open Ticket ya, Sob!

Related Posts
Cara Install PostgreSQL di Rocky Linux

Hai, Sob! PostgreSQL adalah database open-source yang powerful dan banyak digunakan untuk aplikasi berbasis web. Biasanya PostgreSQL di-install di Rocky Read more

Cara Install SFTP Server di Rocky Linux

Hai, Sob! SFTP (SSH File Transfer Protocol) adalah cara aman buat transfer file antara komputer lokal dan server. Berbeda dari Read more

Cara Install PHP dan PHP-FPM di Rocky Linux

Hai, Sob! Kalau kamu ingin menjalankan aplikasi berbasis PHP di Rocky Linux, kamu butuh dua komponen utama: PHP itu sendiri Read more

Cara Install Nginx di Rocky Linux

Hai, Sob! Nginx adalah web server alternatif yang ringan dan cepat dari Apache yang sering digunakan untuk melayani banyak permintaan Read more