我做了个工具,帮不懂运维的开发者一键把项目部署到 VPS 上
厌倦了写完项目不知道怎么部署?deploy-helper 是一个交互式 CLI 工具,回答几个问题,自动帮你完成 Nginx 配置、HTTPS 证书申请、进程管理全套流程。支持 Node.js、Python、Docker、静态网站,以及版本回滚、环境变量同步、数据库备份、多服务器部署。不懂运维也能用。
我做了个工具,帮不懂运维的开发者一键把项目部署到 VPS 上
起因
我相信很多人都有过这种体验:
花了好几周写完一个项目,本地跑得好好的,然后买了台服务器——然后就卡住了。
- Nginx 怎么配?
- HTTPS 证书怎么申请?
- Node.js 怎么让它一直跑着不挂?
- 代码更新了怎么同步到服务器?
- 服务挂了怎么知道、怎么恢复?
我搜了很多教程,每篇都假设你已经懂一半了。折腾了两天,服务器还是一片空白。
所以我做了 deploy-helper。
它是什么
一个交互式 CLI 工具。运行之后像向导一样问你几个问题,然后把剩下的事全包了。
npx @zhengyizhao/deploy-helper init
🚀 deploy-helper v0.2.1 — 把项目部署到服务器,就这么简单
回答几个问题,我来帮你搞定剩下的一切 👇
[1/5] 服务器连接信息
? 服务器 IP 地址:123.456.78.9
? 登录方式:SSH 密钥(推荐)
✓ 服务器连接成功!
[2/5] 项目信息
ℹ 自动检测到项目类型:Node.js 应用(Express / Koa / Next.js 等)
ℹ 检测到 Node.js 版本要求:v20(来源:.nvmrc)
ℹ 检测到启动命令:node index.js(来源:检测到入口文件 index.js)
? 应用名称(用于进程管理):my-app
? 确认应用运行方式:Web 服务(监听端口,通过浏览器 / API 访问)
? 端口:3000
[3/5] 域名 & HTTPS(可选)
? 是否配置域名?是
? 你的域名:example.com
? 是否自动申请 HTTPS 证书?是
[4/5] 在服务器上安装运行环境
✓ 更新系统包
✓ 安装 Nginx
✓ 安装 Certbot(用于 HTTPS)
✓ 安装 Node.js 20
✓ 安装 PM2(进程管理器)
[5/5] 上传代码并启动服务
✓ 项目文件上传完成
✓ 安装依赖
✓ 启动应用(PM2)
✓ 设置 PM2 开机自启
✓ Nginx 配置完成
✓ HTTPS 证书申请成功
✓ 服务运行正常 — PM2 状态: online (PID 12345)
🎉 部署成功!
访问地址:https://example.com
支持的功能
基础部署
支持五种项目类型,自动识别:
- Node.js(Express / Koa / Next.js)→ PM2 管理进程,自动读取
.nvmrc/package.json engines.node确定版本 - Python(Flask / FastAPI / Django)→ Supervisor 管理,支持 pip+venv 和 conda 两种依赖管理方式;自动读取
.python-version/pyproject.toml确定版本 - Docker → 自动检测
Dockerfile+docker-compose.yml,单容器或 compose 两种模式均支持 - 静态网站 → 直接 Nginx 托管
- 其他语言(Java / Go / C++ / CUDA 等) → 通过 Docker 部署,工具内置 Dockerfile 模板(Java/Go/conda/Node.js 多阶段构建)
三种运行模式
部署时可以选择应用的运行方式:
- Web 服务 → 自动配置端口、Nginx 反向代理、Let’s Encrypt HTTPS 证书
- 后台脚本 → Supervisor / PM2 守护,崩溃时不自动重启
- 定时任务 → 写入 crontab,支持预设频率或自定义 cron 表达式
? 确认应用运行方式:
❯ Web 服务(监听端口,通过浏览器 / API 访问)
后台脚本(长期运行,不对外提供 HTTP 服务)
定时任务(按计划执行,跑完自动退出)
版本回滚
每次部署前自动创建快照,出了问题一条命令回到上个版本:
deploy-helper rollback
# 列出历史版本,选一个,自动还原
环境变量同步
.env 文件不适合放进 git,但手动传到服务器很麻烦。现在:
deploy-helper env
# 上传本地 .env 到服务器
# 或从服务器拉取
# 或对比差异
数据库备份
支持 MySQL、PostgreSQL、MongoDB,可以手动备份,也可以配置定时自动备份:
deploy-helper backup
# 立即备份 / 查看历史 / 下载到本地 / 设置定时 cron
部署时若已配置数据库,deploy-helper update 会先询问是否备份再推代码。
多服务器部署
需要同时部署到多台机器时,支持三种策略:
deploy-helper servers # 添加/查看/删除服务器
deploy-helper update # 选并行 / 串行 / 滚动部署
状态监控
deploy-helper status
# 显示:系统运行时间、内存占用、磁盘、PM2/Supervisor 状态、最近日志
关于 Java / Go / conda 这类环境
对于运行环境比较特殊的项目,工具会提示你选择 Docker 部署,并内置了几个可直接使用的 Dockerfile 模板:
# Java(Maven + JDK 21,多阶段构建)
FROM maven:3.9-eclipse-temurin-21-alpine AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:resolve -q
COPY src ./src
RUN mvn package -DskipTests -q
FROM eclipse-temurin:21-jre-alpine
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]
类似地,Go、Python+conda、Node.js 多阶段构建也有对应模板。把 Dockerfile 放到项目根目录,选择 Docker 类型,工具负责把容器在服务器上跑起来。
技术栈
- Node.js + ES Module
inquirer交互式问答node-sshSSH 连接与文件上传commanderCLI 框架chalk+ora终端美化fs-extra文件操作
核心逻辑不复杂,欢迎看源码。
安装使用
无需安装,直接用 npx:
npx @zhengyizhao/deploy-helper init
或全局安装:
npm install -g @zhengyizhao/deploy-helper
deploy-helper init
前提条件
- 本地:Node.js 18+
- 服务器:Ubuntu 20.04 / 22.04 / 24.04,有 root 或 sudo 权限
现阶段的局限
说实话,目前还有几个没做好的地方:
- Node.js 构建步骤:Next.js 等需要
npm run build的项目,直接部署时不会自动执行构建——推荐用 Docker 多阶段构建模板绕过这个问题 - Python conda 环境:需要项目根目录有
environment.yml(conda env export生成),工具会提示你如何生成 - 系统依赖:如果项目依赖 Redis、FFmpeg 等,需要自己手动装或封进 Docker,工具还检测不到
- 只支持 Ubuntu:CentOS / Debian 暂未测试
这些都在计划里,欢迎提 issue 或者直接 PR。
最后
这个工具首先是为了解决我自己的问题做的,如果也能帮到同样卡在「写完不会部署」这一步的人,那就更好了。
GitHub:https://github.com/sjksndnfkwks/deploy-helper
npm:https://www.npmjs.com/package/@zhengyizhao/deploy-helper
如果觉得有用,欢迎点个 star ⭐,也欢迎提 issue 告诉我你遇到的问题或者想要的功能。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)