开始

从 Lerd、Herd、DDEV 或 Sail 迁移

一次性接管 Lerd、Laravel Herd、DDEV 或 Laravel Sail 的站点:项目和域名、复制到 Joppa 的数据库,以及附带 diff 和备份重写的 .env。

你已经在用 Lerd、Laravel Herd、DDEV 或 Laravel Sail?迁移到 Joppa 会一次性接管你的站点:每个站点都会成为一个 Joppa 项目,拥有 HTTPS 的 .test 域名;它的数据库会被复制到 Joppa 的服务中;它的 .env 会指向 Joppa。旧工具只会被读取:它的文件和数据库永远不会被修改,只有在你要求时才会停止它。

可以从以下位置打开:

  • 首次启动时的欢迎界面:从 Lerd、Herd、DDEV 或 Sail 迁移…;
  • 设置 › 迁移到 Joppa;
  • ⌘ K 命令面板:「从 Lerd、Herd、DDEV 或 Sail 迁移…」;
  • 代理横幅,当 Lerd、Herd、DDEV 或 Sail 占用 443 端口时:将其站点迁移到 Joppa…(参见 80 和 443 端口被占用)。

1. 找到的站点

Joppa 会在每个工具存放站点的位置查找:

迁移到 Joppa:在这台 Mac 上找到的 Laravel Herd、Lerd、DDEV 和 Laravel Sail 站点

工具 Joppa 查找的位置 数据库
Lerd lerd sites、它的站点文件,以及每个项目中的 .lerd.yaml 它的 Podman 容器(lerd-mysql、lerd-postgres),使用项目 .env 中的凭据
Laravel Herd 它的配置:停放的文件夹(每个子文件夹是一个站点)和链接(herd link) 你机器上 Herd Pro 的服务(.env 中的 DB_HOST 和 DB_PORT)
DDEV ~/.ddev/project_list.yaml 和 .ddev/config.yaml 容器 ddev-<project>-db
Laravel Sail 正在运行的 laravel.test 容器,以及包含 laravel.test 服务的 docker-compose.yml Compose 文件中的 MySQL、MariaDB 或 PostgreSQL 服务

Joppa 还会查看你常用的代码文件夹(~/Code、~/Sites、~/Projects、~/Herd…),向下一层。项目在别处?用 添加文件夹… 读取它。

每个站点会显示它的域名、文件夹、数据库和 PHP 版本。尚未在 Joppa 中的站点会被勾选;已经在其中的会标记为「已在 Joppa 中」。勾选要迁移的站点,然后点击 准备方案。

2. 方案

对每个站点,在任何改动发生之前:

  • 域名:如果工具的域名已经是 .test(Lerd、Herd),就沿用它,否则使用 <name>.test(blog.ddev.site 变为 blog.test)。如果它在 Joppa 中已被占用,则使用 blog-2.test。它会被路由到 127.0.0.1:8000,即 php artisan serve 的端口;对于非 Laravel 项目,则路由到 Joppa 检测到的开发服务器。
  • 每个数据库:它的引擎和版本、大小、从哪里读取,以及接收它的 Joppa 服务(「→ Joppa 中的 MySQL 8.4 · shop」)。如果没有兼容的服务,Joppa 会创建一个:如果 Joppa 提供源数据库的版本就使用该版本,并选用一个空闲端口(「→ 新的 PostgreSQL 17 服务(端口 5433)」)。已经存在同名数据库?则使用第一个可用的名称(shop_import)。
  • .env:会改动内容的 diff(DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD,以及改为 https:// 的 APP_URL),通过 查看更改 查看。

每个站点有三个复选框:

迁移方案:域名、复制到 MySQL 的数据库、.env 差异、停止旧工具

复选框 作用
复制数据库 把每个数据库复制到对应的 Joppa 服务,方式与 从 Docker Compose 导入 相同:用源数据库的客户端导出,创建数据库,恢复,然后比较表的数量
将 .env 指向 Joppa 写入 diff 中显示的 .env。原文件保存为 .env.joppa-backup
然后停止 … 站点迁移完成后停止旧工具:lerd stop、herd stop、ddev stop <project>、./vendor/bin/sail stop

3. 迁移

迁移 N 个站点 会逐个站点依次执行各个步骤,并显示进度:项目、数据库、.env、停止。某一步失败不会中断其他步骤;最后的报告会针对每个站点说明完成了什么或失败的原因,并提供 打开 以跳转到该项目。对已迁移的站点再次运行迁移,会沿用它现有的项目。

如果旧工具已被停止,而 Joppa 的代理之前没有运行(该工具占用着 443 端口),Joppa 会在最后启动它的代理。

不会改动的内容

  • 项目的文件,除了 .env(如果你勾选了它,并且会先备份)。
  • 旧工具的数据库:它们只会被读取。
  • 旧工具的配置(它的站点、链接、DNS)。如果你保留 Lerd、Herd 或 Valet,它们的 .test 解析会继续为 Joppa 服务;如果你卸载了它们,Joppa 会提议写入自己的解析文件(参见 解析 .test 域名)。
getjoppa.com › support

加载中

发送不了?请写信至 [email protected]。只是简单的问题:[email protected]。