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. Đăng ký Sunteco Cloud!

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

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

I. Bước 1: 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ủ:

  • 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:

 

II. Bước 2: 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:

III. Bước 3: 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:

IV. Bước 4: 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à:

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

V. Bước 5: Kiểm tra

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

$ sudo nginx -t

  • Nếu file cấu hình đúng, output sẽ là:

  • Active file config:

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

  • Restart nginx:

$ sudo systemctl restart nginx

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: