SC ITNSA 3 — Konfigurasi Multiple Subdomain NGINX Web Server

Untuk dapat mengikuti tutorial kali ini, kalian harus sudah mengkonfigurasi dasar debian seperti ip address dan juga DNS Server. Jika kalian sudah mengkonfigurasinya, silahkan baca sampai selesai ya :3

Oke, menurut tabel diatas, kita diminta untuk membuat user dengan nama student sebanyak 50 dengan password vsc39, kemudian masing-masing user memiliki home direktori di /data/www/student[1–50], semua user tersebut di gabungkan kedalam group VSCITNSA dan kita juga diminta membuat website masing-masing user . dan ketika membuka website masing-masing user contohnya student2.nsaapps.id maka akan muncul kalimat :

Welcome To student2 Website

Bagaimana cara membuatnya?
Pertama-tama kalian harus sudah mengkonfigurasi dasar Debian dan juga DNS Server

Untuk tambahan, disini IP Address DNS Server adalah 192.1.8.1/24

Jika sudah, login debian sebagai root user kemudian lanjut baca hingga selesai ya, wkwk

1. Install & Konfigurasi NGINX Web Server

Seperti instalasi package lain, kita dapat menginstall NGINX Server dengan mengetikkan perintah

apt-get install nginx

Jika sudah, sekarang kita akan masuk ke direktori /etc/nginx/sites-available/

cd /etc/nginx/sites-available

Secara otomatis, terdapat satu file di direktori tersebut yaitu default, kita dapat melihatnya dengan mengetikkan perintah

ls

Kalian dapat membuka file default tersebut menggunakan nano dengan mengetikkan perintah

nano default

Kalian akan melihat banyak kalimat-kalimat didalamnya, namun secara fungsi hanya beberapa bagian saja yang berjalan. selebihnya adalah komentar.

File yang benar-benar berjalan ( bukan komentar ) tersebut jika disatukan akan terlihat seperti ini

server {        
         listen 80 default_server;
         listen [::]:80 default_server;
         root /var/www/html;         
         index index.html index.htm index.nginx-debian.html;
         server_name _;
         location / {
         try_files $uri $uri/ =404;
         }
}

Selanjutnya kita hapus default_server pada file diatas sehingga menjadi seperti ini

server {        
         listen 80;
         listen [::]:80;
         root /var/www/html;         
         index index.html index.htm index.nginx-debian.html;
         server_name _;
         location / {
         try_files $uri $uri/ =404;
         }
}

Lalu kita ubah lagi beberapa konfigurasi sehingga terlihat seperti ini

server {        
         listen 80;
         listen [::]:80;
         root /data/www/student;         
         index index.php;
         server_name student.nsaapps.id;
         location / {
         try_files $uri $uri/ =404;
         }
}

Oke, saya akan menjelaskan maksud dari perubahan di file tersebut

root /data/www/student;
Ini merupakan lokasi file-file web kita disimpan nantinya.
Kenapa menggunakan student? karena nantinya akan kita replace semua kata student dengan student[1–50] menggunakan bash script.

index index.php;
Bertujuan agar ketika web server dinyalakan, web server akan mencari file index, yakni index.php.

server_name student.nsaapps.id;
Ini merupakan url web kita nantinya.
kenapa menggunakan student? sama seperti yang saya tulis sebelumnya, yaitu untuk di replace nantinya menjadi student[1–50].

Jika sudah, silahkan save dan keluar dengan cara menekan tombol kombinasi CTRL + X kemudian Y dan ENTER.

Selanjutnya kita akan membuat konfigurasi agar service php dapat berjalan.
silahkan cari baris ini

Lalu ubah menjadi seperti ini

Disitu kita menghapus beberapa komentar ( tanda # ) kemudian mengubah port dari 9000 menjadi 9898

Silahkan save dan keluar dengan cara menekan tombol kombinasi CTRL + X kemudian Y dan ENTER.

2. Membuat Bash Script

Pasti akan sangat repot dan memakan banyak waktu apabila membuat 50 user dengan konfigurasi subdomain user yang berbeda-beda. Oleh karena itu, kita dapat memanfaatkan Bash Script untuk melakukan looping agar memudahkan kita dalam membuat konfigurasi tersebut .

Buat file dengan nama bashsc.sh di direktori /etc/ agar memudahkan kita untuk menjalankan bash script nantinya.

cd /etc/
touch bashsc.sh

Kemudian edit file tersebut menggunakan nano

nano bashsc.sh

Seharusnya file tersebut kosong karena memang kita belum memasukkan sesuatu kedalam file tersebut.

Isi file tersebut dengan

groupadd VSCITNSA

Perintah di atas ketika dijalankan maka akan membuat group baru dengan nama VSCITNSA.

Kemudian kita buat looping nya seperti ini

for (( i=1; i<=50; i++ ))

Jika di terjemahkan ke bahasa manusia, looping tersebut sama seperti

Hai bash script, coba kamu buat i yang bernilai 1 kurang dari sama dengan 50 dan akan terus bertambah sampai mencapai nilai 50.

Sehingga nilai i sekarang adalah angka 1–50 itu sendiri

Kemudian setelah membuat looping, kita membuat perintah-perintah dengan looping tersebut. Yang artinya perintah-perintah ini nantinya akan terus diulang sebanyak 50 kali dengan menambahkan perintah

do

Sehingga sekarang struktur bashsc.sh seperti ini

groupadd VSCITNSA
for (( i=1; i<=50; i++ ))
do

Oke, sekarang kalian dapat membuat perintah-perintah yang akan di looping sampai 50 tersebut dibawah perintah do.

Konfigurasi student[1–50]

Kita akan membuat looping untuk membuat direktori student; useradd atau menambahkan user student; password dan memasukkan user student kedalam group VSCITNSA dengan perintah

# Looping Konfigurasi User
mkdir -p /data/www/student$i
useradd student$i -d /data/www/student$i -s /bin/bash
passwd student$i <<< "vsc39"$'\n'"vsc39"
usermod -a -G VSCITNSA student$i

Sehingga sekarang isi file bashsc.sh menjadi

groupadd VSCITNSA
for (( i=1; i<=50; i++ ))
do# Looping Konfigurasi User
mkdir -p /data/www/student$i
useradd student$i -d /data/www/student$i -s /bin/bash
passwd student$i <<< "vsc39"$'\n'"vsc39"
usermod -a -G VSCITNSA student$i

Sedikit penjelasan tentang konfigurasi diatas

$i
$i ini memiliki nilai 1 sampai 50 yang didapatkan dari hasil looping.

mkdir -p /data/www/student$i
Konfigurasi ini memiliki fungsi untuk membuat direktori baru yaitu student$i dimana folder baru ini berada didalanm direktori /data/www/

useradd student$i -d /data/www/student$i -s /bin/bash
Konfigurasi ini berfungsi untuk membuat user dengan nama student$i dan direktori atau home nya di konfigurasikan ke /data/www/student$i

passwd student$i <<< “vsc39″$’\n'”vsc39”
Konfigurasi ini berfungsi untuk membuat password vsc39 untuk user student$i

usermod -a -G VSCITNSA student$i
Konfigurasi ini berfungsi untuk memasukkan user student$i kedalam group VSCITNSA

Konfigurasi NGINX Server untuk subdomain student[1–50]

Sekarang kita akan mengkonfigurasi NGINX Server agar nantinya ketika membuka ( contoh ) student6.nsaapps.id akan menampilkan tulisan

Welcome to student6 Website

Masih didalam berkas bashsc.sh, kita buat konfigurasi untuk NGINX Server seperti berikut

# Looping Konfigurasi NGINX Server
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/student$i
sed -i 's/student/student'$i'/g' /etc/nginx/sites-available/student$i
ln -s /etc/nginx/sites-available/student$i /etc/nginx/sites-enabled/

Sehingga sekarang file bashsc.sh terlihat seperti ini

groupadd VSCITNSA
for (( i=1; i<=50; i++ ))
do# Looping Konfigurasi User
mkdir -p /data/www/student$i
useradd student$i -d /data/www/student$i -s /bin/bash
passwd student$i <<< "vsc39"$'\n'"vsc39"
usermod -a -G VSCITNSA student$i# Looping Konfigurasi NGINX Server
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/student$i
sed -i 's/student/student'$i'/g' /etc/nginx/sites-available/student$i
ln -s /etc/nginx/sites-available/student$i /etc/nginx/sites-enabled/

Sedikit penjelasan konfigurasinya, hehe

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/student$i
Kita meng-copy file default konfigurasi NGINX Server yang sebelumnya sudah kita edit menjadi file untuk konfigurasi masing-masing subdomain student.

sed -i ‘s/student/student’$i’/g’ /etc/nginx/sites-available/student$i
Konfigurasi ini berfungsi untuk mereplace semua kata ‘student’ didalam file /etc/nginx/sites-available/student$i dengan kata ‘student$i’. Dimana $i merupakan hasil looping 1 sampai 50.

ln -s /etc/nginx/sites-available/student$i /etc/nginx/sites-enabled/
konfigurasi ini berfungsi untuk membuat shortcut file-file yang sudah kita konfigurasi dari direktori /etc/nginx/sites-available/ yaitu student$i ( student1, studen2, dan seterusnya sampai student50 ) kedalam direktori /etc/nginx/sites-enabled/

Konfigurasi DNS Server untuk subdomain student[1–50]

Setelah konfigurasi loping NGINX Server selesai, sekarang kita akan menambahkan konfigurasi DNS Server yang berada di /etc/bind/db.nsaapps

Kita akan menambahkan konfigurasi di paling bawah file konfigurasi db.nsaapps tersebut dengan

student1    IN    A    192.1.8.1

dan berulang-ulang sampai student50 dengan menggunakan bantuan bash script.

Masih didalam file /etc/bashsc.sh. kita tambahkan baris berikut di paling bawah

# Konfigurasi DNS Server 50 user
echo 'student'$i' IN A 192.1.8.1' >> /etc/bind/db.nsaapps

Untuk fungsinya sendiri sama dengan Konfigurasi DNS Server sebelumnya
hanya saja, kita melakukan looping agar address mapping nya dapat menjadi student[1–50] dengan cepat.

Kemudian kita menambahkan konfigurasi tersebut ke /etc/bind/db.nsaapps

Konfigurasi Index.php

Sekarang, kita akan membuat file index.php untuk menampilkan

This is student6 website

Ketika user membuka student6.nsaapps.id.

Masih didalam file bashsc.sh , kita tambahkan lagi di baris terakhir

# Konfigurasi index.php 50 user
echo '<?php echo " This is student'$i' Website "; ?>' > /data/www/student$i/index.php

Fungsi dari baris kode tersebut adalah, kita menambahkan kalimat This is student$i website kedalam file index.php di masing-masing folder student.

Jika sudah , tambahkan perintah done di paling bawah untuk menandakan bash script sudah berakhir.

Sehingga sekarang isi file bashsc.sh kita menjadi

groupadd VSCITNSA
for (( i=1; i<=50; i++ ))
do# Looping Konfigurasi User
mkdir -p /data/www/student$i
useradd student$i -d /data/www/student$i -s /bin/bash
passwd student$i <<< "vsc39"$'\n'"vsc39"
usermod -a -G VSCITNSA student$i# Looping Konfigurasi NGINX Server
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/student$i
sed -i 's/student/student'$i'/g' /etc/nginx/sites-available/student$i
ln -s /etc/nginx/sites-available/student$i /etc/nginx/sites-enabled/# Konfigurasi DNS Server 50 user
echo 'student'$i' IN A 192.1.8.1' >> /etc/bind/db.nsaapps# Konfigurasi index.php 50 user
echo '<?php echo " This is student'$i' Website "; ?>' > /data/www/student$i/index.phpdone

Jika sudah, silahkan save dan keluar dengan cara menekan tombol kombinasi CTRL + X kemudian Y dan ENTER.

Pendukung program

Karena secara default direktori/data/www/ tidak ada, maka kita harus membuatnya terlebih dahulu dengan perintah

mkdir /data
mkdir /data/www

Kita juga perlu menginstall php dan php-fpm agar webiste dapat berjalan dengan normal

apt install php7.3-fpm php7.3

Menjalankan Bash Script

Untuk dapat menjalankan program file bash tersebut, kita harus ubah dulu permissionnya dengan cara mengetikkan perintah

chmod +x /etc/bashsc.sh

Jika sudah, kita dapat menjalankan bash script dengan perintah

bash /etc/bashsc.sh

Konfigurasi PHP dan PHP_FPM

Setelah kita membuat php servicve berjalan di port 9898 dan membuat php service nginx aktif, sekarang kita akan mengkonfigurasi PHP-FPM agar dapat berjalan.

Masuk ke direktori /etc/php/7.3/fpm/pool.d/ dengan mengetikkan perintah

cd /etc/php/7.3/fpm/pool.d/

Kemudian kita konfigurasi file www.conf yang berada di direktori tersebut menggunakan nano

nano www.conf

Cari baris kode diatas, lalu ubah listen nya menjadi port 9898 seperti ini

Setelah itu, cari lagi baris kode listen.allowed_clients dengan menggunakan kombinasi CTRL + W dan ketik listen.allowed_clients

Hapus tanda titik koma di awal baris.

Jika sudah, silahkan kalian keluar lalu save dengan cara menekan tombol kombinasi CTRL + X kemudian Y dan ENTER.

Service Restart dan Testing

Nah, sekarang adalah tahap terakhir, yaitu restarting service dan testing.

Kita akan me-restart service nginx,dns dan juga php-fpm dengan perintah

service nginx restartservice bind9 restartservice php7.3-fpm restart

Kemudian kita akan mengetes apakah website student berjalan dengan lancar, namun sebelum melakukan testing kalian harus menginstall lynx

apt install lynx

Sekarang kalian dapat melakukan testing dengan format

lynx student3.nsaapps.id

Selamat, kalian sudah berhasil membuat subdomain untuk 50 user dengan cepat !

sumber : https://lordrukie.medium.com/vsc-itnsa-3-konfigurasi-multiple-subdomain-nginx-web-server-5e2abe76182c