爆肝2月,我的 AI 代码生成平台上线了!

B站影视 电影资讯 2025-08-15 11:07 2

摘要:大家好,我是程序员鱼皮。经过近 2 个月的奋斗,我带大家开发的新项目 《AI 零代码应用生成平台》 进入尾声。

大家好,我是程序员鱼皮。经过近 2 个月的奋斗,我带大家开发的新项目 《AI 零代码应用生成平台》 进入尾声。

这是一套以 AI 开发实战 + 后端架构设计 为核心的项目教程,基于 Spring Boot 3 + LangChain4j + LangGraph4j + Vue 3 开发的 对标大厂 的 企业级 AI 代码生成平台,带大家掌握新时代程序员必知必会的 AI 智能体开发、AI 工作流等前沿技术,大幅提升求职竞争力!

我带大家开发了多种模式的应用生成、可视化修改、AI 图片搜集、持久化对话记忆、一键部署等功能:

我已经录制了几十个小时的视频教程,而且光是文字教程就 15w 字,妥妥一本书的量!可想而知我最近掉了多少头发。。。

这篇文章是一个保姆级的项目前后端部署上线教程,来跟着鱼皮一步一步把这个项目上线吧!

首先购买一台服务器,推荐选择轻量应用服务器,提供了很多开箱即用的模板,帮我们预装了环境和软件,省时省力。

鱼皮这里选择一台预装了 1Panel Linux 面板 的轻量应用服务器,配置为 2 核 2 G,部署咱们的项目足够了。但是不能低于这个配置,否则卡爆!

应用模板一般选择最新版本就好了,如下图:

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板,跟宝塔 Linux 类似。提供可视化的服务器管理界面,支持应用商店、容器管理、文件管理、数据库管理等功能,适合中小团队或者个人学习使用,告别使用黑漆漆的命令行来操作服务器。

购买好服务器后,进入服务器控制台的应用管理页,登录 1Panel 面板。首次登录时,需要先登录服务器,通过输入命令的方式获取面板的默认账号密码,如图:

点击登录后,进入到 web 终端,复制脚本并执行,根据指示更新自己设置的密码:

根据终端输出的信息,访问面板,输入初始用户名和密码。然后成功登入面板,豁然开朗,服务器的状态尽收眼底!

在正式操作前后端部署前,我们要先进行一个规划,比如要部署哪些项目和服务、需要哪些依赖、占用哪些端口等。

1、获取源码

本项目代码完全开源:https://github.com/liyupi/yu-ai-code-mother

后续这个项目会改造为微服务,建议新手学习和部署根目录的后端项目,使用传统的分层架构。

2、部署方案

为了提高效率,本项目前端和后端均使用 1Panel 面板进行部署。

涉及到具体的部署方式:

1)前端:遵循 Vue 项目的部署模式,基于 Nginx 运行

2)后端:直接运行 jar 包进行部署

注意,强烈不建议通过 Docker 来部署本项目的后端!因为涉及到 NPM 命令执行、依赖安装、Selenium 自动化操作浏览器、文件持久化等,制作 Docker 的成本会很大,而且有可能出现内存不足。

此外,这个项目还涉及到部署 AI 生成的应用,需要利用 Nginx 配置进行代理。

鱼皮在 编程导航 带大家做过十几套项目了,几乎每种部署方式都给大家讲解过,可以按需学习。

3、地址规划

前端:通过 Nginx 提供网站访问服务,访问地址为 http://{域名}。

后端:通过 Nginx 进行转发,访问地址为 http://{域名}/api,实际运行在 8123 端口

AI 生成的应用:通过 Nginx 提供网站访问服务,根据请求地址转发到不同的应用,访问地址为 http://{域名}/dist(如果你有多个域名的话,那就不需要子路径来映射)

注意,使用 Nginx 转发是为了让前端和后端域名一致,保证不会出现跨域问题。

Nginx80Web服务器,处理 HTTP 请求和反向代理数据库3306数据存储,管理应用的持久化数据Redis6379缓存服务,提供高性能的内存数据存储

需要在服务器控制台的防火墙中开通需要外网访问的服务端口,比如 MySQL 和 Redis:

OpenResty 是一个基于 Nginx 与 Lua 集成的高性能 Web 平台,可用于快速开发高并发、可扩展的 Web 应用、网关等。

简单来说,它是对 Nginx 的增强,为了便于理解,后面我们统一称为 Nginx。

安装 OpenResty,使用默认配置即可:

安装中,可以看到其实面板是通过容器来运行应用的:

进入到 网站 板块,看到 OpenResty 成功运行:

访问服务器地址,能看到 Nginx 字样就表示安装成功:

2、MySQL

进入 数据库 板块去安装:

安装时选择 8.x 版本、修改 Root 密码、开启端口外部访问:

安装完成后,可以看到 MySQL 已启动:

先为后端项目创建一个数据库。数据库名称和我们项目需要的数据库名称保持一致(此处为 yu_ai_code_mother),注意用户名、密码和访问权限:

创建成功,可以看到数据库的信息。尝试利用数据库管理软件连接数据库,比如在 IDEA 中打开后端项目,通过数据库面板在本地检查连接是否正常:

执行鱼皮提供的 SQL 脚本,初始化库表:

记得看一下数据库表是否创建成功。

进入 数据库 面板的 Redis 标签页,安装 Redis:

版本选择默认的即可,需要配置密码、开启远程访问:

安装完成后,在 IDEA 数据库面板中验证本地能否连接远程 Redis:

JDK 是运行后端项目的基础。虽然 1Panel 也提供了可视化配置 Java 运行环境的方式,但是跟应用是强绑定的,封装在容器内,而我们需要后端项目能调用终端执行 NPM 命令和应用截图等操作,所以需要手动安装。

可以利用 SDKMAN 快速安装和管理 JDK 等依赖。

sdkMAN 需要用到压缩和解压缩命令,因此需要先进入终端安装这些命令:

sudo apt install zip unzip -ycurl -s "https://get.sdkman.io" | bash

安装后,查看可用的 Java 版本,本项目一定要选择 JDK 21!

sdk list java

接下来安装 JDK 21 并设置为默认版本:

# 安装sdk install java 21.0.8-amzn# 设置为默认版本sdk default java 21.0.8-amzn

本项目的业务中,生成 Vue 工程项目时需要打包构建、AI 工作流生成架构图时也需要用到 Mermaid CLI 等,这些都依赖 Node.js 环境和 NPM 包管理工具。

直接去 Node.js 官网 安装,选择 Linux 系统,会看到一堆命令,作用是安装 nvm 这样一个 Node.js 管理器:

复制命令到终端执行:

由于本项目包含 Selenium 网页截图功能,需要安装一个浏览器,首推 Chrome。

执行下列命令即可安装:

curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg && echo"deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee/etc/apt/sources.list.d/google-chrome.list && sudo apt update && sudo apt install -y google-chrome-stable

还要安装中文字体,否则网页无法显示中文(这里我让 AI 帮我随便选了,也可以安装别的):

sudo apt install -y fonts-wqy-zenhei fonts-noto-cjk && sudo fc-cache -fv7、其他服务

项目还用到了一些第三方服务,比如 腾讯云 COS 对象存储、DeepSeek API、阿里云百炼 API,可以去对应的官网开通。

接下来,我们依次进行后端和前端部署。

四、后端部署1、编写生产环境配置

修改 application-prod 生产环境配置,包括数据库、Redis、对象存储、各种大模型的 API Key 等,替换为上述安装依赖时指定的配置(如用户名、密码)。

注意,为了性能和安全,最好关闭 MyBatis Flex 的日志、以及 AI 相关的日志,还要给 Knife4j 接口文档设置用户名和密码。

配置代码较长,可以在开源项目获取:https://github.com/liyupi/yu-ai-code-mother

org.projectlomboklombok1.18.38

在 IDEA 中打开后端项目,忽略测试并打包:

打包成功,得到 jar 包文件:

建议先在本地终端输入命令以 prod 模式运行 jar 包,看看项目能否正常启动:

java -jar yu-ai-code-mother-0.0.1-SNAPSHOT.jar --spring.active.profiles=prod

发现项目可以正常运行、各个功能也都正常,再进行后续操作:

3、部署到服务器

将打好的 jar 包通过面板上传到服务器的指定目录下,我这里是 /project/yu-ai-code-mother-backend:

接下来进入 jar 包所在目录 /project/yu-ai-code-mother-backend 的终端,先在前台运行 jar 包:

java -jar yu-ai-code-mother-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

查看输出信息,确定项目启动成功:

然后在后台运行 jar 包,这样终端关闭后项目依然会运行:

nohup java -jar yu-ai-code-mother-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod > app.log 2>&1 &

可以在 jar 包相同目录下看到日志文件:

我们的预期是:如果访问的是后端接口(地址有 /api 前缀),则 Nginx 将请求转发到后端服务。

先创建一个网站(相当于新建 Nginx 站点),选择 反向代理 类型,域名填写当前服务器 IP 或者自己的域名,代号最好用项目名称:

创建好网站后,编辑反向代理的配置:

修改反向代理的前端请求路径为 /api,修改后的配置如图:

我们为了防止 AI 生成的 SSE 请求超时,需要修改反向代理配置。

由于 Nginx 是通过容器部署,需要找到容器内 /www 对应挂载的服务器目录:

找到实际的反向代理配置文件,加上一行配置:

proxy_read_timeout 900s; # 读取超时延长,避免长连接被中断

现在就能够直接通过 80 端口(可省略)正常访问后端接口文档:

输入密码后就看到接口文档了:

前端部署可以参考 Vite 官方文档,分为编写生产环境配置、打包构建、部署和 Nginx 配置这 4 个步骤。

新建 .env.production 文件,直接使用相对路径,这样前端域名、请求域名和生成网站的部署域名都保持一致,解决跨域和同源问题。

VITE_DEPLOY_DOMAIN=/distVITE_API_BASE_URL=/api2、打包构建

直接执行前端项目 package.json 文件中的 build 命令:

构建成功后,可以看到 dist 目录:

常见的构建失败原因是类型校验错误,这是由于脚手架内置的 build 命令会执行类型检查,如果项目代码中有任何类型不规范的地方,都会导致打包失败!

虽然可以自己一个个修复类型,但是太影响效率了,得不偿失,所以引入一个 不执行类型检查 的构建命令。

在 package.json 文件中定义 pure-build 命令:

{ "scripts": { "dev": "vite", "pure-build": "vite build", "build": "run-p type-check \"build-only {@}\" --",}}

然后执行 pure-build 命令,执行打包构建即可。

注意,如果 Node.js 版本较低,也可能会构建失败,这时可以到 官网 安装更新的版本,最好 >= 20 版本。

一般来说,用户无法直接访问服务器上的文件,需要使用 Nginx 提供静态文件的访问能力。

把 dist 目录内的所有文件上传到服务器上,为了方便,直接上传到之前配置的网站的 root 目录下:

如图:

但是,如果访问服务器,你会发现还是默认网站。也就是说,默认并没有从 1Panel 的网站目录加载网站!需要我们手动修改 Nginx 配置。

查看 Nginx 配置文件,果然缺少 root 网站根目录配置:

加上一行配置就好:

# 主前端网站根目录root /www/sites/yu-ai-code-mother/index;

然后输入服务器 IP(或者你配置的域名)就能访问了:

但是经过验证,目前访问除了主页外的其他页面(比如 /user/login),如果刷新页面,就会出现 404 错误。

这个问题是由于 Vue 是单页面应用(前端路由),打包后的文件只有 index.html,服务器上不存在对应的页面文件(比如 /user/login.html),所以需要在 Nginx 配置访问规则。如果找不到某个页面文件,就加载主页 index.html 文件。

修改 Nginx 配置,补充下列代码:

# 处理主网站的路径访问,防止单页面应用 404location / { try_files $uri $uri/ /index.html =404;}

保存并重载配置后,再次刷新页面,可以正常访问。

这个项目比较特殊,除了前后端部署外,还需要为 AI 生成的应用提供部署地址。

由于前端是通过 Nginx 容器部署的,有些服务器上的文件路径是无法直接在容器内访问到的,除非利用容器的挂载能力。

前面也提到了,Nginx 的 /www 路径映射到了服务器本机目录,也就是说 Nginx 能访问到 /opt/1panel/www 路径下的文件,这就是一个突破口,后端只要把 AI 生成的应用也存放到这个路径下就可以了。

这里我们约定,后端需要确保在 /www/sites/yu-ai-code-mother/tmp 目录下生成临时文件。最简单的办法就是把 jar 包移动到这个 /www/sites/yu-ai-code-mother 目录下运行(或者通过配置文件修改后端写入文件的路径)。

直接复制 jar 包:

关闭之前已经启动的进程,然后执行命令重新启动 jar 包。

修改前端的 Nginx 配置,配置请求 /dist 路径时到项目部署根目录去寻找网页文件:

# 为生成的网站提供部署访问能力location /dist/ { # 生成的网站部署根目录 alias /www/sites/yu-ai-code-mother/tmp/code_deploy/; try_files $uri $uri/ /dist/index.html =404;}

然后通过修改数据库的方式,将该用户的角色设置为管理员,从而使用更多功能。

2)进入主页,和 AI 对话来生成一个网站:

3)进入对话页面,发现 AI 自动选择了生成模式,并且能够流式输出代码:

4)网站生成完后,可以立刻看到生成的效果:

还可以查看生成的应用详情,支持修改和删除自己的应用信息:

5)再来生成一个更复杂的网站,通过 AI 智能路由触发 Vue 工程项目生成模式。

可以实时看到工具调用的过程,并且在完成后自动构建,然后展示出网站的运行效果:

6)可以进入编辑模式,可视化修改网站的内容:

很快就修改完成了,效果如图:

7)部署生成的应用:

能够访问到部署的网站应用:

8)部署网站成功后,稍等一会儿回到主页,可以看到自动生成了应用的封面图:

9)管理员可以管理和精选应用:

过几分钟后(有缓存),主页就会展示出精选应用啦。至此,网站部署完成!

我个人感觉对新手来说,1Panel 不如宝塔面板更友好,毕竟全容器操作,新手很容易在路径和依赖上踩一些坑。

至此,整个项目已经完成上线,希望大家能通过这个项目掌握企业级 AI 项目的开发、优化和上线方法,得到全方面编程能力和 AI 应用开发技巧的提升。

最后再次强调,本项目代码完全开源(暗示 star 嘿嘿):https://github.com/liyupi/yu-ai-code-mother

完整教程 编程导航 可见,感兴趣的同学欢迎来跟我学习新项目~

编程学习交流:编程导航:https://www.codefather.cn/

简历快速制作:老鱼简历:https://laoyujianli.com

✏️ 面试刷题神器:面试鸭:https://mianshiya.com

AI 学习指南:AI知识库:https://ai.codefather.cn/

来源:程序员鱼皮

相关推荐