Hướng dẫn Deploy website NodeJS lên VPS

Khi hoàn thành một project thì công việc cuối cùng và quan trọng nhất chính là deploy(đại loại như là triển khai lên môi trường thực tế). Với những project mang tính chất học tập thì bạn có thể deploy lên các server miễn phí(như Heroku). Tuy nhiên vì miễn phí nên nó tồn tại nhiều vấn đề. Chính vì vậy hôm nay mình sẽ hướng dẫn các bạn cách deploy một project NodeJS lên VPS.7 min


1045
1.4k shares, 1045 points

Tạo project NodeJS

Terminal là cửa sổ lệnh để bạn có thể tương tác với máy tính, có 2 cách để bật terminal trên windows và tạo project NodeJS:

Gõ “cmd” và nhấn enter trên đường dẫn.

nodejs

Cài gitbash vào máy, nhấp chuột phải và chọn gitbash

nodejs

Chạy npm init

npm init

Đây là bước khởi tạo project NodeJS, Bạn có thể bấm enter để next liên tục mà không điền gì cả để tạo project mới.

Cài thư viện

Trong project đơn giản này, chúng ta cần đến thư viện ExpressJS của NodeJS. Chúng ta cài ExpressJS bằng lệnh

npm install express –save

Setup file app.js

Sau khi cài ExpressJS , bạn có thể tạo một file app.js với cấu trúc như sau:

const express = require('express');
const app = express();
const port = 8080;
app.use(express.static(__dirname + '/public'));
app.get('/', (req, res) => {
    return res.render('index');
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));

Ở đây bạn có thể thấy, khi user request web service của chúng ta chạy ở PORT 8080, chúng ta vào thư mục public và render file index.html ra.

File app.js và cấu trúc folder bạn có thể tham khảo tại link sau https://github.com/concalahan/simple-nodejs-web-service/blob/master/app.js

Chạy nodejs

Vào terminal và dùng lệnh để chạy dự án NodeJS của chúng ta:

node app.js

Mở browser

Điền localhost:8080 vào browser và bạn sẽ thấy webservice đã hoàn thành nhiệm vụ render file html.

project nodejs chay o port 8080

Deploy/ triển khai web service lên VPS

Sau khi tạo một project nodejs, chúng ta cần đưa nó chạy thật trên web, quá trình này gọi là deploy.

Deploy/ deployment là gì?

Deploy theo tiếng Việt nghĩa là triển khai phần mềm. Phần mềm ở đây là web server/ web service mà chúng ta đã code. Hiểu đơn giản, deploy là tất cả các hoạt động làm cho một hệ thống phần mềm có sẵn để sử dụng.

Deploy bạn cần chuẩn bị những gì

  1. Một con VPS: giá theo tháng tầm 5$-7$ (tầm 100k đến 150k) tùy theo nhà cung cấp. Hiện tại mình đang sử dụng dịch vụ của Digital Ocean với mức giá 5$/ tháng. Hệ điều hành mình thường tạo cho VPS là Ubuntu.
  2. Phần mềm kết nối với VPS hoặc terminal: Trên hệ điều hành windows, bạn có thể sử dụng những trình giả lập thiết bị đầu cuối cho phép kết nối như Putty. Hoặc nếu bạn cài hệ điều hành Linux-based như Ubuntu, bạn có thể sử dụng terminal để kết nối.
  3. Một phần mềm quản lý mã nguồn phân tán như git, và một dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa trên nền web – như github.
  4. Source chạy của bạn: Hiện tại mình sẽ sử dụng source https://github.com/concalahan/simple-nodejs-web-service

Các bước thực hiện

Kết nối với VPS

Khi mua VPS, nhà cung cấp VPS sẽ gửi cho bạn một địa chỉ IP. Địa chỉ IP được viết bằng ký hiệu thập phân cách nhau bởi dấu . , là 4 bộ số được phân tách bằng dấu chấm, mỗi bộ đại diện cho số 8 bit nằm trong khoảng từ (0-255). Một ví dụ về địa chỉ IPv4 là 216.3.128.12,

Sau khi có địa chỉ IP, nhiệm vụ của bạn là dùng phần mềm kết nối VPS để kết nối với VPS, ở đây mình xài putty.

su dung putty

Bạn chỉ cần nhập địa chỉ IP vào ô này, xong bấm connect, sau đó nhập username và password mà nhà cung cấp VPS gửi cho bạn, vậy là bạn đã connect thành công.

Upload source code lên VPS dùng github

Có nhiều cách để upload source code NodeJS của bạn lên VPS, ở đây mình sẽ hướng dẫn một trong những cách đó, dùng github.

Tạo public key trên VPS

Bước đầu bạn phải làm cho VPS hiểu source của bạn đang ở github và ngược lại. Để làm được việc này, mình cần thêm public key của VPS vào deploy key của project trên github.

Vì mình xài VPS chạy Ubuntu, nên dùng lệnh sau để tạo public key:

ssh-keygen

Sau đó nhấp enter liên tục, khi thấy đoạn code như sau nghĩa là bạn đã tạo public key thành công rồi.

tao public key ubuntu

Tìm public key trên VPS

Sau khi tạo public key, bạn tìm public key bằng lệnh:

cat ~/.ssh/id_rsa.pub

hoặc lệnh

cat ~/.ssh/id_dsa.pub

Nếu bạn làm đúng, nó sẽ hiển thị như hình (hình bị cắt vì lý do bảo mật):

hien thi public key

Add public key vào github

Sau khi có public key, bạn add vào deploy key bên github, tại settings → deploy keys → Add deploy key. Ở mục title, bạn đặt tên của public key, và copy public key vào mục key như hình.

add public key vao github

Đừng quên bấm “add key” bạn nhé.

Clone project từ VPS

Sau khi add xong public key vào github, bạn tiến hành “download”/ clone project bằng SSH từ VPS bằng lệnh:

git clone git@github.com :concalahan/simple-nodejs-web-service.git
clone bang ssh

Nhớ đổi url thành url project của bạn.

Cài thư viện

Ở bước này, bạn cài npm và node để chạy web service của chúng ta trên web.

Tham khảo: Cài đặt NodeJS chi tiết trên Window và Ubuntu

Cài biến môi trường (environment variable)

Vì lý do bảo mật, có một số biến bạn cần phải dấu ở môi trường deploy, ví dụ như nếu bạn kết nối database bằng url, thì đoạn url kết nối database bạn cần trong VPS, cụ thể là trong file environment của VPS.

Để thực hiện việc đó, bạn cần write biến vào file đó bằng lệnh:

sudo -H gedit /etc/environment

Bạn có thể thay gedit bằng nano hoặc vi đều được. Ví dụ bạn muốn thêm biến NODE_ENV có gía trị là prod, bạn cần làm như sau:

NODE_ENV='prod'

Chạy web server/ web service dùng pm2

PM2 là trình quản lý quy trình Node.js (process manager production Nodejs application).

Khi chạy chương trình bằng node app.js (app.js là file main của source mình), khi bạn tắt terminal/ putty thì web server/ web service của bạn cũng “đóng”. Để giữ cho web server/ web service của bạn luôn chạy, chúng ta cần dùng pm2.

Để cài pm2, bạn dùng lệnh

npm install pm2@latest -g

Sau đó, bạn cần cd vào thư mục chứa file chạy của dự án, ở dự án Nodejs của mình, đó là file app.js, sau đó chạy:

pm2 start app.js

Để xem những project bạn đã chạy bằng pm2, bạn có thể dùng lệnh:

pm2 list

Nếu hiển thị hình như sau nghĩa là bạn đã làm thành công.

pm2 huong dan

Sau khi chạy pm2, bạn hoàn toàn có thể vào trang web của mình tại địa chỉ theo cú pháp: [địa chỉ IP]:[port]

Ở ví dụ của mình: port là 8080

Kết nối domain vào vps

Sau khi deploy, web của bạn sẽ vẫn ở định dạng IP:port, để gán domain vào host, chúng ta cần một tên miền, và quyền chỉnh sửa DNS của tên miền đó.

Kết luận

Qua bài viết, bạn đã có thể deploy project NodeJS lên VPS. Và trang web của bạn đã được ra thế giới.

Tham khảo Github : Cách lưu trữ app React với Github miễn phí


Like it? Share with your friends!

1045
1.4k shares, 1045 points

What's Your Reaction?

hate hate
2
hate
confused confused
5
confused
fail fail
3
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
3
love
lol lol
2
lol
omg omg
3
omg
win win
5
win

0 Comments

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *