Deploy ứng dụng Next.js
Giả sử bạn có 1 ứng dụng Next.js muốn deploy dưới domain app.domain.com
Yêu cầu
- Máy chủ đã kết nối với FlashPanel
- DNS domain đã trỏ về máy chủ
Bước 1: Cài đặt ứng dụng cần thiết
Đảm bảo NodeJS và PM2 được cài đặt trên máy chủ. Xem hướng dẫn cài đặt ứng dụng tại Quản lý ứng dụng.
WARNING
Nếu bạn sử dụng pnpm hoặc yarn làm package manager, hãy cài đặt ứng dụng tương ứng qua trang Quản lý ứng dụng.
Bước 2: Tạo trang web
- Vào trang quản lý máy chủ, nhấp vào menu Sites ở thanh bên, sau đó nhấp nút Create Website
- Nhập domain (ví dụ:
app.domain.com) - Nhập Proxy Port — port mà ứng dụng Next.js của bạn chạy (mặc định là
3000)
Bước 3: Cài đặt mã nguồn
Cài đặt mã nguồn cho trang web từ git hoặc tự tải lên. Xem hướng dẫn chi tiết tại Cài đặt mã nguồn. Để truy cập, vào trang quản lý trang web và nhấp vào menu Source Code ở thanh bên.
Bước 4: Build ứng dụng
Mở terminal máy chủ (qua SSH hoặc tính năng terminal) và di chuyển đến thư mục website để cài đặt dependencies và build ứng dụng:
cd /home/flashpanel/app.domain.com
# Cài đặt dependencies
npm install
# Build ứng dụng production
npm run buildTIP
Thay app.domain.com bằng domain thực tế của bạn.
Bước 5: Khởi chạy ứng dụng
Cách A: Sử dụng PM2 Dashboard (Khuyến nghị)
Nếu đã cài đặt ứng dụng PM2, bạn có thể sử dụng PM2 Dashboard trên trang quản lý máy chủ:
- Nhấp vào nút Add New
- Nhập command:
npm start --name my-nextjs-app -- -p 3000 - Nhấn Start
Cách B: Sử dụng SSH
Bạn cũng có thể khởi chạy ứng dụng thủ công qua SSH:
cd /home/flashpanel/app.domain.com
pm2 start npm --name my-nextjs-app -- start -- -p 3000WARNING
Đảm bảo port (3000) khớp với Proxy Port bạn đã cấu hình khi tạo trang web.
Lưu danh sách process PM2
Để ứng dụng tự động khởi động lại sau khi server reboot:
pm2 saveBước 6: Thiết lập Deployment Script (Tùy chọn)
Để tự động hóa các lần deploy sau, bạn có thể cấu hình Deployment Script cho trang web. Một deployment script Next.js điển hình:
cd /home/flashpanel/app.domain.com
git pull origin main
npm install
npm run build
pm2 restart my-nextjs-appCập nhật ứng dụng
Khi push code mới, bạn cần rebuild và restart:
- Nếu đã cấu hình Deployment Script, chỉ cần nhấp Deploy trong trang quản lý trang web
- Nếu sử dụng PM2 Dashboard, rebuild thủ công rồi nhấp nút Restart tương ứng với process của bạn
- Hoặc chạy qua SSH:
cd /home/flashpanel/app.domain.com
git pull origin main
npm install
npm run build
pm2 restart my-nextjs-appBiến môi trường
Next.js sử dụng file .env để cấu hình biến môi trường. Tạo hoặc chỉnh sửa file .env trong thư mục website:
cd /home/flashpanel/app.domain.com
nano .envThêm các biến môi trường:
DATABASE_URL=mysql://user:password@localhost:3306/mydb
NEXT_PUBLIC_API_URL=https://api.domain.com
NODE_ENV=productionWARNING
Sau khi thay đổi biến môi trường, bạn cần rebuild (npm run build) và restart ứng dụng để thay đổi có hiệu lực. Các biến có tiền tố NEXT_PUBLIC_ được nhúng vào lúc build.
Xử lý sự cố
Ứng dụng không khởi chạy được
- Kiểm tra logs PM2: sử dụng nút View Log trong PM2 Dashboard, hoặc chạy
pm2 logs my-nextjs-app - Xác minh build thành công:
npm run build - Kiểm tra port đã bị sử dụng chưa:
sudo lsof -i :3000
Lỗi 502 Bad Gateway
- Xác minh ứng dụng đang chạy: kiểm tra PM2 Dashboard hoặc chạy
pm2 status - Đảm bảo port ứng dụng khớp với Proxy Port đã cấu hình cho trang web
- Kiểm tra logs ứng dụng để xem lỗi khởi động