Cara Menginstall Nginx Web Server Pada Ubuntu

9 minute read
Cara Menginstall Nginx Web Server Pada Ubuntu

Nginx adalah salah satu server web paling populer di dunia dan bertanggung jawab untuk menghosting beberapa situs lalu lintas terbesar dan tertinggi di internet. Ini adalah pilihan ringan yang dapat digunakan sebagai server web atau proxy terbalik.

Dalam panduan ini, kita akan membahas cara menginstal Nginx di server Ubuntu Anda, menyesuaikan firewall, mengelola proses Nginx, dan mengatur blok server untuk menghosting lebih dari satu domain dari satu server.

Sebelum memulai panduan ini, Anda harus memiliki pengguna reguler non-root dengan hak sudo yang dikonfigurasi di server Anda. Anda dapat mempelajari cara mengonfigurasi akun pengguna reguler dengan mengikuti panduan penyetelan server awal untuk Ubuntu.

Ketika Anda memiliki akun yang tersedia, masuk sebagai pengguna non-root atau root Anda untuk memulai.

  • Installing Nginx

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

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

sudo apt update
sudo apt install nginx

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

  • Adjusting the Firewall

Sebelum menguji Nginx, perangkat lunak firewall perlu disesuaikan untuk memungkinkan akses ke layanan. Nginx mendaftarkan dirinya sebagai layanan dengan ufw saat instalasi, sehingga mudah untuk memungkinkan akses Nginx.

Mencantumkan konfigurasi aplikasi yang ufw tahu cara bekerja dengan mengetik:

ufw app list

Anda harus mendapatkan daftar profil aplikasi:

Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

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

  1. Nginx Full: Profil ini membuka port 80 (lalu lintas web normal dan tidak terenkripsi) dan port 443 (lalu lintas terenkripsi TLS/ SSL)
  2. Nginx HTTP: Profil ini hanya membuka port 80 (lalu lintas web normal dan tidak terenkripsi)
  3. Nginx HTTPS: Profil ini hanya membuka port 443 (lalu lintas terenkripsi TLS/SSL)

Disarankan agar Anda mengaktifkan profil paling ketat yang masih akan memungkinkan lalu lintas yang telah Anda konfigurasi. Saat ini, kita hanya perlu mengizinkan lalu lintas di pelabuhan 80.

Anda dapat mengaktifkan ini dengan mengetik:

sudo ufw allow 'Nginx HTTP'

Anda dapat memverifikasi perubahan dengan mengetik:

sudo ufw status

Output akan menunjukkan lalu lintas HTTP mana yang diizinkan:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
  • Checking your Web Server

Pada akhir proses instalasi, Ubuntu 20.04 memulai Nginx. Peladen web harus sudah siap dan berjalan.

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

systemctl status nginx
● 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

Seperti yang dikonfirmasi oleh ini, layanan telah berhasil dimulai. Namun, cara terbaik untuk menguji ini adalah dengan benar-benar meminta halaman dari Nginx.

Anda dapat mengakses halaman arahan Nginx default untuk mengonfirmasi bahwa perangkat lunak berjalan dengan benar dengan menavigasi 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 seperti yang diterima dari lokasi lain di internet:

curl -4 icanhazip.com

Saat Anda memiliki alamat IP server Anda, masukkan alamat ke bilah alamat browser Anda:

http://your_server_ip

Anda harus menerima halaman arahan Nginx default:

Cara Menginstall Nginx Web Server Pada Ubuntu

Jika Anda berada di halaman ini, Nginx berjalan dengan benar dan siap dikelola.

  • Managing the Nginx Process

Sekarang setelah Server web Anda dan berjalan, mari kita tinjau beberapa perintah manajemen dasar.

Untuk menghentikan server web Anda, ketik:

sudo systemctl stop nginx

Untuk memulai server web ketika dihentikan, ketik:

sudo systemctl start nginx

Untuk menghentikan lalu memulai layanan lagi, ketik:

sudo systemctl restart nginx

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

sudo systemctl reload nginx

Secara default, Nginx dikonfigurasi untuk memulai secara otomatis ketika server boot. Jika ini bukan yang Anda inginkan, Anda dapat menonaktifkan perilaku ini dengan mengetik:

sudo systemctl disable nginx

Untuk mengaktifkan kembali layanan untuk memulai di boot, Anda dapat mengetik:

sudo systemctl enable nginx

Anda sekarang telah mempelajari perintah manajemen dasar dan harus siap untuk mengonfigurasi situs untuk meng-host lebih dari satu domain.

  • Setting Up Server Blocks (Recommended)

Saat menggunakan server web Nginx, blok server (mirip dengan host virtual di Apache) dapat digunakan untuk merangkum detail konfigurasi dan menghosting lebih dari satu domain dari satu server. Kami akan menyiapkan domain yang disebut your_domain, tetapi Anda harus menggantinya dengan nama domain Anda sendiri. Untuk mempelajari selengkapnya tentang menyiapkan nama domain dengan DigitalOcean, silakan lihat Pengenalan DNS DigitalOcean kami.

Nginx pada Ubuntu 20.04 memiliki satu blok server diaktifkan secara default yang dikonfigurasi untuk melayani dokumen dari direktori di /var/www/html. Meskipun ini berfungsi dengan baik untuk satu situs, itu bisa menjadi tidak sehat jika Anda menghosting beberapa situs. Alih-alih memodifikasi /var/www/html, mari kita buat struktur direktori dalam /var/www untuk situs your_domain kami, meninggalkan /var/www/html sebagai direktori default yang akan dilayani jika permintaan klien tidak cocok dengan situs lain.

Buat direktori untuk your_domain sebagai berikut, menggunakan flag -p untuk membuat direktori induk yang diperlukan:

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

Selanjutnya, tetapkan kepemilikan direktori dengan variabel $USER lingkungan:

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

Izin akar web Anda harus benar jika Anda belum mengubah nilai umask Anda, yang menetapkan izin file default. Untuk memastikan bahwa izin Anda benar dan memungkinkan pemilik untuk membaca, menulis, dan mengeksekusi file sambil hanya memberikan izin baca dan eksekusi kepada grup dan orang lain, Anda dapat memasukkan perintah berikut:

sudo chmod -R 755 /var/www/your_domain

Selanjutnya, buat contoh indeks.html menggunakan nano atau editor favorit Anda:

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

Di dalamnya, tambahkan contoh HTML berikut:

<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 file dengan mengetik CTRL dan X lalu Y dan ENTER saat Anda selesai.

Agar Nginx dapat melayani konten ini, anda perlu membuat blok server dengan arahan yang benar. Alih-alih memodifikasi file konfigurasi default secara langsung, mari kita buat yang baru di /etc/nginx/sites-available/your_domain:

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

Tempelkan blok konfigurasi berikut, yang mirip dengan default, tetapi diperbarui untuk direktori dan nama domain baru kami:

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 kami telah memperbarui konfigurasi root ke direktori baru kami, dan server_name nama domain kami.

Selanjutnya, mari kita aktifkan file dengan membuat tautan darinya ke direktori yang diaktifkan situs, yang dibaca Nginx selama startup:

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

Dua blok server sekarang diaktifkan dan dikonfigurasi untuk menanggapi permintaan berdasarkan arahan mendengarkan dan server_name mereka (Anda dapat membaca lebih lanjut tentang bagaimana Nginx memproses arahan ini di sini):

your_domain: Akan menanggapi permintaan your_domain dan www.your_domain.
default: Akan menanggapi permintaan apa pun di port 80 yang tidak cocok dengan dua blok lainnya.
Untuk menghindari kemungkinan masalah memori bucket hash yang dapat timbul dari penambahan nama server tambahan, perlu untuk menyesuaikan satu nilai dalam file /etc/nginx/nginx.conf. Buka file:

sudo nano /etc/nginx/nginx.conf

Temukan server_names_hash_bucket_size dan hapus simbol #untuk membatalkan pendaftaran baris. Jika Anda menggunakan nano, Anda dapat dengan cepat mencari kata-kata dalam file dengan menekan CTRL dan w.

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

Simpan dan tutup file ketika Anda selesai.

Selanjutnya, uji untuk memastikan bahwa tidak ada kesalahan sintaks dalam file Nginx Anda:

sudo nginx -t

Jika tidak ada masalah, mulai ulang Nginx untuk mengaktifkan perubahan Anda:

sudo systemctl restart nginx

Nginx sekarang harus melayani nama domain Anda. Anda dapat menguji ini dengan menavigasi ke http://your_domain, di mana Anda akan melihat sesuatu seperti ini:

Cara Menginstall Nginx Web Server Pada Ubuntu
  • Getting Familiar with Important Nginx Files and Directories

Sekarang Anda tahu cara mengelola layanan Nginx itu sendiri, Anda harus mengambil beberapa menit untuk membiasakan diri dengan beberapa direktori dan file penting.

Content

/var/www/html: Konten web aktual, yang secara default hanya terdiri dari halaman Nginx default yang Anda lihat sebelumnya, disajikan dari direktori /var/www/html. Ini dapat diubah dengan mengubah file konfigurasi Nginx.

Server Configuration

  • /etc/nginx: Direktori konfigurasi Nginx. Semua file konfigurasi Nginx berada di sini.
  • /etc/nginx/nginx.conf: File konfigurasi Nginx utama. Ini dapat dimodifikasi 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 jika mereka ditautkan ke direktori yang mendukung situs. Biasanya, semua konfigurasi blok server dilakukan di direktori ini, dan kemudian diaktifkan dengan menautkan ke direktori lain.
  • /etc/nginx/sites-enabled/: Direktori tempat blok server per situs diaktifkan disimpan. Biasanya, ini dibuat dengan menautkan ke file konfigurasi yang ditemukan di direktori yang tersedia di situs.
  • /etc/nginx/snippets: Direktori ini berisi fragmen konfigurasi yang dapat disertakan di tempat lain dalam konfigurasi Nginx. Segmen konfigurasi yang berpotensi berulang adalah kandidat yang baik untuk refactoring menjadi cuplikan.

Server Logs

  • /var/log/nginx/access.log: Setiap permintaan ke server web Anda dicatat dalam file log ini kecuali Nginx dikonfigurasi untuk melakukan sebaliknya.
  • /var/log/nginx/error.log: Setiap kesalahan Nginx akan dicatat dalam log ini.

Sekarang setelah server web Anda diinstal, Anda memiliki banyak opsi untuk jenis konten untuk disajikan dan teknologi yang ingin Anda gunakan untuk menciptakan pengalaman yang lebih banyak.