node 项目部署比纯 web 项目部署要多一些步骤,上传完项目文件需要重新启动,通过部署脚本可以大大提升效率。在服务端构建部署,文件体积大,且依会临时占用服务器性能,在开发设备打包可避免这两项问题。
- 修改
next.config.js输出模式为standaloneoutput: "standalone" - 添加
prisma.schema服务器环境依赖(以 ubuntu 为例),并执行prisma generatebinaryTargets = ["native", "debian-openssl-1.1.x"] - 本地构建应用
- 压缩文件,上传到服务器
- 登录到服务器,解压文件,重启项目
部署脚本
rm -r dist
rm dist.zip
yarn build
cp -R .next/standalone dist
cp -R public dist/public
cp -R .next/static dist/.next/static
zip -r dist.zip dist
echo "上传文件"
scp dist.zip username@host:/www/wwwroot/project
echo "部署"
ssh username@host << EOF
cd /www/wwwroot/project
unzip -o dist.zip -d .
# 首次部署
# cd dist
# pm2 start --name project node -- server.js
pm2 restart project
rm dist.zip
EOF
echo "删除文件"
rm dist.zip
rm -r dist