Perintah Shell Menginstall NGINX Dengan Source Code Di Linux

Terbit: Perbarui:
Tags


Mengapa Anda ingin menginstal NGINX dari kode sumber daripada paket yang dibuat sebelumnya? Alasan paling penting adalah bahwa pustaka yang menjadi sandaran NGINX (PCRE, zlib, OpenSSL) adalah bagian dari paket yang dibuat sebelumnya, dan membangun dari sumber memungkinkan Anda menggunakan versi terbaru yang mungkin berisi patch keamanan penting.

Alasan lain untuk menginstal dari sumber adalah karena NGINX dapat dikonfigurasi dengan berbagai cara, dan satu-satunya cara untuk memilih cara konfigurasinya adalah dengan menginstal dari sumber. Saat Anda menginstal NGINX dari paket yang dibuat sebelumnya, Anda terjebak dengan kumpulan modul apa pun yang diaktifkan. Dalam posting ini, saya akan menunjukkan cara menyertakan modul pihak ketiga dan cara mengaktifkan modul yang dinonaktifkan secara default.

Panduan ini adalah tentang menyiapkan server Nginx dari kode sumber. Proses instalasi Nginx memiliki dua opsi, yaitu jalur utama dan stabil.

  1. Versi jalur utama: Ini yang terbaru dan hampir semua bug diperbaiki dengan fitur-fitur baru. Ini termasuk beberapa modul eksperimental tetapi dapat diandalkan untuk digunakan.
  2. Versi stabil: Ini termasuk bug kritis tetapi tanpa fitur baru. Versi stabil direkomendasikan untuk server produksi.

Panduan ini ditulis untuk sistem operasi Debian 13 Trixie, tetapi langkah-langkahnya dapat anda terapkan pada sistem oeprasi lainnya, hanya perlu diubah sedikit untuk diterapkan ke distribusi Linux lainnya atau BSD.

A. Panduan Menginstall Dependensi NGINX

Untuk menyelesaikan NGINX dari sumbernya, kita perlu menginstal beberapa dependensi. Ini termasuk perpustakaan pengembangan bersama dengan kompiler kode sumber.

Langkah pertama yang harus anda kerjakan adalah memperbarui paket apt Debian.

update paket APT
root@doh:~# apt-get update -y
root@doh:~# apt-get upgrade -y

a. Dependensi GEOIP

Dependensi ini digunakan jika anda ingin mengaktifkan fitur GeoIP di server NGINX. Fitur ini mampu memblock siapa saja orang yang dapat membuka situs web NGINX anda. Dengan fitur GeoIP anda bisa membatasi negara mana saja yang akan anda ijinkan untuk mengakses membuka situs web anda. Jalankan perintah di bawah ini untuk menginstall dependensi GeoIP.

Instal dependensi GeoIP
root@doh:~# apt-get install libmaxminddb0 libmaxminddb-dev mmdb-bin -y

b. Dependensi HTTP/2 HTTP/3

Dependensi ini digunakan untuk menjalankan NGINX agar mendukung HTTP/2 HTTP/3. HTTP / 3 berjalan di atas QUIC (UDP) dan memecahkan masalah HTTP / 2 pada TCP: ketika sebuah paket hilang, hanya aliran yang menderita, bukan seluruh koneksi. Plus, ini terhubung lebih cepat karena jabat tangan yang berkurang dan enkripsi bawaan (TLS 1.3). Di dunia nyata, ini berarti lebih sedikit latensi, unduhan yang lebih stabil di 4G/5G / Wi-Fi, dan lebih sedikit "menggantung" saat klien berpindah antar sel.

Instal dependensi HTTP/2  HTTP/3
root@doh:~# apt-get install libnghttp2-dev nghttp2 libnghttp2-14 libnghttp3-9 libnghttp3-dev

Selain paket nghttp2 dan nghttp3, untuk melengkapi paket tersebut anda juga harus menginstall paket ngtcp2.

Instal dependensi ngtcp2
root@doh:~# apt-get install libngtcp2-dev libngtcp2-16

c. Dependensi lainnya

Dependensi lainnya dapat anda sesuaikan sendiri, misalkan anda ingin NGINX mengkompres dengan paket ZLIB, install paket ZLIB tersebut.

Berikut ini kami berikan contoh beberapa dependensi yang sering kami gunakan untuk mengkompile NGINX.

Instal dependensi lainnya
root@doh:~# apt-get install zlib1g libpcre2-dev zlib1g-dev libssl-dev libgd-dev libatomic-ops-dev libxml2 libxml2-dev libxslt1-dev uuid-dev -y

Jangan lupa untuk menginstall library perl, karena library ini sangat dibutuhkan oleh NGINX.

Instal dependensi lainnya
root@doh:~# libperl5.40 perl-base libperl5.40 libperl-dev -y

B. Panduan Menginstall NGINX

Nginx sangat mudah dipasang jika kita menginstalnya dari pengelola paket seperti aptdi Ubuntu atau yumdi CentOS. Ini bagus untuk penyeimbang beban yang diusulkan secara umum, proksi terbalik, dan server web.

Namun terkadang kita membutuhkan modul tambahan untuk menambahkan lebih banyak fungsi ke Nginx yang tidak disertakan dalam penginstalan default dari manajer paket. Jika demikian, Anda perlu menginstal Nginx dari sumbernya.

Pada bagian ini, setelah anda menginstall semua dependensi NGINX, kami akan memandu Anda langkah demi langkah tentang cara menginstal Nginx dari kode sumber di server Debian 13 Trixie.

File master nginx
Unduh File Master NGINX dari Situs Resmi NGINX

Sebelum Anda mengunduh kode sumber NGINX, Anda dapat mengunjungi http://nginx.org/en/download.html untuk melihat versi Nginx tersedia sekarang. Setelah itu Anda dapat mengunduhnya dengan menjalankan perintah berikut ini.

Unduh file master NGINX
root@doh:~# cd /home
root@doh:/home# wget https://nginx.org/download/nginx-1.30.4.tar.gz

Setelah itu anda jalankan perintah ekstrak pada file yang telah anda unduh tersebut.

Ekstark file master NGINX
root@doh:/home# tar -xzvf nginx-1.30.4.tar.gz

Sebelum anda memulai kompilasi jalankan perintah ./configure --help untuk melihat opsi atau flags apa saja yang ada selama proses kompilasi.

Setelah anda melihat opsi yang ada, sekarang saatnya kita mulai kompilasi. Tiap orang pasti berbeda dalam melakukan perintah kompilasi. Pada contoh ini kompilasi yang kami gunakan untuk menjalankan server NGINX untuk membuat situs web publik.

Kompilasi/Install NGINX
root@doh:/home/nginx-1.30.4# ./configure --prefix=/var/www/html --sbin-path=/usr/local/sbin --modules-path=/usr/local/libexec/nginx \
--pid-path=/var/run/nginx.pid --user=nginx --group=nginx --conf-path=/usr/local/etc/nginx/nginx.conf \
--http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log \
--lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_v2_module \
--with-http_v3_module --with-http_realip_module --with-http_addition_module \
--with-http_xslt_module=dynamic --with-http_image_filter_module \
--with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module \
--with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module \
--with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module \
--with-http_slice_module  --with-http_stub_status_module --with-http_perl_module --with-http_perl_module=dynamic \
--with-perl_modules_path=/usr/local/libexec --with-mail=dynamic \
--with-mail_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module \
--with-stream --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module \
--with-stream_ssl_preread_module --without-stream_upstream_zone_module \
--with-compat --with-pcre --with-pcre-jit --with-libatomic

Setelah itu jalankan perintah make dan make install.

Mulai install NGINX
root@doh:/home/nginx-1.30.4# make
root@doh:/home/nginx-1.30.4# make install

C. Buat user dan group nginx

Pada sistem berbasis Linux seperti Debian atau Ubuntu, biasanya NGINX berjalan di bawah sistem dan group tertentu. Dan biasanya user dan group yang serng digunakan bernama nginx.

Sebelum kita mulai menjalankan NGINX, kami sarankan anda terlebih dahulu membuat user dan group tersebut.

Buat user dan group untuk NGINX
root@doh:~# groupadd -g 210 nginx
root@doh:~# useradd -c "NGINX unprivileged user" -d /var/www/html -u 210 -g nginx -s /bin/false nginx

D. Membuat File Systemd

Meskipun anda telah berhasil menginstall NGINX dengan source code, sepertinya NGINX anda tak akan berguna. Meskipun NGINX dapat anda jalankan secara manual. Namun hal itu sangat merepotkan, karena tiap kali anda merestart komputer anda harus menjalankan NGINX dengan perintah shell.

Agar NGINX dapat berjalan secara otomatis pada saat komputer melakukan proses booting, buat file /etc/systemd/system/nginx.service.

Pada file tersebut anda ketikkan skrip berikut ini.

Skrip untuk file /etc/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/sbin/nginx -t -c /usr/local/etc/nginx/nginx.conf
ExecStart=/usr/local/sbin/nginx -c /usr/local/etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

Jalankan perintah di bawah ini untuk mengaktifkan skript di atas.

Menjalankan NGINX
root@doh:~# systemctl daemon-reload
root@doh:~# systemctl enable nginx
root@doh:~# systemctl restart nginx
root@doh:~# systemctl status nginx

Selamat! Anda sekarang menjalankan versi terbaru NGINX yang menyertakan versi terbaru pustaka PCRE, zlib, GeoIP dan OpenSSL. Paket NGINX yang dibuat sebelumnya sering kali menyertakan versi lama dari pustaka ini, yang mungkin berisi bug dengan tingkat keparahan tinggi.

Dengan membangun NGINX dari sumber, server web Anda berisi fitur terbaru dari pustaka ini bersama dengan perbaikan bug dan patch keamanan apa pun yang telah dirilis.