+3

Cách triển khai Nodejs app cơ bản lên server dành cho beginner

Bài viết sẽ hướng dẫn cách để host một Nodejs app đơn giản theo cách cơ bản nhất.

Virtual Machine (máy chủ ảo) trong bài viết được cung cấp từ nền tảng Sunteco Cloud. Độc giả có thể đăng kí tài khoản để được nhận ngay 2.000.000 miễn phí cho người dùng mới. Chi tiết xem tại https://sunteco.vn.

Bài hướng dẫn gồm 5 bước:

  • Tạo và truy cập máy chủ Sunteco Cloud
  • Tạo Nodejs app cơ bản
  • Cài đặt PM2
  • Cài đặt nginx server
  • Kiểm tra kết quả

I. Tạo và truy cập máy chủ Sunteco Cloud

Truy cập vào https://dashboard.sunteco.vn/ để tạo máy chủ ảo. Sau khi tạo xong, hệ thống Sunteco Cloud sẽ gửi password về email. Kết quả sau khi tạo xong máy chủ:

image.png

Truy cập vào máy chủ vừa tạo từ Sunteco Cloud bằng termial thông qua câu lệnh:

&  ssh <server_name@public_ip>

Câu lệnh chính xác với máy chủ ảo có tên ubuntu, địa chỉ IP public là 103.9.211.71 như ảnh dưới:

image.png

II. Tạo Nodejs app cơ bản

Cài đặt nodejs và npm

$ sudo apt update
$ sudo apt install nodejs
$ sudo apt install npm

Tạo một file hello.js để chuẩn bị deploy:

$ nano hello.js

Triển khai đoạn code cơ bản như dưới đây:

const http = require('http');

const hostname = 'localhost';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World From Sunteco Cloud!\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Lưu file và exit: Ctrl + X → Y. App Nodejs sẽ listen ở port 3000. Chạy app bằng câu lệnh để kiểm tra:

$ node hello.js

Kết quả khi chạy hello.js: image.png

III. Cài đặt PM2

Cài đặt pm2 để quản lí process của nodejs app:

$ sudo npm install pm2@latest -g

Chạy nodejs app với pm2:

$ pm2 start hello.js

Sau khi start thành công với pm2, terminal sẽ hiện ra thông tin của app: image.png

IV. Cấu hình nginx server

Ở thời điểm này, nodejs app đang chạy ở localhost với port 3000. Cần cấu hình cài đặt nginx để người dùng có thể truy cập được.

Cài đặt nginx:

$ sudo apt install nginx

Tạo file config cho nodejs app với câu lệnh:

$ sudo nano /etc/nginx/sites-available/<name>

Câu lệnh chính xác với tên file cấu hình là nodeApp:

$ sudo nano /etc/nginx/sites-available/nodeApp

Những thông tin cần thiết ở file /etc/nginx/sites-available/nodeApp:

server{
 server_name địa_chỉ_public_ip;

     location / {
       proxy_pass http://localhost:3000;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'upgrade';
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
   }
}

Với máy chủ ảo cung cấp từ Sunteco Cloud có địa chỉ IP public là 103.9.211.71, nội dung file chính xác sẽ là:

image.png

Lưu file và thoát: Ctrl +X → Y

Kiểm tra xem file config đã đúng cú pháp hay chưa:

$ sudo nginx -t

Nếu file cấu hình đúng, out put sẽ là: image.png Active file config:

$ sudo ln -s /etc/nginx/sites-available/nodeApp /etc/nginx/sites-enabled

Restart nginx:

$ sudo systemctl restart nginx

V. Kết quả

Nếu tất cả 4 bước trên đều thành công, khi truy cập vào địa chỉ IP public của máy chủ bằng trình duyệt sẽ hiện ra thông tin: image.png


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí