Cara Install Nginx Web Server di Debian 9 Server
Sebelumnya saya sudah pernah membahas tentang Apache web server di Debian 9 server yang dibutuhkan untuk menjalankan website. Kali ini masih tentang web server yaitu Nginx, web server yang menjadi pesaing dari Apache. Selain menjadi web server, Nginx juga bisa menjadi load balancer dan reverse proxy.
0. Install Nginx di Debian
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.
1 2 3 | systemctl stop apache2 systemctl disable apache2 systemctl status apache2 |
Install Nginx.
1 | 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.
1. 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 linux.oke dan debian.oke.
Membuat direktori document root di /var/www/linux.oke untuk linux.oke beserta file index.html untuk testing.
1 2 3 | mkdir -p /var/www/linux.oke cd /var/www/linux.oke nano index.html |
Isi file index.html untuk linux.oke.
1 | <h1>selamat datang di linux.oke.</h1> |
Selanjutnya document root untuk debian.oke.
1 2 3 | mkdir -p /var/www/debian.oke cd /var/www/debian.oke nano index.html |
Isi file index.html untuk debian.oke.
1 | <h1>selamat datang di debian.oke.</h1> |
Selanjutnya ke direktori /etc/nginx/sites-available dan membuat file setting untuk server block linux.oke.
1 2 | cd /etc/nginx/sites-available nano linux.oke.conf |
Isi dengan file setting server block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | server { listen 80; listen [::]:80; server_name www.linux.oke; root /var/www/linux.oke/; access_log /var/log/nginx/linux.oke.access.log; error_log /var/log/nginx/linux.oke.error.log warn; } # redirect dari non-www ke www. server { listen 80; listen [::]:80; server_name .linux.oke; return 301 http://www.linux.oke$request_uri; } |
Selanjutnya server block untuk debian.oke.
1 | nano debian.oke.conf |
Isinya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | server { listen 80; listen [::]:80; server_name www.debian.oke; root /var/www/debian.oke/; access_log /var/log/nginx/debian.oke.access.log; error_log /var/log/nginx/debian.oke.error.log warn; } # redirect dari non-www ke www. server { listen 80; listen [::]:80; server_name .debian.oke; return 301 http://www.debian.oke$request_uri; } |
Aktifkan file setting server block yang telah dibuat dengan membuat link ke direktori /etc/nginx/sites-enabled.
1 2 | ln -s /etc/nginx/sites-available/linux.oke.conf /etc/nginx/sites-enabled/ ln -s /etc/nginx/sites-available/debian.oke.conf /etc/nginx/sites-enabled/ |
Testing file setting nginx.
1 2 3 | nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
Restart service Nginx.
1 2 | 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 dan Windows berada di c:\windows\system32\drivers\etc\hosts.
1 | nano /etc/hosts |
IP address server yang saya gunakan 192.168.100.1.
1 2 | 192.168.100.1 www.linux.oke linux.oke 192.168.100.1 www.debian.oke debian.oke |
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 seperti pada gambar di atas.
3. Install Nginx + PHP
Sekarang setting Nginx agar bisa menjalankan aplikasi website berbasis bahasa pemrograman PHP. Sama seperti pada pembahasan Cara Install PHP di Debian 9 Server, PHP yang digunakan yaitu versi PHP 7.2.
Pasang repository untuk PHP 7.2.
1 2 3 | apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list |
Update repository dan install PHP-FPM 7.2 beserta extension (module) yang umumnya dibutuhkan.
1 2 3 | apt update apt upgrade apt install php7.2 php7.2-fpm php7.2-cli php7.2-common php7.2-opcache php7.2-curl php7.2-mbstring php7.2-mysql php7.2-zip php7.2-xml php-imagick |
Buka file setting php.ini untuk PHP-FPM dan cari cgi.fix_pathinfo aktifkan (hapus tanda 😉 dan ubah nilainya menjadi 0.
1 | nano /etc/php/7.2/fpm/php.ini |
1 | cgi.fix_pathinfo=0 |
Restart service PHP-FPM.
1 | systemctl restart php7.2-fpm |
Setting salah satu server block misalnya linux.oke agar bisa menjalankan PHP.
1 | nano /etc/nginx/sites-available/linux.oke.conf |
Ubah menjadi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | server { listen 80; listen [::]:80; server_name www.linux.oke; root /var/www/linux.oke/; 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.2-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/linux.oke.access.log; error_log /var/log/nginx/linux.oke.error.log warn; } # redirect dari non-www ke www. server { listen 80; listen [::]:80; server_name .linux.oke; return 301 http://www.linux.oke$request_uri; } |
Restart service Nginx.
1 | systemctl restart nginx |
Buat file info.php yang berisi pemanggilan fungsi phpinfo() untuk menampilkan informasi PHP.
1 | nano /var/www/linux.oke/info.php |
Isinya.
1 | <?php phpinfo(); ?> |
Terakhir akses http://linux.oke/info.php, hasilnya seperti pada gambar di bawah ini.
Selamat mencoba 🙂
kalo di Mac OS Sierra..
coba tutorial ini om
kalau misal mau buat subfolder dg ip lokal bukan dengan domain bagaimana? misal aplikasi di ip 10.10.10.10 dan moodle di 10.10.10.10/moodle?
berarti buat subfolder moodle di dalam folder document root. misalnya document root di /var/www/html, nah untuk moodle buat di /var/www/html/moodle.
maksudnya pengaturan server bloknya kak,..
defaultnya kan aksesnya sudah pakai IP address, atau kalau membuat server block sendiri, server_name diisi saja dengan IP address.