Cara Menginstal Nginx pada Ubuntu 20.04

Pengantar

Nginx adalah salah satu server web terpopuler di dunia dan berperan sebagai hos dari sebagian situs terbesar dan situs yang memiliki lalu lintas tertinggi di jagad internet. Ini adalah pilihan ringan yang dapat digunakan baik sebagai server web atau proksi balik.

Dalam panduan ini, kita akan membahas cara menginstal Nginx pada server Ubuntu 20.04 Anda, menyesuaikan firewall, mengelola proses Nginx, dan menyiapkan blok server untuk menjadi hos dari lebih dari satu domain dari suatu server tunggal.

Prasyarat

Sebelum Anda memulai panduan ini, Anda harus memiliki pengguna non-root reguler dengan privilese sudo yang terkonfigurasi di server Anda. Anda dapat mempelajari cara mengonfigurasi akun pengguna reguler dengan mengikuti Panduan penyiapan server awal untuk Ubuntu 20.04 dari kami.

Ketika Anda sudah memiliki akun, log masuk sebagai pengguna non-root untuk memulai.

Langkah 1 – Menginstal Nginx

Karena Nginx tersedia di repositori asali Ubuntu, maka kita dimungkinkan untuk menginstalnya dari repositori ini menggunakan sistem pengemasan apt.

Karena ini adalah interaksi pertama kita dengan sistem pengemasan apt pada sesi ini, kita akan memperbarui indeks pengemasan lokal agar kita memiliki akses ke daftar paket terbaru. Setelah itu, kita dapat menginstal nginx:

  • sudo apt update
  • sudo apt install nginx

Setelah menerima prosedur, apt akan menginstal Nginx dan segala dependensi yang diperlukan ke server Anda.

Langkah 2 – Menyesuaikan Firewall

Sebelum menguji Nginx, perangkat lunak firewall perlu disesuaikan untuk mengizinkan akses ke layanan. Nginx mendaftarkan dirinya sendiri sebagai sebagai layanan dengan ufw pada saat instalasi, yang mempermudah untuk mengizinkan akses Nginx.

Buat daftar konfigurasi aplikasi yang mana ufw mengetahui cara bekerja sama dengannya dengan mengetik:

  • sudo ufw app list

Anda akan mendapat daftar profil aplikasi:

OutputAvailable applications:   Nginx Full   Nginx HTTP   Nginx HTTPS   OpenSSH 

Seperti yang ditunjukkan oleh keluaran, ada tiga profil yang tersedia untuk Nginx:

  • Nginx Full: Profil ini membuka baik porta 80 (lalu lintas web normal dan tidak terenkripsi) dan porta 443 (lalu lintas terenkripsi TLS/SSL)
  • Nginx HTTP: Profil ini hanya membuka porta 80 (lalu lintas web normal dan tidak terenkripsi)
  • Nginx HTTPS: Profil ini hanya membuka porta 443 (lalu lintas terenkripsi TLS/SSL)

Anda disarankan untuk mengaktifkan profil yang paling ketat yang masih akan mengizinkan lalu lintas yang telah Anda konfigurasikan. Saat ini, kita hanya perlu mengizinkan lalu lintas pada porta 80.

Anda dapat mengaktifkan ini dengan mengetik:

  • sudo ufw allow 'Nginx HTTP'

Anda dapat memverifikasi perubahan dengan mengetik:

  • sudo ufw status

Keluaran akan mengindikasikan lalu lintas HTTP mana yang diizinkan:

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

Langkah 3 – Memeriksa Server Web Anda

Pada akhir proses instalasi, Ubuntu 20.04 memulai Nginx. Server web seharusnya sudah aktif dan berjalan.

Kita dapat memeriksa dengan sistem init systemd untuk memastikan layanan sedang berjalan dengan mengetik:

  • systemctl status nginx
Output● nginx.service - A high performance web server and a reverse proxy server    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)    Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago      Docs: man:nginx(8)  Main PID: 2369 (nginx)     Tasks: 2 (limit: 1153)    Memory: 3.5M    CGroup: /system.slice/nginx.service            ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;            └─2380 nginx: worker process 

Sebagaimana dikonfirmasi oleh keluaran ini, layanan telah berhasil dimulai. Namun, cara terbaik untuk menguji ini adalah dengan benar-benar meminta suatu laman dari Nginx.

Anda dapat mengakses laman landas Nginx asali untuk mengonfirmasi bahwa perangkat lunak berjalan dengan baik dengan bernavigasi ke alamat IP server Anda. Jika Anda tidak mengetahui alamat IP server Anda, Anda dapat menemukannya dengan menggunakan alat icanhazip.com, yang akan memberi Anda alamat IP publik Anda sebagaimana diterima dari lokasi lain di internet:

  • curl -4 icanhazip.com

Saat Anda memiliki alamat IP server Anda, masukkan alamat itu ke dalam bilah alamat peramban Anda:

http://your_server_ip 

Anda akan menerima laman landas Nginx asali:

Laman asali Nginx

Jika Anda berada di laman ini, server Anda berjalan dengan benar dan siap untuk dikelola.

Langkah 4 – Mengelola Proses Nginx

Karena kini server web Anda sudah aktif dan berjalan, mari kita tinjau beberapa perintah manajemen dasar.

Untuk menghentikan server web Anda, ketik:

  • sudo systemctl stop nginx

Untuk memulai server web saat berhenti, ketik:

  • sudo systemctl start nginx

Untuk menghentikan lalu memulai layanan lagi, ketik:

  • sudo systemctl restart nginx

Jika Anda hanya membuat perubahan konfigurasi, Nginx seringkali dapat memuat ulang tanpa memutus koneksi. Untuk melakukan ini, ketik:

  • sudo systemctl reload nginx

Secara asali, Nginx dikonfigurasikan untuk memulai secara otomatis saat server melakukan boot. Jika ini bukan apa yang Anda inginkan, Anda dapat menonaktifkan perilaku ini dengan mengetik:

  • sudo systemctl disable nginx

Untuk mengaktifkan kembali layanan agar memulai saat boot, Anda dapat mengetik:

  • sudo systemctl enable nginx

Anda kini telah mempelajari perintah manajemen dasar dan siap untuk mengonfigurasi situs untuk menjadi hos dari lebih dari satu domain.

Langkah 5 – Menyiapkan Blok Server (Disarankan)

Ketika menggunakan server web Nginx, blok server (serupa dengan hos virtual di Apache) dapat digunakan untuk mengenkapsulasi detail konfigurasi dan menjadi hos untuk lebih dari satu domain dari suatu server tunggal. Kita akan menyiapkan domain bernama your_domain, tetapi Anda harus menggantinya dengan nama domain Anda sendiri. Untuk mempelajari lebih lanjut tentang menyiapkan nama domain dengan DigitalOcean, silakan merujuk ke Pengantar DNS DigitalOcean yang kami sediakan.

Nginx pada Ubuntu 20.04 memiliki satu blok server yang diaktifkan secara asali, yang dikonfigurasi untuk menampilkan dokumen dari suatu direktori di /var/www/html. Meskipun ini berfungsi baik untuk situs tunggal, ini bisa menjadi sulit dijalankan jika Anda menjadi hos dari beberapa situs. Alih-alih memodifikasi /var/www/html, mari kita buat suatu struktur direktori di dalam /var/www untuk situs your_domain kita, dengan membiarkan /var/www/html sebagai direktori asali yang akan ditampilkan jika permintaan klien tidak cocok dengan situs lain apa pun.

Buat direktori untuk your_domain sebagai berikut, dengan menggunakan bendera -p untuk menciptakan direktori induk apa pun yang diperlukan:

  • sudo mkdir -p /var/www/your_domain/html

Selanjutnya, tentukan kepemilikan direktori dengan variabel lingkungan $USER:

  • sudo chown -R $USER:$USER /var/www/your_domain/html

Izin root web Anda seharusnya benar jika Anda belum mengubah nilai umask Anda, yang menetapkan izin berkas asali. Untuk memastikan izin Anda benar dan memperbolehkan pemilik untuk membaca, menulis, dan mengeksekusi berkas, sementara hanya memperbolehkan membaca dan mengeksekusi ke grup dan lainnya, Anda dapat memasukkan perintah berikut:

  • sudo chmod -R 755 /var/www/your_domain

Selanjutnya, buat laman index.html dengan menggunakan nano atau editor favorit Anda:

  • nano /var/www/your_domain/html/index.html

Di dalam, tambahkan HTML sampel berikut ini:

/var/www/your_domain/html/index.html

<html>     <head>         <title>Welcome to your_domain!</title>     </head>     <body>         <h1>Success!  The your_domain server block is working!</h1>     </body> </html> 

Simpan dan tutup berkas dengan menekan CTRL dan X lalu Y dan ENTER saat Anda selesai.

Agar Nginx menyajikan konten ini, maka diperlukan untuk menciptakan blok server dengan arahan yang benar. Alih-alih memodifikasi berkas konfigurasi asali secara langsung, mari kita buat yang baru di /etc/nginx/sites-available/your_domain:

  • sudo nano /etc/nginx/sites-available/your_domain

Tempel di blok konfigurasi berikut, yang serupa dengan yang asali, tetapi diperbarui untuk nama domain dan direktori baru kita:

/etc/nginx/sites-available/your_domain

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

Perhatikan bahwa kita telah memperbarui konfigurasi root ke direktori baru kita, dan server_name ke nama domain kita.

Selanjutnya, mari kita mengaktifkan berkas dengan menciptakan tautan darinya ke direktori sites-enabled, yang dibaca Nginx selama memulai:

  • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Dua blok server sekarang telah diaktifkan dan dikonfigurasi untuk merespons permintaan berdasarkan arahan listen dan server_name (Anda dapat membaca lebih lanjut tentang cara Nginx memproses arahan ini di sini):

  • your_domain: Akan merespons permintaan untuk your_domain dan www.your_domain.
  • asali: Akan merespons permintaan apa pun pada porta 80 yang tidak cocok dengan dua blok lainnya.

Untuk menghindari masalah memori hash bucket yang dapat muncul dari penambahan nama server tambahan, maka diperlukan untuk menyesuaikan satu nilai dalam berkas /etc/nginx/nginx.conf. Buka berkas:

  • sudo nano /etc/nginx/nginx.conf

Cari arahan server_names_hash_bucket_size dan hapus simbol # untuk menghapus komentar pada baris itu. Jika Anda menggunakan nano, Anda dapat dengan cepat mencari kata-kata di dalam berkas dengan menekan CTRL dan w.

/etc/nginx/nginx.conf

... http {     ...     server_names_hash_bucket_size 64;     ... } ... 

Simpan dan tutup berkas saat Anda sudah selesai.

Selanjutnya, uji untuk memastikan bahwa tidak ada kesalahan sintaks pada berkas Nginx Anda:

  • sudo nginx -t

Jika tidak ada masalah apa pun, mulai kembali Nginx untuk mengaktifkan perubahan Anda:

  • sudo systemctl restart nginx

Nginx sekarang seharusnya menyajikan nama domain Anda. Anda dapat menguji ini dengan bernavigasi ke http://your_domain, di mana Anda akan melihat sesuatu seperti ini:

Blok server pertama Nginx

Langkah 6 – Membiasakan Diri dengan Berkas dan Direktori Penting Nginx

Setelah Anda mengetahui cara mengelola layanan Nginx, Anda perlu waktu beberapa menit untuk membiasakan diri dengan beberapa direktori dan berkas penting.

Isi

  • /var/www/html: Konten web yang sebenarnya, yang secara asali hanya terdiri dari halaman Nginx asali yang Anda lihat sebelumnya, disajikan dari direktori /var/www/html. Ini dapat diubah dengan mengubah berkas konfigurasi Nginx.

Konfigurasi Server

  • /etc/nginx: Direktori konfigurasi Nginx. Semua berkas konfigurasi Nginx berada di sini.
  • /etc/nginx/nginx.conf: Berkas konfigurasi Nginx utama. Ini dapat diubah untuk membuat perubahan pada konfigurasi global Nginx.
  • /etc/nginx/sites-available/: Direktori tempat blok server per situs dapat disimpan. Nginx tidak akan menggunakan berkas konfigurasi yang ditemukan dalam direktori ini kecuali berkas tersebut terhubung ke direktori sites-enabled. Biasanya, semua konfigurasi blok server dilakukan dalam direktori ini, lalu diaktifkan dengan menghubungkannya ke direktori lain.
  • /etc/nginx/sites-enabled/: Direktori tempat blok server yang diaktifkan per situs disimpan. Biasanya, ini dibuat dengan menghubungkan ke berkas konfigurasi yang ditemukan dalam direktori sites-available.
  • /etc/nginx/snippets: Direktori ini berisi fragmen konfigurasi yang dapat disertakan di tempat lain dalam konfigurasi Nginx. Segmen konfigurasi yang berpotensi dapat diulang adalah kandidat yang baik untuk pemfaktoran ulang menjadi snippet.

Log Server

  • /var/log/nginx/access.log: Setiap permintaan ke server web Anda direkam dalam berkas log ini kecuali Nginx dikonfigurasi untuk tidak melakukannya.
  • /var/log/nginx/error.log: Setiap kesalahan Nginx akan direkam dalam log ini.

Kesimpulan

Kini server web Anda telah terinstal, Anda memiliki banyak pilihan untuk tipe konten yang dilayani dan teknologi yang Anda ingin gunakan untuk menciptakan pengalaman yang lebih kaya.

Jika Anda ingin membangun tumpukan aplikasi yang lebih lengkap, bacalah artikel Cara Menginstal Linux, Nginx, MySQL, PHP (tumpukan LEMP) pada Ubuntu 20.04.