如何把 Replit 项目迁移到自己的服务器
要把 Replit 项目迁移到自己的服务器,请把代码下载成 zip 包或推送到 GitHub,单独收集您的 Secrets 和数据库,把代码连接到服务器上的 Coolify 面板,并在确认运行正常之后再切换域名。代码是最容易的部分。Replit 自己的指南说,数据库和网址最花时间。
旧项目在整个过程中一直保持运行。在新服务器上测试完所有内容之前,不要关闭任何东西。
哪些东西随代码一起过来,哪些不会?
| 部分 | 状态 | 操作 |
|---|---|---|
| 源代码 | 会过来 | zip 包或 GitHub |
.replit、replit.nix | 会过来,但只有 Replit 会读取它们 | 用它们来了解运行命令和系统软件包 |
| Secrets | 会留下 | 在服务器上手动填写这些值 |
| 数据库 | 会留下 | 用 pg_dump 导出,并在服务器上载入 |
| App Storage 文件 | 会留下 | 下载它们,并修改存储相关的代码 |
| Replit Auth | 与 Replit 账户绑定 | 改用另一种登录方式 |
| 连接器 | 会留下 | 把每个服务的 API 密钥设为变量 |
如何获取代码?
通过 GitHub:在 Project Editor 中,从 Tools 打开 Git。如有需要,选择 Initialize Git Repository,连接一个仓库,然后提交并推送。请保持私有。我们推荐这条路线,因为它也能带上之后的修改。
作为 zip 包:在文件树顶部的三点菜单中,选择 Download as zip。如果失败,请在 Shell 中自己打包 zip,排除 Replit 存放缓存密钥值的 .cache 文件夹:zip -r project.zip . -x ".cache/*" "node_modules/*"
分步操作
- 从 Next.js VPS 页面订购服务器。这个选项自带 Coolify,所以 Python 和普通 Node 项目也可以在同一个面板中部署。
- 在
.replit中找到启动命令,在代码中找到端口。Replit 自己的发布功能也要求监听0.0.0.0,所以这一点通常已经满足。我们试过的 Flask 取值是端口5000和python -m flask run --host=0.0.0.0 --port=5000。 - Python 项目需要把依赖写在
requirements.txt或pyproject.toml中。对于replit.nix中列出的系统软件包,请使用RAILPACK_DEPLOY_APT_PACKAGES构建变量,不过 Nix 和 APT 的名称并不总是一致。 - 克隆仓库,并在 Claude Code 或 Cursor 这样的编程工具中打开该文件夹。复制您的 Seturack 面板概览标签页上的粘贴到您的 AI 工具一行并粘贴进去。工具会完成部署,您也可以手动完成。
- 把 Replit 的 Secrets 工具中的值作为环境变量填到服务器上,包括 Replit 单独保存的部署密钥。
- 先复制一次数据库用于测试(见下文),并在应用的 HTTPS 地址上对它进行端到端测试。
- 让旧应用下线,最后再复制一次数据库,并把域名的 A 记录指向服务器的 IP 地址。证书会自动签发。
root 权限在您手里,如果愿意,也可以全部在面板中管理。
如何迁移数据库?
Replit 的数据库兼容 PostgreSQL,工具在它的 Shell 中已经备好:
- 在 Replit Shell 中导出:
pg_dump -Fc "$DATABASE_URL" --no-owner --no-privileges -f backup.dump - 这条命令导出的是开发数据库,而线上数据通常在生产数据库中。在 Database 工具中选择生产数据库,从 Settings 复制连接字符串,用它代替
"$DATABASE_URL"。 - 下载
backup.dump。不要把它放进仓库,因为它包含您的全部数据。 - 在 Coolify 中创建 PostgreSQL,并在数据库的 Backups 页面用 Import backup 上传这个文件。
- 在应用中把数据库的内部地址设为
DATABASE_URL,然后重新部署。
pg_dump 运行之后写入的内容不在副本里,所以最后一次复制要在停掉旧应用之后进行。
文件和登录
App Storage 的 bucket 不会迁移,所以请从 Replit 的存储工具中下载文件。如果您的代码使用 Replit 的 SDK,这部分就得修改。最简单的替代办法,是把文件写入服务器上的一个文件夹,并在 Coolify 中用 Persistent Storage 挂载它。
Replit Auth 让您的用户用 Replit 账户登录。要摆脱对 Replit 的依赖,您可能需要另一种登录方式。您的编程工具可以重写这一部分,但请先备份用户表,并在临时地址上测试。
常见问题
Replit 项目需要什么配置?
销售页面推荐至少 4 GB RAM、2 vCore 和 40 GB 磁盘,依据是 Next.js 的构建:一个有 85 个软件包的项目在 2 GB 上失败,在 4 GB 上完成了构建。如果数据库与应用共用服务器,请多留一些余量,需要的话在面板中升级。
每月费用是多少?
推荐的最低配置每月约 $6(含增值税),在土耳其以外以美元付款。每日备份已包含在价格中,流量不限。您在 Replit 上的用量和订阅会持续到您关闭为止。
如何把域名从 Replit 迁走?
在 Replit 的 Publishing、Domains 下移除域名,把 A 记录指向服务器的 IP 地址,然后在 Coolify 的 Domains 页面用 https 添加它,并重新部署。
我还能继续在 Replit 中开发吗?
可以。在 Git 面板中开启自动同步,让修改进入 GitHub。设置了 webhook 的话,服务器会在每次推送时重新构建。没有 webhook 时,请在 Coolify 中点击 Redeploy。请记住,Replit 预览和线上服务器使用的是不同的数据库。
我能把数据库留在 Replit 吗?
您可以尝试把连接字符串交给服务器,但这样应用和数据就分处两地,您的 Replit 账单也会继续。如果您真的要迁移应用,把数据库也放到同一台服务器上更干净。
评论0
暂无评论
成为第一个分享想法的人。
请登录或注册后发表评论。