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ủ:
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. 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. 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. 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
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à: 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: