1. 服务器准备
首先,确保你的 Ubuntu 服务器已经安装了 Node.js、npm 或 yarn、Nginx。
更新系统并安装必要的工具sudo apt update && sudo apt upgrade -ysudo apt install curl git -y
sudo apt update && sudo apt upgrade -ysudo apt install curl git -y
安装 Node.js
Next.js 需要 Node.js 运行环境,你可以使用 NodeSource 安装:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs
检查安装版本:
node -vnpm -v
2. 下载和构建 Next.js 应用
你可以从 GitHub 拉取你的 Next.js 代码,或者上传你的项目文件。
git clone https://github.com/your-repo/your-nextjs-app.gitcd your-nextjs-app
然后安装依赖:
npm install # 或者 yarn install
构建 Next.js
Next.js 需要进行 编译和导出:
npm run build
Next.js 提供两种运行方式:
默认的 server 模式(推荐): 使用
next start
运行,需要后台进程管理,如PM2
。静态导出模式: 生成纯静态 HTML,适合静态部署。
3. 使用 PM2 运行 Next.js(推荐)
PM2 是一个进程管理工具,可以让你的 Next.js 应用以守护进程的方式运行。
安装 PM2
npm install -g pm2
启动 Next.js
pm2 start npm --name
"nextjs-app" -- start
设置开机自启
pm2 startup
pm2 save
检查运行状态:
pm2 list
此时 Next.js 运行在默认端口 3000
。
4. 配置 Nginx 作为反向代理
Next.js 默认在 3000
端口运行,我们使用 Nginx 作为反向代理,映射到 80 或 443 端口。
安装 Nginx
sudo apt install nginx -y
配置 Nginx
创建配置文件:
sudo nano /etc/nginx/sites-available/nextjs
添加以下配置:
nginx
server {listen80;server_name your-domain.com;location / {proxy_pass http://127.0.0.1:3000;proxy_http_version1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass$http_upgrade; }}
启用配置
sudo
ln -s /etc/nginx/sites-available/nextjs /etc/nginx/sites-enabled/sudo nginx -t # 检查配置是否正确sudo systemctl restart nginx # 重启 Nginx
5. 配置 HTTPS(可选但推荐)
如果你有域名,建议使用 Let's Encrypt 免费 SSL 证书。
安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
申请 SSL 证书
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
自动更新证书
Let's Encrypt 证书每 3 个月需要更新,可以设置定时任务:
sudo crontab -e
添加:
0 0 * * * certbot renew --quiet
6. 访问你的 Next.js 应用
访问
http://your-domain.com
如果使用 HTTPS,访问
https://your-domain.com
7. 维护和日志管理
查看 PM2 运行状态:
pm2 status
查看日志:
pm2 logs nextjs-app
停止 Next.js:
pm2 stop nextjs-app
重启:
pm2 restart nextjs-app
总结
安装 Node.js、PM2、Nginx
构建 Next.js 应用
使用 PM2 运行 Next.js
配置 Nginx 反向代理
使用 Certbot 启用 HTTPS
管理应用
这样,你的 Next.js 应用就能在 Ubuntu 和 Nginx 环境下稳定运行了!