> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# 从 Heroku 迁移到 Square Cloud

> 将 Web、worker 或 API 应用从 Heroku 迁移到 Square Cloud 的实用指南：配置映射、部署步骤，以及需要提前规划的主要差异。

## 开发者为什么迁移

Heroku 的 dyno 模式将计算小时数与附加组件分开计费，这使得随着应用增长，每月费用越来越难以预估。Square Cloud 采用了不同的方式：

* **BRL 计价的可预测固定价格** —— 一个套餐价格涵盖 RAM、vCPU 和 Blob 存储，不会有计量式的附加账单叠加上去。参见[套餐与价格](/zh/platform/plans)。
* **专属资源** —— RAM 和 vCPU 都为你的应用预留，而不是尽力而为的共享容量。
* **秒级部署** —— 上传一个 zip 文件或通过 CLI 推送，应用即可运行，无需构建队列。

## 概念对照

| Heroku                            | Square Cloud                                                                   |
| --------------------------------- | ------------------------------------------------------------------------------ |
| `Procfile`（`web:`/`worker:` 进程类型） | [`squarecloud.app` 配置文件](/zh/getting-started/config-file) —— `MAIN`/`START` 字段 |
| Buildpacks                        | [Runtimes](/zh/runtimes/introduction) —— 自动语言检测，无需选择 buildpack                 |
| Config Vars                       | 环境变量，可在控制面板中设置，或通过 `.env` 文件上传                                                 |
| Heroku Postgres                   | [Square Cloud 托管数据库](/zh/services/databases)（PostgreSQL、MySQL、MongoDB、Redis）   |
| `heroku logs --tail`              | 控制面板日志，或通过 CLI 的 `squarecloud app logs`                                        |
| 自定义域名（付费 dyno）                    | [Standard 套餐或更高级别](/zh/platform/plans)上的自定义域名                                  |

## 迁移步骤

<Steps>
  <Step title="创建你的配置文件">
    将你的 `Procfile` 替换为项目根目录下的 `squarecloud.app` 文件。像这样的 Heroku `Procfile`：

    ```
    web: node index.js
    ```

    会变成：

    ```systemd squarecloud.app theme={null}
    MAIN=index.js
    MEMORY=512
    VERSION=recommended
    DISPLAY_NAME=My migrated app
    SUBDOMAIN=my-app
    ```

    对于 worker 进程类型，去掉 `SUBDOMAIN`，改为将 `START` 设置为你的 worker 启动命令。查看[配置文件参考](/zh/getting-started/config-file)了解每个字段的详情。
  </Step>

  <Step title="设置你的环境变量">
    导出你的 Heroku Config Vars（`heroku config`），并在 Square Cloud 上设置相同的键，可以从控制面板的环境变量面板设置，也可以上传 `.env` 文件：

    ```bash theme={null}
    squarecloud app env set --from-file .env --app <appID>
    ```
  </Step>

  <Step title="部署">
    通过 CLI 或控制面板上传你的项目：

    ```bash theme={null}
    squarecloud upload
    ```

    参见[如何托管你的网站/API](/zh/tutorials/how-to-deploy-your-website)，了解这两种方式的完整演示。
  </Step>

  <Step title="配置你的 DNS">
    应用在 `<subdomain>.squareweb.app` 上线后，将你域名的 DNS 指向 Square Cloud，并通过 CLI 绑定：

    ```bash theme={null}
    squarecloud app network domain example.com --app <appID>
    ```

    自定义域名需要有效的 Standard 套餐或更高级别。
  </Step>
</Steps>

## 需要提前规划的主要差异

* **地区与延迟。** Square Cloud 的数据中心位于纽约 —— 参见[平台概览](/zh/platform/overview)了解基础设施详情。如果你的大部分用户所在地区与当前 Heroku dyno 所在地区不同，请在切换前先测量延迟。
* **没有免费 dyno 层级。** Square Cloud 没有等价的免费 dyno —— 运行任何应用都需要有效的付费套餐。参见[套餐与价格](/zh/platform/plans)，选择适合你工作负载的档位。
* **数据库需单独迁移。** 迁移 Heroku Postgres 的数据意味着需要先导出它（例如使用 `pg_dump`），再恢复到一个新的 [Square Cloud 托管数据库](/zh/services/databases)中 —— 请为切换规划一个维护窗口。

## 联系我们

如果你仍然遇到**技术问题**，我们的**专业支持团队**可以为你提供帮助。[**联系我们**](https://squarecloud.app/zh/support)，我们很乐意协助你解决任何问题 —— 支持质量正是开发者给予 Square Cloud [**4.9/5 评分（共 402 条评价）**](https://www.trustpilot.com/review/squarecloud.app)（Google 与 Trustpilot）的重要原因之一。
