我自建服务器部署了 Next.js 全栈项目

前言

之前我分享了我开源的两个全栈项目,《舔狗日记》 和 《吃啥好呢》,可以看前文

新作品《舔狗日记》:在爱的剧本里,我们都是自己的主角

新作品:吃啥好呢 - 个性化美食推荐

在文章里面我提到了我放弃 Vercel + Supabase,选择自建服务器自己运维。

我不建议新手和我一样,特别是对编程不熟悉的朋友,Vercel 提供了自动化的 CI/CD,Supabse Free 账户提供 2 个免费 PostgreSQL 数据库,用来折腾学习还是很不错的,如果后期你的访问量起来了或者项目变多了,我建议你学习一下容器技术(docker/k8s),自建服务器部署,这样性比价就更高,但是随之带来的就是运维成本,不过现在 AI 工具那么多,脚本命令什么的 GPT 都可以信手拈来。

如果真的一点技术不会,其实还有一个折中的办法,把项目迁移到 Cloudflare,CF 价格会低很多。

如何将全栈项目部署到自建服务器?

我使用的是 Docker 容器对应用进行管理,我写过一键安装 Docker 的脚本(开源),可以直接拿来用,脚本里面还可以一键安装 MySQL,方便的很,就算是自己手动安装使用 Docker 安装应用也是一行命令的事情。

一键安装脚本:github.com/jonssonyan/...
Docker 官网文档:docs.docker.com/engine/

以吃啥好呢为例

吃啥好呢 GitHub:github.com/jonssonyan/...

  1. clone 项目
bash 复制代码
git clone https://github.com/jonssonyan/what-to-eat.git
cd what-to-eat
  1. 构建镜像
bash 复制代码
docker build -t what-to-eat:0.1.0 .
  1. 运行容器
bash 复制代码
  docker run -d --name what-to-eat --restart always \
    --network=host \
    -e PORT="$PORT" \
    -e DATABASE_URL="$DATABASE_URL" \
    -e NEXTAUTH_URL="$NEXTAUTH_URL" \
    -e NEXTAUTH_SECRET="$NEXTAUTH_SECRET" \
    -e GOOGLE_CLIENT_ID="$GOOGLE_CLIENT_ID" \
    -e GOOGLE_CLIENT_SECRET="$GOOGLE_CLIENT_SECRET" \
    -v $APP_LOG:/app/logs \
    what-to-eat:0.1.0

这里面有几个环境变量必须设置

  • DATABASE_URL:数据库连接
  • NEXTAUTH_URL:网站公网地址(本地开发是 http://localhost:300)
  • NEXTAUTH_SECRET:密钥(不可泄露)
  • GOOGLE_CLIENT_ID:Google OAuth 的 Client ID
  • GOOGLE_CLIENT_SECRET:Google OAuth 的 Client Secret
  • APP_LOG:项目日志文件夹

申请 Google OAuth 2.0 客户端 ID:console.cloud.google.com/apis/dashbo... ,登录之后创建一个凭据即可。

打开浏览器访问 http://ip:3000 就可以访问了。

涉及到的 Dockerfile 文件以及我写好的 install.sh 文件都可以在开源项目中找到,给想知道细节的朋友作为参考。

如何管理 SSL 证书?

可以用我自己手搓的 nginx-acme(开源)自动申请和续签证书,同时还可以借助 Nginx 反向代理对请求进行转发,实现一台服务器共用 80/443 端口访问不同服务的效果。

nginx-acme GitHub:github.com/jonssonyan/...

有了 Nginx 我们还可以对网站流量进行监控、限流、负载均衡、优化提高网站并发。

nginx-acme 是定制化的程序,可以实现一键安装,申请续签证书,转发一条龙。你也可以用一些开源的 Nginx 管理面板,有可视化的页面可以配置,使用门槛更低,我这里推荐:Nginx UI:nginxui.com/zh_CN/

总结

以上就是我部署 Next.js 全栈项目的全过程,希望大家早日赚到第一桶金。

相关推荐
风继续吹..2 小时前
后台管理系统权限管理:前端实现详解
前端·vue
yuanmenglxb20043 小时前
前端工程化包管理器:从npm基础到nvm多版本管理实战
前端·前端工程化
新手小新3 小时前
C++游戏开发(2)
开发语言·前端·c++
我不吃饼干4 小时前
【TypeScript】三分钟让 Trae、Cursor 用上你自己的 MCP
前端·typescript·trae
小杨同学yx5 小时前
前端三剑客之Css---day3
前端·css
Mintopia6 小时前
🧱 用三维点亮前端宇宙:构建你自己的 Three.js 组件库
前端·javascript·three.js
故事与九7 小时前
vue3使用vue-pdf-embed实现前端PDF在线预览
前端·vue.js·pdf
Mintopia7 小时前
🚀 顶点-面碰撞检测之诗:用牛顿法追寻命运的交点
前端·javascript·计算机图形学
wb1898 小时前
企业WEB应用服务器TOMCAT
运维·前端·笔记·tomcat·云计算
烛阴8 小时前
解锁 Gulp 的潜力:高级技巧与工作流优化
前端·javascript