Hướng dẫn setup môi trường Node.js trên VPS

Mục lục
Mục lục
Tại sao lại cần sử dụng server?
Như ở bài viết trước, có rất nhiều vấn đề khi sử dụng Vercel free.
- Bạn đang thấy nó rất chậm? VPS
- Bạn muốn tự custom, tự control phần code của bạn trên server? VPS
- Bạn đang muốn tìm hiểu về thao tác trên server đơn giản? VPS
- Còn nhiều lý do khác nữa, nhưng đại loại là một giải pháp rất hữu ích cho bạn: VPS
Trong khuôn khổ bài viết này, mình sẽ sử dụng server Ubuntu nha!
Có những gì ở bài viết này?
- Lựa chọn server nào cho hợp lý?
- Lựa chọn server ở đâu cho hợp lý? (Mình không có quảng cáo…)
- Sử dụng chúng như nào, kết nối như nào?
- Cài đặt Node.js với NVM, Bun.js.
- Config SSH key trên github/gitlab.
- Sử dụng PM2 để start dự án đơn giản.
1. Lựa chọn server nào cho hợp lý?
Lựa chọn server theo mình có 3 tiêu chí mình quan tâm:
- Địa điểm
- Hệ điều hành
- Cấu hình
1. Địa điểm
Tùy thuộc theo độ ưu tiên về mục tiêu sử dụng, ví dụ như trang blog này tập trung vào user Việt Nam, ngôn ngữ Việt Nam, user nước ngoài đọc cũng chả hiểu.
Cũng tùy để làm gì, mình có triển khai 1 dự án nó chặn location Châu Á, nên mình dùng giải pháp dùng server US cho lẹ.
Nói chung là vậy nha: Tùy thuộc theo độ ưu tiên về mục tiêu sử dụng
2. Hệ điều hành
Cũng tùy hệ điều hành để lựa chọn, tuy nhiên trong khuôn khổ bài viết, mình sẽ chọn Ubuntu server v22 để sử dụng vì nó đang phổ biến nhất, và cũng nhiều cộng đồng lớn, nhiều công cụ hỗ trợ!
Nói chung là: Mình sẽ lựa chọn Ubuntu OS
3. Cấu hình
Nếu dự án chúng ta ít, mà cũng ít user, thì chỉ cần 1 server khoảng 2vCPU và 2GB Ram là đủ run rồi!
Còn nếu nhiều hơn thì có thể mở rộng 2 chiều, nhưng trong khuôn khổ bài viết hướng tới, thì tạm thời coi như chúng ta có 1 server nhoa :v
2. Lựa chọn server ở đâu cho hợp lý?
Ở Việt nam
Ở Việt Nam thì có Bitfly cloud với mức giá trung bình, Thuê VPS Giá rẻ với mức giá như tên, còn nếu muốn xịn xò con bò thì có thể sử dụng CMC Cloud
Ở Việt Nam hiện mình vẫn đang dùng của Bitfly cloud vì mình dùng quen rui :v
- Bitfly cloud có free trải nghiệm 3 ngày đóa!!!
Ở quốc tế
Còn ở nước ngoài(quốc tế) thì có thể sử dụng EC2 với nhiều sự lựa chọn và nhiều địa điểm, hoặc Cotabo như một giải pháp rẻ hơn.
Nói gì thì nói, mình vẫn ưng bên Digital Ocean mỗi tội hơi đắt xíu :(
- Digital Ocean có free trải nghiệm 2 tháng lận đóaaaa!!!
3. Sử dụng chúng như nào, kết nối như nào?
Đầu tiên, sau khi đăng ký và trả tiền, chúng ta sẽ được cung cấp một tài khoản, thường là tài khoản root và một số thông tin đi kèm.
- Ví dụ:
Tên server: ten-server
Tên đăng nhập: username-server
Mật khẩu: password-server
WAN Address: ip.cua.ser.ver
Sau đó, chúng ta sẽ thực hiện SSH vào server của chúng ta với công thức sau:
ssh [email protected]
# Sau đó nhập mật khẩu
Ố kề, sau khi đăng nhập xong thì là coi như ổn rồi, sợ mỗi không đăng nhập được thoiii.
Sau đó hãy chạy lệnh này trước khi làm gì đó nhé!
sudo apt update && sudo apt-get update
4. Cài đặt Node.js với NVM, Bun.js
Cài đặt NVM và Node.js
Như tiêu đề bài viết, giờ chúng ta cần cài đặt NVM sau đó cài phiên bản Node.js cần thiết.
Đầu tiên, chúng ta cần cài đặt script một chút, nhanh thôi:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
Sau khi chạy xong, nó có một phần script chúng ta cần phải viết. Vậy nên chúng ta hãy viết nó và bấm Enter:
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
Okela, sau khi export
xong, chúng ta có thể sử dụng nvm
rồi. Mình sẽ cài đặt bản Node.js v20!
nvm install 20
Sau đó, chúng ta có thể thử xem node
và npm
đã được cài đặt chưa với cách check version:
node -v
npm -v
Nếu chưa hoặc không hiện phiên bản, thì hãy thử nvm use
sau đó thử lại check version lại nhóe!
nvm use 20
Cài đặt Bun.js
Sau đó, nếu muốn cài đặt Bun.js, chúng ta có thể sử dụng một vài option dưới đây:
1. Cách nhanh nhất:
npm i -g bun
2. Cách được để ở trang chủ của Bun.js:
Để sử dụng cách này, chúng ta cần cài package unzip
trong server trước:
sudo apt install unzip
Sau đó có thể cài như sau:
curl -fsSL https://bun.sh/install | bash
Sau đó hãy chạy đoạn dưới đây hoặc thoát ssh server vào lại:
source ~/.bashrc
5. Config SSH key trên github/gitlab
Nếu đây là server của chúng ta, hãy cài đặt ssh key vào và sử dụng git cho dễ dàng, đỡ phải đăng nhập lại nhiều lần.
Hãy chạy đoạn sau, với tiêu đề của ssh key là email của bạn.
ssh-keygen -t ed25519 -C "email của bạn"
Hãy lấy publish key và copy nó:
cat ~/.ssh/id_ed25519.pub
Sau đó truy cập vào nơi chúng ta sử dụng (github/gitlab) và add key publish vào:
- Với github, truy cập ở đây.
- Với gitlab, truy cập ở đây.
- Với gitlab của công ty, nó sẽ dạng như này:
https://gitlab.cua.congty.ban/-/profile/keys
.
6. Sử dụng PM2 để start dự án đơn giản
Clone dự án và chạy thử
Sau khi cài đặt npm
, chúng ta cần cài đặt thêm git
.
sudo apt install git
Sau đó git clone
một dự án Node.js nào đó của bạn về. Rồi hãy chạy một vài lệnh cơ bản:
bun i
bun run build # Nếu cần
bun start # hoặc script nào đó để start bản production
Cài đặt PM2
Sau khi chạy được và ổn thỏa, hãy cài đặt pm2
và sử dụng nó để start dự án. Nó sẽ giúp chúng ta nhiều thứ như:
- Theo dõi tiến trình chạy.
- Check log, check lỗi dự án.
- Khi lỗi sẽ tự động chạy lại.
- Theo dõi trên trang web nếu connect.
- Config nhiều thứ khác nâng cao hơn.
Oke, cài đặt thôi:
npm install -g pm2
Sau khi cài đặt xong, hãy thử sử dụng nó:
pm2
Và nó sẽ hiện một đống thứ. Oke vậy là được.
Sử dụng PM2 để start dự án
Giờ quay lại dự án của bạn, mình sẽ coi như chúng ta sử dụng bun start
để start bản production. Hãy sử dụng PM2 làm điều đó:
pm2 start --name="ten-du-an" "bun start"
Với pm2 start
là lệnh start, với --name="ten-du-an"
hãy thay tên dự án đó vào. Cuối cùng là lệnh start để trong 2 dấu ""
.
Sau khi chạy lên, các bạn hãy thử check list pm2 để xem có lỗi gì không:
pm2 l
Nếu có lỗi, hãy thử:
pm2 log ten-du-an
Với pm2 log
để xem log, ten-du-an
hoặc id của dự án trong bản sau khi list ra để xem chỉ một dự án start.
Sau đó, nếu muốn xem rõ ràng hơn, chúng ta có thể truy cập vào pm2.io, đăng nhập, đăng ký,…
Sau đó tìm đoạn pm2 link some-thing some-thing
, hãy copy nó và chạy trên server. Sau đó quay lại trang web đợi một lúc.
Nếu hiện thị các app đang chạy là được nhaaa <3
Cảm ơn các bạn đã đọc
Đáng ra mình có thêm một ít cơ, nhưng thoi, dài quá mỏi tay, để mình nghỉ chút rồi viết bài sau nha. Bài sau sẽ có một số thứ sau:
- Cài đặt Redis nếu cần.
- Config Caddy web server proxy.
- Các câu lệnh hay sử dụng cơ bản.
Sau đó sẽ có thêm một số phần như:
- Hướng dẫn cài đặt Postgresql trên server Ubuntu
- Hướng dẫn deploy một dự án React/Next.js/Express.js/Nest.js/…
- Blabla, chia sẻ đời tư linh tinh chẳng hạn.
Vậy nhaaa, cảm ơn các bạn đã đọc aaaaaa <3