Back to blog
Dec 19, 2025
2 min read

摆脱Vercel:Next.js在Debian上部署

不使用Vercel平台来部署Next.js项目

摆脱Vecel,在Debian服务器上部署Next.js项目

RackNerd是一家提供vps和独立服务器的商家。在双十一时候,其实也是国外的黑五时节,会推出一些低价VPS,我眼馋了购买了一台,正好有个代码需要部署,写一下。 racknerd-black-friday


安装软件包

更新软件包列表:

sudo apt update

安装Nginx、npm、以及其他SSH相关包:

sudo apt install nginx npm certbot python3-certbot-nginx

创建或拉取一个Next.js应用

如果有Next.js应用,克隆即可。如果没有,可创建一个示例来完成下述操作:

npx create-next-app@latest my-app

之后构建项目:cd my-app && npm run build 成功后,用pm2运行程序:

pm2 start npm --name "my-app" -- start

大致你会得到:

PM2-status

这样Next.js项目就已经借助pm2来运行起来了。


配置Nginx

新建文件/etc/nginx/sites-available/my-app(my-app可以更换为自己的项目名称),然后新增:

server {
  server_name my-app.com;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

然后,链接一下配置文件:

sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/

然后重新启动Nginx以使其生效:

sudo systemctl restart nginx

测试

通过外部浏览器访问<ip>,看看能不能访问成功。有问题的话看看是不是防火墙端口没有放开。

为域名配置SSL

域名购买后,在域名管理页面把域名与服务器IP绑定,然后进行下方操作:

sudo certbot --nginx -d my-app.com -d www.my-app.com

把上方的my-app.comwww.my-app.com替换成你自己的域名。certbot会自动给你修改nginx的配置文件,添加SSL配置。

更新nginx:

sudo nginx -t
sudo systemctl reload nginx

后续

代码更新怎么办?

git pull
npm run build

pm2 restart <app_name>