Tutorial untuk Menyebarkan Aplikasi Node.Js ke Server Nginx

· 7 min read
Tutorial untuk Menyebarkan Aplikasi Node.Js ke Server Nginx
Photo by Ben Kolde / Unsplash

Dalam panduan ini, saya akan menjelaskan proses langkah demi langkah penerapan aplikasi Node.Js pertama Anda ke server menggunakan layanan pengembangan aplikasi web .

Jadi, mari kita mulai sekarang!

Memulai

Nah, dengan menggunakan teknologi berbasis cloud, Anda dapat menerapkan aplikasi dengan berbagai cara. Jika Anda menyewa pengembang NodeJs yang berpengalaman , mereka dapat menggunakan banyak layanan seperti Microsoft Azure, Google Cloud, atau AWS untuk menghosting aplikasi web Anda. Selain itu, Anda dan tim Anda dapat menggunakan layanan PaaS seperti Heroku untuk penerapan yang cepat dan mudah.

Selain itu, saat menerapkan aplikasi Node.Js ke server Linux kosong di Cloud, sulit untuk menemukan konfigurasi dan tumpukan teknologi yang tepat yang memenuhi harapan Anda.

Ada banyak Virtual Private Server – VPS yang dapat Anda temukan dari berbagai platform yang dapat diandalkan. Namun, di sini, kita akan menggunakan Hostinger karena hemat biaya dan mudah dikonfigurasi dengan berbagai add-on.

Di sini, saya menggunakan Ubuntu versi terbaru – 20.04.

Jadi, ikuti langkah-langkah yang diperlukan untuk menyebarkan aplikasi Node.Js Anda ke server kosong.

  • Pengaturan DBMS: Di sini, kami akan menggunakan MySQL (Sesuai dengan kebutuhan aplikasi Anda)
  • Siapkan Proxy Terbalik: Untuk mengunjungi kembali Permintaan HTTP ke Server Node.Js internal kita, kita akan menggunakan Nginx .
  • Instal Node & NPM.
  • Instal Manajer Proses PM2 Node.Js.
  • Dari kontrol versi, dorong/klon kode Anda.
  • Konfigurasikan proxy terbalik dan jalankan server lokal.

Ikuti langkah-langkah di atas untuk mengakses IP server atau nama domain Anda di PORT 80 melalui aplikasi Node.Js Anda. Selain itu, sebagai port default, 80 dianggap untuk melayani HTTP.

Sekarang, Anda diharuskan memiliki SSH ke server Anda saat menggunakan Hostinger. Anda akan dapat melihat alamat IP server di sisi kanan. Anda dapat menggunakan SSH sebagai root.

ssh [email protected]

Dari Cpanel Hostinger, Anda dapat mengubah kata sandi SSH.

Instal Basis Data MySQL

Proses instalasinya sama dengan paket Debian (Ubuntu) lainnya di seluruh apt.

sudo apt update
sudo apt install mysql-server

Saat menjalankan skrip konfigurasi, Anda harus memastikan bahwa Anda telah menerima semua izin yang diperlukan dari server. Sekarang konfigurasikan server MySQL Deamon. Ini akan memberikan keamanan yang ketat dalam lingkungan yang siap produksi.

sudo mysql_secure_installation

Setelah memberikan perintah ke server, Anda dapat mengubah beberapa opsi keamanan MySQL.

Namun, Anda harus mengonfigurasi Plugin Validasi Kata Sandi di jendela pertama. Dengan cara ini, Anda dapat memeriksa kekuatan kata sandi MySQL Anda.

Untuk jendela kedua, Anda harus mengatur kata sandi pengguna root MySQL.

Setelah Anda selesai dengan jendela tersebut, Anda harus menekan Y dan Enter untuk menerima pengaturan default untuk semua pertanyaan berikutnya.

Sekarang, tidak ada pengguna anonim yang dapat mengaksesnya. Selain itu, sistem ini juga akan melarang login root jarak jauh, menghapus basis data pengujian, dan mengintegrasikan aturan-aturan baru ini. MySQL akan segera beradaptasi dengan perubahan tersebut.

Jangan lupa untuk memeriksa apakah server MySQL berjalan atau tidak dengan perintah yang diberikan.

systemctl status mysql

Jika Anda melihat status Aktif atau berjalan, ini berarti server Anda telah berhasil dimulai tanpa masalah apa pun.

Sekarang, hubungkan server dengan klien MySQL.

mysql -u root

Wah!

Sekarang, kita telah berhasil mengonfigurasi Server Basis Data tanpa kesalahan apa pun.

mysql quit

Proksi Terbalik Nginx

Di sini, kami menggunakan Nginx reverse proxy untuk menerima beberapa permintaan dari klien dan mengirimkannya ke server yang berbeda. Kami akan menggunakan server Nodejs di sini.

Berdasarkan pengalaman saya, Nginx adalah Server HTTP yang luar biasa dan andal. Umumnya digunakan untuk melayani File HTML statis dan proxy terbalik.

Menyediakan akses internal ke server atau sumber daya yang berada di belakang firewall.

Di sini, dalam kasus kita, kita akan menjalankan aplikasi NodeJs pada port 3000 di balik firewall. Hanya melalui localhost, kita dapat mengaksesnya. Sekarang, ikat proxy terbalik Nginx ke port 80 – tersedia untuk umum. Setelah itu, ia dapat melayani server Nodejs localhost.

Sekarang saatnya menginstal Nginx.

sudo apt update
sudo apt install nginx

Sekarang, apache2 telah terinstal di Hostinger. Apache2 telah dikonfigurasi sepenuhnya untuk melayani HTTP di PORT 80. Oleh karena itu, kita harus menonaktifkan apache2 dari server kita.

sudo apt-get remove apache2*

Setelah menggunakan perintah tersebut, semua paket dan sub-paket apache2 tidak akan tersedia.

Sekarang konfigurasikan server Nginx Anda dengan halaman web Uji sederhana.

Namun sebelum melangkah lebih jauh, kita harus memasang firewall untuk mengamankan server kita.

Jadi, mari kita instal ufw (uncomplicated firewall).

sudo apt install ufw

Untuk mengakses server Anda di masa mendatang, Anda harus memastikan bahwa semua koneksi SSH hanya melewati firewall.

ufw allow ssh

Anda harus menulis kode tertentu untuk memeriksa aplikasi jaringan mana yang tersedia dan memiliki akses melalui firewall.

ufw app list
>  Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS
   OpenSSH
  • Nginx Penuh: Membuka port 80 (lalu lintas web normal dan tidak terenkripsi) dan port 443 (lalu lintas terenkripsi TLS/SSL)
  • Nginx HTTP: Hanya membuka port 80
  • Nginx HTTPS: Hanya membuka port 443

Karena kita membutuhkan HTTP melalui ufw, mari izinkan Nginx.

Izinkan Nginx HTTPS atau Nginx Penuh.

sudo ufw allow 'Nginx HTTP'
> Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Jika Anda dapat melihat izinkan di kotak tindakan OpenSSH dan Nginx HTTP, Anda berada di jalur yang benar.

Seperti yang dapat kita asumsikan, ia juga mendukung Protokol IPV6.

Dengan kode tertulis di bawah ini, periksa status Nginx.

sudo systemctl status nginx

Biarkan status Nginx tetap aktif. Jika belum dimulai secara otomatis, lakukan secara manual.

sudo systemctl start nginx

Setelah menyelesaikan ini, kita harus menyiapkan Nginx Server Block. Dari server yang diberikan atau beberapa domain independen, Anda dapat melayani subdomain.

  • Alamat Konfigurasi Nginx: /etc/nginx/
  • Alamat Root Server Utama Nginx : /var/www/

Sekarang, mari buat alamat IP utama atau domain yang melayani halaman root.

sudo mkdir -p /var/www/servername.com/html

Pastikan izin web root sudah benar dengan kode yang diberikan.

sudo chmod -R 755 /var/www/servername.com

Di sini, -R (rekursif) akan mendefinisikan semua sub-direktori servername.com yang memiliki izin yang sama dengan direktori induk.

Kemudian, tulis kode yang diberikan. Kode ini akan menetapkan kepemilikan direktori yang memiliki variabel lingkungan bernama $USER:

sudo chown -R $USER:$USER /var/www/example.com/html

Sekarang, mari kita buat halaman web index.html sederhana untuk tujuan pengujian. Kemudian integrasikan proxy server Nginx ke localhost yang menjalankan aplikasi NodeJs.

nano /var/www/servername.com/html/index.html

Tulis kode HTML yang diberikan di bawah ini di dalam.

<html> 

     <head> 
        <title>Welcome to servername.com!</title> 
    </head> 
 
    <body> 
        <h1> 

Success! The servername.com server block is working successfully! 

        </h1> 
        
 <b>Meow Meow!</b> 
 
    </body> 

 </html>

Sekarang tutup editor teks Nano setelah menyimpan.

Selain itu, kita harus menambahkan konfigurasi di /etc/nginx/sites-available agar Nginx dapat menyajikan konten ini.

sudo nano /etc/nginx/sites-available/servername.com

Anda harus menjaga berkas konfigurasi sama dengan nama domain Anda agar mudah dikelola.

Untuk konfigurasi Nginx yang sederhana, berikut kodenya.

server { 
        listen 80; 
        listen [::]:80; 
 
        root /var/www/servername.com/html; 
        index index.html index.htm index.nginx-debian.html; 
 
        #Here, you can put your domain name for ex: www.servername.com 
 
        server_name 42.35.40.01; 
 
        location / { 
                try_files $uri $uri/ =404; 
        } 
} 

/etc/nginx/sites-available hanya tersedia untuk menyimpan konfigurasi Anda. Jika Anda harus mengaktifkannya, buat tautan ke konfigurasi tersebut ke direktori sites-enabled untuk melihat pengaruhnya pada server.

sudo ln -s /etc/nginx/sites-available/servername.com /etc/nginx/sites-enabled/

Jika Anda ingin memeriksa kesalahan pada konfigurasi penambahan baru, jalankan kode di bawah ini.

nginx -t

Sekarang, mulai ulang Nginx untuk konfigurasi baru untuk modifikasi.

sudo systemctl restart nginx

Sekarang, coba telusuri alamat IP atau nama domain server. Anda akan dapat melihat halaman uji dari contoh halaman web yang disajikan kembali kepada Anda. Jadi, server Nginx berjalan dengan sukses di balik firewall ufw.

Instal Node

Di sini, kita akan menggunakan NVM , yang dapat Anda unduh dari GitHub . Umumnya, Anda dapat menginstal Node dari pengelola paket apt, tetapi tidak akan memungkinkan Anda menginstal versi terbaru.

sudo apt install wget

wget -qO-https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

Ia akan mempertimbangkan skrip install.sh dan mengeksekusinya dengan bash untuk menginstal NVM.

Untuk menerapkan perubahan lingkungan, Anda perlu menjalankan .profile atau .bashrc dari folder asal Anda. Dan ini sepenuhnya bergantung pada persyaratan dan konfigurasi Anda.

source ~/.bashrc
source ~/.profile

Sekarang jalankan perintah nvm . Perintah tersebut akan berjalan lancar.

nvm -v
0.34

Sekarang instal Node dan NPM menggunakan NVM dengan kode berikut.

nvm install 11.0

Kemudian perintah Node dan NPM akan tersedia melalui baris perintah.

node -v
11.0

Instal PM2 dan Kloning Repo

PM2 adalah pengelola proses NodeJs. Aplikasi ini melacak proses Node yang sedang berjalan untuk mempermudah proses debug. Selain itu, aplikasi ini juga menampilkan berkas log aplikasi yang sedang berjalan.

Mari kita menginstalnya.

npm install pm2 -g

Sangat mudah untuk diinstal, seperti proses PM2.

Sekarang, ada persyaratan kode aplikasi Node.Js di server. Jadi, kita akan menggunakan Git Version Control untuk mengirim dan kemudian mengkloning repositori.

git add . 
git commit -m "Initial Commit" 
git remote add origin "https://github.com/username/your_repo" 
git push origin master

Sekarang klon repositori dengan kode yang diberikan.

mkdir repos 
cd repos 
git clone https://github.com/username/your_repo

Misalkan kerangka kerjanya berbasis pada server Node.Js atau Express sederhana dengan app.js, maka Anda perlu menggunakan PM2 untuk memulai prosesnya.

cd /repos/your_repo

Gunakan PM2 sekarang.

pm2 start server app.js

Di sini, kita akan menggunakan instance app.js dengan PM2. Kita menamainya “server” agar kita dapat mengidentifikasi aplikasi kita dengan mudah.

Setelah Anda selesai dengan proses ini, Anda akan mendapatkan tabel yang menunjukkan aplikasi yang berjalan/berhenti dan penggunaan CPU.

gambar

Konfigurasikan Proxy Terbalik

Konfigurasi Nginx sudah ditambahkan dengan halaman index.html sederhana.

Sekarang ikat ke alamat localhost, yang mewakili alamat aplikasi NodeJs yang sedang berjalan.

Di sinilah Nginx mengambil tempatnya sebagai proxy terbalik.

Sekarang buka konfigurasi servername.com dan lakukan perubahan penting untuk berfungsi sebagai proxy terbalik.

server  

{ 
        listen   80; 
        server_name 42.35.40.01; 
 
        location /  

{ 
                proxy_set_header X-Real-IP $remote_addr; 
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
                proxy_set_header Host $host; 
                proxy_set_header X-NginX-Proxy true; 
                proxy_pass http://localhost:3000/; 
                proxy_redirect http://localhost:3000/ https://$server_name/; 
        } 
}

Setelah Anda menerapkan kode di atas, semua pertanyaan Anda dari Nginx akan dialihkan ke http://localhost:3000 . Di sanalah Anda akan menemukan server NodeJs berjalan.

Sekarang ubah host dan port aplikasi NodeJs Anda yang ada.

Header khusus yang disediakan akan dikirim bersama permintaan yang diproksi ke server NodeJs kami - $remote_addr dan $host. Header ini mewakili alamat IP sebenarnya dari pengguna yang mengajukan permintaan pada awalnya.

Akhirnya, semuanya tercakup dan pengaturannya pun rampung.

Anda dapat mengakses alamat IP server atau nama domain Anda di browser tempat server NodeJs menangani permintaan tersebut. Bukankah itu keren? Haah!!

Bagaimanapun, menggunakan proxy terbalik dan port 3000 (port server NodeJs) adalah hal yang sangat keren. Namun, ini mengamankan server web atau aplikasi Anda.

Tepat sekali!

Anda telah menerapkan aplikasi NodeJs di server.

Lebih jauh lagi, jika Anda berencana untuk mengembangkan aplikasi NodeJs yang kaya fitur, Anda selalu dapat memiliki perusahaan pengembangan NodeJs yang berpengalaman di sisi Anda. Itu akan membantu Anda memimpin dunia dengan ide-ide Anda dan pelaksanaannya.

Sekian dan Terimakasih