Instalasi
Jika sebelumnya sudah pernah install web server lain seperti Apache, nonaktifkan terlebih dahulu karena keduanya memakai nomor port yang sama yaitu 80 untuk protokol HTTP.systemctl stop apache2 systemctl disable apache2 systemctl status apache2
systemctl stop apache2systemctl disable apache2systemctl status apache2
Install Nginx.
apt install nginx -y
Uji hasil install Nginx dengan mengakses IP address server di web browser.
Kalau sebelumnya pernah install Apache web server, maka yang tampil adalah halaman default Apache. Hal ini terjadi karena direktori document root (direktori penyimpanan website) Nginx hasil install sama dengan document root Apache sebelumnya di direktori /var/www/html. Sementara document root default untuk Nginx berada di direktori /usr/share/nginx/html.
Konfigurasi
Setting Nginx Server Block (VirtualHost)
Selanjutnya setting Nginx server block, kalau di Apache web server digunakan istilah virtualhost, dalam satu server bisa memasang banyak nama domain/subdomain. Di sini saya akan membuat server block fariz.id dan anwar.id
Membuat direktori documen root
(1). Membuat direktori document root untuk fariz.id
mkdir -p /var/www/farizanwar.my.id
Untuk mengetes pengujian buat file html
nano /var/www/farizanwar.my.id/index.html
masukkan ini kedalamnya
<h1>selamat datang di farizanwar.my.id.</h1>
(2). Membuat direktori document root untuk anwar.id
mkdir -p /var/www/anwar.id
Untuk mengetes pengujian buat file html
nano /var/www/anwar.id/index.html
masukkan ini kedalamnya
<h1>selamat datang di anwar.id.</h1>
Konfigurasi sites-available dan sites-enable
Membuat file setting server block
Pergi ke direktori /etc/nginx/sites-available
1). Membuat file setting untuk server block farizanwar.my.id
cd /etc/nginx/sites-available
nano farizanwar.my.id.conf
Isi dengan file setting server block. masukkan ini kedalamnya
server {
listen 80;
listen [::]:80;
server_name www.farizanwar.my.id;
root /var/www/farizanwar.my.id/;
access_log /var/log/nginx/farizanwar.my.id.access.log;
error_log /var/log/nginx/farizanwar.my.id.error.log warn;
}
# redirect dari non-www ke www.
server {
listen 80;
listen [::]:80;
server_name .farizanwar.my.id;
return 301 http://www.farizanwar.my.id$request_uri;
}
2). Membuat file setting untuk server block anwar.id
nano anwar.id.conf
masukkan ini kedalamnya
server {
listen 80;
listen [::]:80;
server_name www.anwar.id;
root /var/www/anwar.id/;
access_log /var/log/nginx/anwar.id.access.log;
error_log /var/log/nginx/anwar.id.error.log warn;
}
# redirect dari non-www ke www.
server {
listen 80;
listen [::]:80;
server_name .anwar.id;
return 301 http://www.anwar.id$request_uri;
}
Membuat symbolic link
Aktifkan file setting server block yang telah dibuat dengan membuat simbolic link ke direktori /etc/nginx/sites-enabled.
ln -s /etc/nginx/sites-available/farizanwar.my.id.conf /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/anwar.id.conf /etc/nginx/sites-enabled/
Test syntax
Testing file setting nginx. (apakah ada error atau tidak)
nginx -t
Restart service Nginx
systemctl restart nginx
systemctl status nginx
Pengujian Server Block
Sebelum melakukan pengujian server block di PC client, terlebih dahulu memasukkan IP address server beserta nama domainnya ke dalam file hosts. Di Linux file hosts berada di /etc/hosts
Konfigurasi file /etc/hosts
nano /etc/hosts
masukkan ini kedalamnya, dan sesuaikan IP dengan IP yang kamu gunakan
192.168.100.1 www.farizanwar.my.id farizanwar.my.id
192.168.100.1 www.anwar.id anwar.id
Konfigurasi DNS server (bind9)
Ini sekaligus contoh konfigurasi 2 domain dalam 1 IP
Isi konfigurasi pada file /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "farizanwar.my.id" {
type master;
file "/etc/bind/db.farizanwar";
};
zone "anwar.id" {
type master;
file "/etc/bind/db.anwar";
};
zone "200.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
Isi konfigurasi pada file db.fariz
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA farizanwar.my.id. root.farizanwar.my.id. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS farizanwar.my.id.
@ IN A 192.168.200.252
www IN A 192.168.200.252
Isi konfigurasi pada file db.anwar
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA anwar.id. root.anwar.id. (
5 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS anwar.id.
@ IN A 192.168.200.252
www IN A 192.168.200.252
Jika pada konfigurasi normal (2 IP 2 Domain) kita membuat kita membuat file konfigurasi in-addr.arpa(db.192) nya berpasangan
namun kali ini kita membuat 2 domain dalam 1 ip kita hanya membuat file konfigurasi in-addr.arpa(db.192) nya hanya 1
Isi konfigurasi pada file in-addr.arpa(db.192
)
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA warswar.id. root.warswar.id. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS warswar.id.
252 IN PTR warswar.id.
252 IN PTR www.warswar.id.
@ IN NS wars.id
252 IN PTR wars.id
252 IN PTR www.wars.id
Catatan: Nomor Serial Tidak boleh sama antar konfigurasi yang sama
Restart bind9
/etc/init.d/bind9 restart
Pastikan tidak ada eror
Pengujian di web browser
Selanjutnya akses nama domain di web browser. Masing-masing domain harus menampilkan halaman index.html yang berbeda dan bukan juga halaman default dari Nginx atau Apache
www.farizanwar.my.id
www.anwar.id
Install Nginx + PHP
Sekarang setting Nginx agar bisa menjalankan aplikasi website berbasis bahasa pemrograman PHP.
Pasang repository untuk PHP 7.4.
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
update repositori
sudo apt update
jika tersedia upgrade, lakukan upgrade
sudo apt upgrade
sekarang install php 7.4
apt install php7.4 php7.4-fpm php7.4-cli php7.4-common php7.4-opcache php7.4-curl php7.4-mbstring php7.4-mysql php7.4-zip php7.4-xml php-imagick
Konfigurasi PHP
Buka file setting php.ini untuk PHP-FPM dan cari cgi.fix_pathinfo aktifkan (hapus tanda ;
dan ubah nilainya menjadi 0
)
nano /etc/php/7.4/fpm/php.ini
cgi.fix_pathinfo=0
Restart service PHP-FPM.
systemctl restart php7.4-fpm
Mengaktifkan php untuk server block (virtualhost) tertentu
Setting salah satu server block, misalnya farizanwar.my.id
agar bisa menjalankan PHP.
nano /etc/nginx/sites-available/farizanwar.my.id.conf
Ubah menjadi.
server {
listen 80;
listen [::]:80;
server_name www.farizanwar.my.id;
root /var/www/farizanwar.my.id/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
access_log /var/log/nginx/farizanwar.my.id.access.log;
error_log /var/log/nginx/farizanwar.my.id.error.log warn;
}
# redirect dari non-www ke www.
server {
listen 80;
listen [::]:80;
server_name .farizanwar.my.id;
return 301 http://www.farizanwar.my.id$request_uri;
}
Catatan: Sesuaikan parameter unix:
dengan versi php yang digunakan saat ini
Restart service Nginx.
systemctl restart nginx
Pengujian php
Buat file info.php yang berisi pemanggilan fungsi phpinfo() untuk menampilkan informasi PHP.
nano /var/www/farizanwar.my.id/info.php
masukkan ini kedalamnya
<?php phpinfo(); ?>
Terakhir akses http://farizanwar.my.id/info.php
,
Tested on: Debian-server 10 Sumber: https://musaamin.web.id/cara-install-nginx-web-server-di-debian-9-server/