不会写代码的产品经理,怎么把项目部署上线
当产品经理面临自身痛点时,传统的解决方案往往陷入开发排期难、外包成本高的困境。vibe coding 的出现彻底改变了这一局面,让不会写代码的产品人也能实现从需求到上线的完整闭环。本文通过一个充电桩聚合页面的真实案例,详细拆解了如何用 AI 生成代码、逆向破解小程序接口、部署服务器并实现自动化更新的全流程,为产品经理提供了一个完整的 DIY 解决方案。

一、从痛点到上线:一个产品经理的闭环实验
做产品这么多年,我一直觉得自己做的事情就是用同理心解决别人的痛点。但有个尴尬的事实:当痛点出在自己身上时,往往束手无策。 不是想不到方案,而是做不出来。找开发排期,想屁吃,就一个玩票性质项目;找外包,一个简单的数据看板报价两万起。自己学写代码?投入产出比不划算。
但是 vibe coding 改变了这件事。所谓 vibe coding,就是你不一定需要会写代码,只要能把需求描述清楚,AI 就能帮你生成可运行的代码。这对产品经理来说是一个质变。我们擅长定义问题和拆解方案,过去卡在实现环节,现在这个环节被 AI 补上了。
我拿自己遇到的一个真实痛点验证了这件事。公司园区有免费充电桩,但体验很差。想充电,要么亲自下楼走到充电桩位置看有没有空位,要么打开小程序查看。楼下有蔚来和公牛两家供应商,蔚来的小程序入口藏了四五层才到充电桩状态页面,公牛又是一个完全不同的小程序。查一个空桩的操作成本,高到让人想放弃。只能在充电接力群里求接力。

我的需求很明确:一个页面聚合所有充电桩的实时状态,空着、充着、占着一目了然,还支持邮件订阅空闲提醒。产品逻辑拆解下来就三件事:后端定时采集数据存数据库,API 接口给前端提供数据,前端展示状态卡片加订阅表单。
我让 AI 写了代码,用的技术栈很朴素:前端原生 HTML + JavaScript + Tailwind CSS,后端 Flask + MySQL。没有框架、没有工程化、没有测试用例,一个后端同学看了大概会摇头,这代码就是典型的”屎山”。但我不在意,因为从 0 到 1 的业务价值是真实的。
这个项目最难的地方是微信小程序逆向破解。充电桩的状态数据藏在蔚来和公牛的小程序里,小程序没有公开 API,网上找各种方法始终无法处理。后来发现一个野路子:把小程序的代码包直接打包下来,扔给 AI 自己去分析接口和加密逻辑,破解过程全交给它,解决一切烦恼。这一步搞定了,后面就是定时请求存数据库的事。
上线两周,公司内部接近上百人每天用它查充电桩,订阅通知发了几百封邮件。一个没人排期的需求,从想法到上线再到完全真正可用不到一周搞定。
这个体验让我重新审视了 vibe coding 的定位。很多开发同学批评 AI 生成的代码质量差、没有工程化、屎山一堆,这些批评都对。但对于不会写代码的人来说,”优雅的代码”和”能跑的代码”之间不是二选一,而是”能跑的代码”和”根本没有代码”。vibe coding 解决的是后一个问题:让你从 0 到 1 把东西做出来。先验证业务逻辑是否成立,再考虑代码质量是否需要优化。这也是互联网产品的基本思路:先上线,再迭代。
说回正题。AI 帮我解决了写代码的问题,但代码能跑在本地和真正能在互联网上访问,中间隔着一整条部署链路。网上关于部署的教程几乎全是写给开发者的,满屏命令行和术语。这篇文章要讲的,就是写完代码之后的事:一个不会写代码的人,怎么把项目从本地搬上互联网。
二、选对部署方案:先判断项目类型
很多人一想到部署就买服务器,其实有些项目根本用不着。选错方案不仅浪费钱,还会增加不必要的运维负担。
判断方法很简单:问自己一个问题,你的项目有没有后端逻辑?后端逻辑包括需要数据库、需要定时任务、需要服务端处理请求。如果都没有,你的项目就是纯静态的。

纯静态项目,也就是只有 HTML、CSS、JavaScript,所有逻辑在浏览器里跑、不依赖服务端的项目,有三条路可选。OSS 对象存储托管最省事,阿里云 OSS、腾讯云 COS、Cloudflare R2 都支持把静态文件直接扔上去当网站用,创建 Bucket、开启托管、传文件三步搞定,费用按流量算,个人项目一个月几毛钱。GitHub Pages 更简单,代码推到仓库,Settings 里开一下 Pages 就自动部署,免费且自带 HTTPS。Vercel 和 Netlify 适合 React、Vue 项目,推代码自动构建部署,免费额度够用。这三种方案共同点是不用管服务器、不用装环境、不用配 Nginx,但前提是你的项目没有后端。
一旦涉及数据库、定时任务、API 接口,上面那些方案就不够用了,你得有一台服务器。有人会问 Docker 容器化呢?确实更规范,但对新手来说学习成本太高,Dockerfile、镜像构建、容器编排每一步都是新概念。第一个项目我建议直接买轻量应用服务器,用最朴素的方式部署。理解了全链路之后再考虑容器化也不迟。
我这次选了阿里云轻量应用服务器,2 核 2G 内存,一年 68 元。腾讯云也有同类产品,价格差不多。云厂商新人都有优惠,买完一个第二年换个厂商可以继续薅。

三、服务器部署四步走
服务器买完是个空壳,你要做四件事:装环境、拉代码、起服务、配域名。下面一步步讲,重点说清楚每步为什么做、哪里容易踩坑。

第一步,装基础环境。服务器需要装 Python 3 跑后端、MySQL 存数据、Nginx 做流量分发、Git 拉代码。Ubuntu 22.04 自带 Python 3,其他的基本上一条命令就能装好。以前装这些环境得在网上翻各种教程,一篇博客能踩三四个坑。现在不用了,打开豆包、元宝或者 Gemini,直接问「xxx 操作系 怎么装 MySQL 和 Nginx」,它会一步步给你命令,遇到报错把错误信息丢给它接着问就行。更狠一点,直接把服务器 IP 和密码发给 Claude Code 或者 Codex,让它 SSH 上去帮你把环境全部配好,你坐在旁边喝咖啡就行。这里有个容易忽略的事:MySQL 装完要初始化,初始化时会让你设 root 密码、决定是否允许远程登录。建议不允许远程登录,安全性更高。然后单独创建一个数据库和用户给项目用,别用 root 账号连数据库。
第二步,把代码拉到服务器。代码在 GitHub 上,服务器上 clone 下来就行。但拉之前要配 SSH Key,让服务器能免密访问你的 GitHub 仓库。原理不复杂:服务器上生成一对密钥,公钥贴到 GitHub 的 SSH Keys 设置里,私钥留在服务器上,配好后就能用 SSH 方式 clone 仓库了。拉下来之后装 Python 依赖,再把 API Token、数据库密码这些敏感信息填到 .env 文件里。.env 是环境变量配置文件,代码通过它读取敏感参数,不用硬编码在代码中。确认 .gitignore 里已经排除了 .env,千万别提交到仓库。我见过有人把数据库密码推到公开仓库,半天就被扫描到了,比你想的快得多。
第三步,让服务持续运行。你直接运行 python server.py,终端关了服务就停了。Linux 有个服务管理工具叫 systemd,专门解决这个问题。写一个配置文件告诉它程序怎么启动、挂了自动重启、开机自动启动,服务就在后台持续运行了。我的项目有两个后端服务:API 服务和数据采集器,分别写了 service 配置,都设了 Restart=always。API 服务用 gunicorn 启动,这是 Python 的生产服务器,比 Flask 自带的开发服务器稳定得多。这里有个坑:每次修改 service 配置文件之后,必须执行 systemctl daemon-reload,否则 systemd 用的是内存中的旧配置,你改的东西不会生效。我踩过两次。

第四步,Nginx 统一入口。两个服务跑起来了,但用户怎么访问?API 监听 5001 端口,前端是静态文件,用户总不能输端口号吧。Nginx 做的事就是统一入口:用户访问 80 端口,Nginx 根据请求路径分发,访问页面返回前端静态文件,访问 API 转发到后端 5001 端口。这个机制叫反向代理。你可以这么理解:Nginx 是前台接待,用户来了先问它,它根据你要办什么事(访问路径),把人带到对应的窗口。配好 Nginx 之后,域名解析到服务器 IP,浏览器输入域名网站就上线了。HTTPS 建议配上,certbot 一行命令申请免费证书,自动续期。没有 HTTPS,浏览器标不安全,微信里打开还可能被拦截。
四、自动化部署与避坑
从手动到自动:推代码就上线
第一次部署是手动操作的,SSH 登录服务器、拉代码、装依赖、重启服务、验证,一套下来十几分钟,每次改代码都得重复。这种重复劳动不能忍。
自动化部署的思路:代码推到 GitHub 的 main 分支,GitHub 自动 SSH 到你的服务器执行部署脚本。你只管 push,线上自动更新。
整件事的关键在于建立 SSH 信任链。在 GitHub 仓库里配置三个 Secret:服务器 IP、登录用户名、服务器的 SSH 私钥。私钥来源跟前面一样,服务器上生成密钥对,公钥留在服务器的授权列表里,私钥配到 GitHub Secrets 里。私钥是敏感信息,只能放在 Secrets 里,绝对不能提交到仓库。
这个事情本质也简单,配置完登录信息后,直接让 CC 或者 Codex 写个 deploy.yaml 脚本即可。,遇到问题就让 Agent 自己分析,你只需要负责验证最终完成的效果即可。
部署脚本要完成三件事:更新代码和依赖、重启服务、验证部署成功。更新就是 git pull 加 pip install。重启之前要先更新 service 配置和 Nginx 配置(如果改过的话),然后 daemon-reload 再 restart。验证这步很多人会省,但我觉得最不该省。部署完不验证,怎么知道上线成功了?脚本最后会请求健康检查接口和前端页面,确认 API 正常响应、页面正常访问,任何一步失败就中断部署。

从这以后,本地改完代码,git push 一下,等一两分钟线上就更新了。
五个高频踩坑点
部署这条路上坑不少,把我踩过的和帮别人排查过的整理一下。
坑一,Flask 开发服务器上线。最常见的新手错误。Flask 自带的 app.run() 是开发服务器,单线程、没有容错、没有并发能力,一挂就没了。线上环境必须用 gunicorn 或 uWSGI。别用 Flask 开发服务器上线,别问我是怎么知道的(其实小项目也可以)。
坑二,敏感信息硬编码。API Token、数据库密码写在代码里推到公开仓库,半天之内就会被自动化扫描工具发现。GitHub 上每天都有机器人扫描泄露的密钥。用 .env 文件管理,.gitignore 排除,部署脚本里检查 .env 是否存在,没有就中断部署。
坑三,Nginx 配置改完不测试。Nginx 配置写错了不会弹窗报错,直接用错误配置 reload 会导致整个网站挂掉。养成习惯:改完配置先 nginx -t 测试语法,通过之后再 reload。部署脚本里也要加这个检查。
坑四,前端更新了用户看不到。Nginx 默认缓存静态资源,你更新了前端代码,用户浏览器还在用旧的缓存版本。解决方案是区分对待:图片字体设 7 天缓存,JS 和 CSS 设不缓存,确保更新立即生效。不然你改了 bug 用户还在看旧版本,提了工单你一脸懵。

遇到问题怎么排查?方法只有一个:看日志。服务跑不起来了,systemctl status 服务名 看状态,journalctl -u 服务名 看日志。Nginx 报错了看 /var/log/nginx/error.log,MySQL 连不上了看 /var/log/mysql/error.log。
别瞎猜,日志会告诉你到底哪里出了问题。95% 的部署问题看日志都能定位到原因。
五、从 0 到 1 的方法沉淀
回头看整个链路,可以抽象成一个通用的六步法,以后做别的项目照着走就行。
第一步,判断项目类型。有后端逻辑就买服务器,没有就选静态托管。别上来就买服务器,花钱还增加运维负担。这一步决定了你后面所有工作的复杂度,选错了回头再改成本很高。
第二步,买服务器装环境。轻量应用服务器就够,别买 ECS。系统选 Ubuntu,装好 Python、数据库、Nginx、Git。MySQL 装完记得初始化,创建项目专用的数据库用户。这步最怕的是跳过 MySQL 初始化直接用,后面数据库权限问题会一直追着你。
第三步,代码上服务器。配 SSH Key 免密访问 GitHub,clone 仓库,装依赖,填环境变量。环境变量放 .env 文件,确认 .gitignore 排除了它。这步最怕的是把 .env 推到仓库,敏感信息泄露的风险比你想象的大得多。
第四步,服务持续运行。用 systemd 管理,设置自动重启和开机启动。service 文件改完一定要 daemon-reload,不然改了白改。这步最怕的是直接 python server.py 前台跑,终端一关服务就没了。
第五步,Nginx 统一入口。前端走静态文件,API 走反向代理。配域名解析,加 HTTPS。这步最怕的是 Nginx 配置改完不测试就 reload,一个语法错误整站挂掉。
第六步,自动化部署。GitHub Actions + SSH,推代码自动上线。部署脚本必须包含验证步骤,不然你永远不知道上线到底有没有成功。
这六步走完,项目就是一个可以在互联网上访问、自动部署、挂了自动恢复的正式网站了。
最后想多说一点。踏出第一步,比什么都重要。
很多人会给自己预设一堆困难:「我不会写代码」「我不懂服务器」「我连 Git 都不会用」。这些在今天都不再是障碍。模型方面,不用非得等 GPT 的额度,国产的 GLM5.1、Mimo 2.5Pro、DS4Pro 都能用,日常开发够了。工具方面,Claude Code、Codex 这些 Agent 可以直接在浏览器里用,网上搜一下教程就能上手。Git 不会用?直接问 AI,它会一步步教你,比翻文档快十倍。遇到任何问题,把报错信息扔给 AI,它比 Stack Overflow 好使。
我说一个最实际的建议:用 AI 做一个小产品,走完从开发到部署上线的完整闭环。这个过程本身就是在学,而且学到的东西比看十篇文章都多。等你走完一遍,后面再做项目就是复制粘贴改参数的事。
vibe coding 让不会写代码的人也能把需求变成可运行的产品,这件事的意义比很多人想象的要大。开发同学可能会觉得 AI 生成的代码质量差、没有工程化、屎山一堆,这些批评都对。但站在产品视角,从 0 到 1 的业务价值是真实的。我的充电桩项目代码写得糙,可它确实解决了很多人每天查充电桩的问题。一个自己用的需求,根本不会进入任何人的排期。先让它跑起来、让用户用起来、让数据跑起来,再谈重构和优化。
技术的门槛在消失,真正剩下的门槛只有一个:你愿不愿意动手。
作者:零度Pasca,公众号:进击的零度
本文由 @零度Pasca 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
- 目前还没评论,等你发挥!

起点课堂会员权益




