Đầ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ùngnpm 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
- Push thay đổi code lên Github/Gitlab
- SSH vào Vultr Server thông qua terminal với username đã tạo
- cd vào folder dự án trên vps
- pull code về bằng câu lệnh
git pull
- Cài đặt lại các package
yarn
- Build Next.Js với
yarn build
- Restart lại tiến trình PM2 với
pm2 restart website
(thaywebsite
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