Xin chào các bạn!

Hôm nay mình sẽ hướng dẫn các bạn deploy một dự án NodeJS lên VPS Ubuntu.

Node.js là một môi trường chạy JavaScript nguồn mở giúp bạn có thể dễ dàng xây dựng các ứng dụng server-side và networking. Nền tảng này chạy trên Linux, OS X, FreeBSD và Windows. Bằng cách tận dụng JavaScript trên cả frontend và backend, Node.js làm cho sự phát triển trở nên nhất quán và nhanh hơn.

Các ứng dụng Node.js có thể được chạy ở dòng lệnh, nhưng chúng ta sẽ tập trung vào việc chạy chúng như một dịch vụ, do đó chúng sẽ tự động restart lại khi reboot hoặc khi gặp sự cố, và các ứng dụng này có thể được sử dụng một cách an toàn trong môi trường production.

Trong hướng dẫn này, chúng ta sẽ thiết lập môi trường production trên một server Ubuntu 20.10. Server này sẽ chạy ứng dựng NodeJS được quản lý bởi PM2, và cung cấp cho người dùng truy cập bảo mật tới ứng dụng thông qua một Nginx reverse proxy.

Truy cập vào server bằng lệnh với cú pháp ssh username@ip address, trong đó username là tài khoản của bạn, ví dụ là root, ip address là địa chỉ ip của server. Ví dụ ssh root@65.14.225.112. Sau khi truy cập vào nó sẽ bắt bạn nhập password, sau khi nhập password xong sẽ vào được thư mục root của VPS.

Dĩ nhiên rồi, đầu tiên chúng ta phải cài NodeJS và npm.

Chúng ta chạy câu lệnh sau:

sudo apt get update
curl -sL https://deb.nodesource.com/setup_10.x | sudo - apt-get nodejs
sudo apt get install npm

Sau khi chạy xong các câu lệnh trên, chúng ta kiểm tra đã cài đặt thành công chưa bằng câu lệnh

node -v
npm -v

Nếu hiển thị ra phiên bản hiện tại đang dùng thì các bạn đã cài thành công.

Ở bài này, mình không hướng dẫn các bạn cài web server Nginx hay Apache, ở bài khác mình sẽ có bài viết chi tiết về cách cài đặt nginx hay apache sau nhé.

Ok, tiếp theo chúng ta phải add ssh keygen vào gitlab. Nếu các bạn chưa biết gitlab là gì thì tự lên mạng tìm hiểu, hoặc nếu có thời gian ở loạt series khác mình sẽ giới thiệu về nó nhé.

Các bạn chạy lệnh sau:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

các bạn cứ enter nhiệt tình, không cần chỉnh sửa gì cả, sau khi xong thì các bạn phải xuất nội dung của public key ra terminal để copy bằng lệnh cat ~/.ssh/id_rsa.pub.

Sau đó copy chuỗi đó và truy cập vào gitlab => vào repository nodejs của các bạn, kéo xuống dưới bạn sẽ thấy bên trái có phần Setting, sau đó vào Repository, tiếp theo các bạn chọn vào Deploy Key, và paste chuỗi key đó vào inut Key, sau đó click vào Add Key để save lại.

Tiếp theo sẽ về vps chúng ta để tạo 1 folder để clone repository trên gitlab về. Chạy câu lệnh sudo mkdir -p /app/my-node-app tại root.

Để cho chắc chắn tại thư mục root thì các bạn chạy cd ~ trước khi chạy câu lệnh tạo folder ở trên.

Sau đó chúng ta clone source trên gitlab của chúng ta vào trong folder my-node-app vừa tạo. git clone git@gitlab.com:newnet/modules/comment-socket.git /app/my-node-app, nhớ là clone với ssh.

Nếu gặp gỗi permission thì các bạn xem lại ở bước add ssh key. Sau khi clone về thì chúng ta cd vào thư mục chứa source, chúng ta chạy npm install để cài các dependencies của ứng dụng.

Sau khi cài xong các dependencies thì chúng ta có thể chạy node index.js (giả sử index.js là file start) để check xem thế nào.

Nếu không báo lỗi gì thì là cơ bản chúng ta đã xong.

Sau khi chạy node server.js lên không báo lỗi gì, các bạn ra trình duyệt gõ theo cú pháp ip_address:port (ví dụ 65.14.225.112:3000). Nếu bạn ngắt terminal thì nó sẽ không chạy đâu, do đúng chúng ta cần phải cài pm2 để quản lý tiến trình trong Nodejs.

Các bạn chạy npm install pm2@latest -g để cài ở chế độ global. Sau khi cài xong thì tiếp tục chúng ta vào thư mục chứa source tại /app/my-node-app chạy lệnh pm2 start index.js Sau khi chạy xong thì bạn sẽ thấy thế này.

Ok, như vậy là chúng ta đã deploy xong ứng dụng NodeJS lên VPS ubuntu, nếu gặp lỗi gì thì các bạn comment ở dưới để mình có thể support nhé.

Chúc các bạn thành công !!!