Để triển khai Next.js lên VPS và cấu hình tên miền để website hoạt động với PM2 (ok)
✅ Quy trình chuẩn để cập nhật source bằng git pull
và build lại:
git pull
và build lại:# 1. Dừng ứng dụng
pm2 stop my-next-app
# 2. Cập nhật source code
git pull origin main # Hoặc nhánh khác nếu dùng
# 3. Cài lại các package (nếu cần)
npm install
# 4. Build lại project Next.js
npm run build
# 5. Chạy lại ứng dụng
pm2 start my-next-app
# 6. Kiểm tra lại PM2
pm2 list
Ban đầu Chạy ứng dụng Next.js với PM2
pm2 start npm --name "my-next-app" -- start
pm2 list in vps
Delete id?
When you run pm2 list
on your VPS, you'll see a table of your running applications, each with an id
. To delete a process by its ID, you use the pm2 delete
command.
Here's how to do it:
List your processes to find the ID:
Bash
pm2 list
This will show you something like:
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬───────────┬─────────┬───────────┬──────────┬──────────┬──────────┐ │ id │ name │ mode │ ↺ │ status │ cpu │ memory │ unique │ │ pid │ uptime │ ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼───────────┼─────────┼───────────┼──────────┼──────────┼──────────┤ │ 0 │ my-app │ fork │ 0 │ online │ 0% │ 25.1MB │ │ 12345 │ 1h │ │ 1 │ another-app │ cluster │ 0 │ online │ 0% │ 30.5MB │ │ 67890 │ 2h │ └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴───────────┴─────────┴───────────┴──────────┴──────────┴──────────┘
In this example,
my-app
has anid
of0
andanother-app
has anid
of1
.Delete the process by its ID:
Bash
pm2 delete <id>
Replace
<id>
with the actual ID of the process you want to delete. For example, to deletemy-app
:Bash
pm2 delete 0
To delete all processes:
Bash
pm2 delete all
Important Notes:
pm2 delete
will both stop the process and remove it from PM2's process list.If you want the changes (deletions) to persist across server reboots, you should run
pm2 save
after deleting processes:Bashpm2 save
This saves the current PM2 process list so that PM2 will automatically restart only the saved applications when the server reboots.
If you're having issues with a deleted process still running after a reboot, you might need to clear PM2's dump file:Bash
pm2 cleardump
Then, run
pm2 save
again.
✅ 1. Chuẩn bị trước khi triển khai
Trên máy cục bộ (local):
Bạn đã có dự án Next.js hoàn chỉnh (
next build
không lỗi).Dự án có thể chạy ở chế độ production (
npm run build
vànpm start
hoặcnext start
).
Trên VPS:
Đã có VPS hoạt động (Ubuntu/CentOS...)
Có quyền root hoặc sudo
Đã trỏ tên miền về địa chỉ IP của VPS (qua A record trong DNS).
VPS đã cài Node.js, npm/yarn, và PM2 hoặc Docker nếu cần.
✅ 2. Copy mã nguồn lên VPS
Cách phổ biến:
Sử dụng
scp
,rsync
hoặcgit clone
từ repo Git của bạn.
Ví dụ với scp
:
scp -r ./my-next-app user@your-vps-ip:/home/user/
✅ 3. Cài đặt môi trường trên VPS
sudo apt update
sudo apt install nodejs npm
npm install -g pm2
Lưu ý: Nếu dùng nvm
thì cài Node.js qua nvm install <version>
✅ 4. Cài đặt và build Next.js trên VPS
cd /home/user/my-next-app
npm install
npm run build
✅ 5. Chạy ứng dụng Next.js với PM2
pm2 start npm --name "my-next-app" -- start
pm2 save
pm2 startup
Ứng dụng sẽ chạy trên cổng mặc định 3000 (http://your-vps-ip:3000
).
✅ 6. Cấu hình Reverse Proxy với Nginx để trỏ từ tên miền
6.1 Cài đặt Nginx
sudo apt install nginx
6.2 Tạo file cấu hình domain
sudo nano /etc/nginx/sites-available/mydomain.com
Nội dung file:
nginxCopyEditserver {
listen 80;
server_name mydomain.com www.mydomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
6.3 Kích hoạt cấu hình
sudo ln -s /etc/nginx/sites-available/mydomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
✅ 7. (Tuỳ chọn) Cài HTTPS với Let’s Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d mydomain.com -d www.mydomain.com
✅ 8. Kiểm tra kết quả
Mở trình duyệt và truy cập:
http://mydomain.com
hoặchttps://mydomain.com
Nếu bạn thấy ứng dụng Next.js chạy, bạn đã hoàn tất.
Nếu bạn cần hướng dẫn theo từng bước cho cấu hình cụ thể (ví dụ: CentOS, dùng Docker, hay CI/CD), cứ nói nhé!
4o
You said:
Gỡ bỏ docker sạch khỏi vps
ChatGPT said:
Để gỡ bỏ Docker hoàn toàn và sạch sẽ khỏi VPS (Ubuntu/Debian/CentOS), bạn có thể làm theo các bước sau. Hướng dẫn bên dưới áp dụng cho Ubuntu/Debian và có lưu ý cho CentOS.
✅ 1. Gỡ bỏ các gói Docker
Ubuntu/Debian:
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli containerd runc
CentOS/RHEL:
sudo yum remove -y docker-engine docker docker.io docker-ce docker-ce-cli containerd runc
✅ 2. Xóa các file cấu hình, dữ liệu và container
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
✅ 3. Xóa Docker CLI và thư viện liên quan nếu còn
sudo rm /usr/local/bin/docker
sudo rm /usr/local/bin/docker-compose
sudo rm -rf /etc/docker
✅ 4. Xoá service Docker khỏi hệ thống (nếu còn)
sudo systemctl stop docker
sudo systemctl disable docker
sudo systemctl daemon-reexec
✅ 5. Xóa file service nếu cần
sudo rm /etc/systemd/system/docker.service
sudo rm /etc/systemd/system/docker.socket
sudo systemctl daemon-reload
✅ 6. Xoá user group docker nếu muốn
sudo groupdel docker
✅ 7. Kiểm tra Docker đã bị xoá chưa
which docker
docker --version
Nếu không có output, nghĩa là Docker đã được gỡ bỏ hoàn toàn.
Nếu bạn cũng đang sử dụng Docker Compose, có thể gỡ bỏ bằng:
sudo rm /usr/local/bin/docker-compose
Nếu bạn gặp lỗi khi xóa hoặc Docker không cài từ apt/yum mà qua script, mình có thể hỗ trợ cụ thể hơn nếu bạn chia sẻ thêm cách cài đặt ban đầu.
You said:
dừng chạy PM2 để tôi git pull source và xây dựng lại
ChatGPT said:
Để dừng ứng dụng đang chạy bằng PM2, thực hiện lệnh sau:
pm2 stop <app_name_or_id>
Nếu bạn không nhớ tên app, dùng:
pm2 list
Ví dụ nếu app của bạn tên là my-next-app
:
pm2 stop my-next-app
✅ Quy trình chuẩn để cập nhật source bằng git pull
và build lại:
git pull
và build lại:# 1. Dừng ứng dụng
pm2 stop my-next-app
# 2. Cập nhật source code
git pull origin main # Hoặc nhánh khác nếu dùng
# 3. Cài lại các package (nếu cần)
npm install
# 4. Build lại project Next.js
npm run build
# 5. Chạy lại ứng dụng
pm2 start my-next-app
# 6. Kiểm tra lại PM2
pm2 list
Nếu bạn dùng lệnh
pm2 start npm --name "my-next-app" -- start
, thì bạn phải stop bằng tên"my-next-app"
chứ không phảinpm
.
Gợi ý: Nếu bạn hay cập nhật bằng git pull
, có thể dùng script bash hoặc pm2 reload
để tự động hoá việc này. Mình có thể giúp viết nếu cần.
4o
Last updated
Was this helpful?