FreeShare

Deploy website Next.Js hoặc Node.Js lên server

Chủ nhật, 18/02/2024
image
Đầu tiên cần cd vào đúng đường dẫn vừa clone về BASHCopy cd tenRepo Cài yarn và pm2 global Nếu dự án anh em không dùng yarn thì không cần cài cũng được PM2 là một thư viện giúp quản lý tiến trình cho các ứng dụng Node.Js. Nó giúp ứng dụng

Đầu tiên cần cd vào đúng đường dẫn vừa clone về

BASHCopy

cd tenRepo

Cài yarn và pm2 global

Nếu dự án anh em không dùng yarn thì không cần cài cũng được

PM2 là một thư viện giúp quản lý tiến trình cho các ứng dụng Node.Js. Nó giúp ứng dụng Node.Js của anh em hoạt động mãi mãi, cho dù có reboot lại VPS thì nó sẽ mở lên lại ngay.

BASHCopy

npm install yarn -gnpm install pm2 -g

Tiến hành cài đặt các package dự án

BASHCopy

yarn

Nếu ứng dụng Next.Js thì anh em cần build, còn Node.Js thì tùy code anh em có cần build hay không nhé

Với Next.Js thì ta cần build dự án

BASHCopy

yarn build

Tiếp theo chạy dự án Next.Js hoặc Node.Js lên coi thử có lỗi gì không

BASHCopy

yarn start

Lúc này nếu không lỗi thì anh em có thể truy cập đến website (hoặc API) của anh em qua địa chỉ IP và port rồi

Ví dụ IP của VPS mình là 45.12.123.123 và port Next.js mình là 3000 thì mình chỉ cần mở trình duyệt lên nhập URL 45.12.123.123:3000 vào là thấy

Chạy ổn rồi thì anh em tắt App đi nhé, nhấn Ctrl + C để tắt tiến trình

Bây giờ chúng ta sẽ tiến hành chạy Next.js với PM2, anh em phải chắc chắn rằng đã ở trong đường dẫn của app rồi nhé

Chạy câu lệnh bên dưới

  • Thay thế website thành tên website của anh em
  • Vì câu lệnh run app mình là yarn start nên mình để là yarn -- start, ví dụ nếu anh em dùng npm deploy thì sửa lại là npm -- deploy

BASHCopy

pm2 start --name=website yarn -- start

Câu lệnh này sẽ khởi chạy ứng dụng Next.Js của anh em, sau đó hiển thị một cái bảng với name, process ID, status, CPU sử dụng,...

PM2 sẽ tự động restart nếu ứng dụng bị crash hoặc bị ngưng. Để làm được điều này thì anh em cần chạy câu lệnh dưới

BASHCopy

pm2 startup systemd

Nó sẽ in ra kết quả tương tự như dưới đây

BASHCopy

[PM2] Init System found: systemd[PM2] You have to run this command as root. Execute the following command:sudo env <em>PATH</em>=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u duoc --hp /home

Anh em cần copy cái dòng cuối cùng và chạy với quyền hạn superuser, như vậy thì PM2 luôn luôn start mỗi khi server khởi động

Câu lệnh của bạn thì tương tự dưới đây

BASHCopy

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u duoc --hp /home

Cái này sẽ tạo một đơn vị systemd giúp PM2 chạy trên user của bạn mỗi khi khởi động. Để kiểm tra trạng thái của đơn vị systemd mới tạo, sử dụng câu lệnh dưới.

Thay thế duoc thành username của anh em.

BASHCopy

systemctl status pm2

Bây giờ thì web app Next.Js của anh em đã chạy trên port 3000 mãi mãi (nếu anh em để mặc định), cho đến khi nói PM2 ngừng

Để xem các tiến trình đang chạy trên PM2 thì gõ pm2 ls

Trong tương lai, nếu có update code. Tất cả những gì anh em cần làm là thực hiện theo các bước dưới đây

  1. Push thay đổi code lên Github/Gitlab
  2. SSH vào Vultr Server thông qua terminal với username đã tạo
  3. cd vào folder dự án trên vps
  4. pull code về bằng câu lệnh git pull
  5. Cài đặt lại các package yarn
  6. Build Next.Js với yarn build
  7. Restart lại tiến trình PM2 với pm2 restart website (thay website thành tên website mà anh em đã tạo ở trên kia)

? Câu lệnh redeploy rút gọn của mình khi login vào vps đúng với username là

BASHCopy

cd Portfolio && git pull && yarn build && pm2 restart portfolio

Chỉ cần chạy 1 câu lệnh đó thôi là nó tự làm hết mọi thứ luôn