1. 准备服务器(ECS) 环境
首先,确保你的 CentOS 7.6 虚拟机已经安装了以下软件:
- Node.js(建议使用 LTS 版本)
- Nginx
- PM2
如果没有安装,可以通过以下命令安装:
# 安装 Node.js
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs
# 安装 Nginx
sudo yum install epel-release
sudo yum install nginx
# 安装 PM2
sudo npm install -g pm2
2. 上传项目代码
将你的 Next.js 项目代码上传到 ECS 虚拟机。你可以使用 scp 或 rsync 等工具:
scp -r /path/to/your/project user@your-ecs-ip:/var/www/yourproject
3. 安装项目依赖
在项目目录中安装依赖:
cd /var/www/yourproject
npm install
4. 构建项目
运行以下命令构建项目:
npm run build
5. 使用 PM2 启动项目
使用 PM2 启动项目,确保项目在后台运行:
pm2 start npm --name "yourproject" -- start
6. 配置 Nginx
编辑 Nginx 配置文件,添加反向代理配置:
sudo nano /etc/nginx/conf.d/yourproject.conf
添加以下内容:
server {
listen 80;
server_name your-domain.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;
}
location /_next/static {
alias /var/www/yourproject/.next/static;
expires 365d;
access_log off;
}
location /static {
alias /var/www/yourproject/public/static;
expires 365d;
access_log off;
}
}
启用配置文件并重启 Nginx:
sudo nginx -t
sudo systemctl restart nginx
7. 配置防火墙
确保防火墙允许 HTTP 和 HTTPS 流量:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
8. 配置域名解析
在你的域名管理面板中,将域名解析到 ECS 虚拟机的公网 IP 地址。
9. 配置 HTTPS(可选)
使用 Let's Encrypt 配置 HTTPS:
sudo yum install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
10. 验证部署
访问你的域名,确保网站正常运行。
11. 设置 PM2 开机自启动
确保 PM2 在系统重启后自动启动:
pm2 startup
pm2 save
12. 监控和维护
你可以使用 PM2 监控应用状态:
pm2 monit
如果需要更新代码,可以重新上传代码并重启 PM2 进程:
pm2 restart yourproject
以上。