Skip to main content
このガイドでは、アプリを別のワークスペースやアカウントに手動でコピーする手順を説明します。コードをコピーし、新しいアプリをセットアップし、データをコピーしてから、ユーザーを新しいアプリに向けます。 何も移動または削除されません。古いプロジェクトはそのままの場所に残り、2つのコピーは同期されません。作業が完了したら、古い方を残すか削除するかを選択できます。
組み込みのワンクリック転送を探していますか?チームへのアプリの転送を参照してください。このガイドは、そのオプションが利用できない場合、またはアカウント間でコピーする必要がある場合に使用してください。

開始前に

以下が必要です:
  • 古いプロジェクトと新しいワークスペースまたはアカウントの両方へのアクセス。
  • 最終的な切り替えのための約1時間の集中作業時間。それより前のステップは数日にわたって行うことができます。
  • アプリにカスタムWebアドレスがある場合は、そのドメインを管理している場所へのアクセス。
自動的にコピーされず、最も時間がかかる2つの要素があります:データベースWebアドレスです。このガイドでは両方を扱います。
ワークスペース管理者がソースコードエクスポートの禁止を有効にしている場合、プロジェクトをZIPとしてダウンロードすることはできません。開始前にワークスペース管理者に相談してください—管理者は手動コピーが許可されているかどうか、コードとデータベースを移動する方法を確認できます。

ダウンタイムを計画する

2つ目の店を開いてから最初の店を閉めることを想像してください。古い店が閉まっていて、新しい店がまだ開いていない短い時間があります。その間、誰もあなたのアプリを使用できません。 アプリはどのくらいオフラインになりますか? 通常15分から60分です。これは、データベースが保持するデータ量と、Webアドレスの更新速度によって異なります。 データは失われますか? データベースをコピーした後に誰かが古いアプリにデータを追加した場合のみです。これを防ぐために、最終コピーを作成する前に古いアプリをオフラインにします。このガイドはその順序で構成されています。 元に戻せますか? はい。古いプロジェクトは削除されません。何か問題が発生した場合は、古いアプリを再度公開すれば、以前とまったく同じように動作します。 いつ行うべきですか? アプリを使用する人が少ない時間を選んでください。可能であれば事前にユーザーに知らせてください。

ステップ1:コードを新しいプロジェクトにコピーする

方法を1つ選択してください。このステップの間、古いアプリは稼働し続けます。どちらの方法もコードを運びますが、GitHubは常にコミット履歴を運び、ZIPは.gitフォルダを含む場合のみ履歴を運びます:

GitHub経由

1

古いプロジェクトをGitHubにプッシュする

古いプロジェクトでGitペインを開き、GitHubリポジトリを接続してから、コミットしてプッシュします。コードを公開したくない場合は、プライベートリポジトリを使用してください。
2

新しいアカウントにアクセス権を付与する

新しいワークスペースが別のReplitアカウントに属している場合、そのGitHubアカウントにリポジトリへのアクセス権が必要です。プライベートリポジトリの場合は、そのGitHubアカウントをコラボレーターとして追加するか、共有GitHub組織を使用してください。
3

新しいワークスペースでインポートする

新しいアカウントにサインインし、replit.com/importを開き、GitHubを選択し、GitHubアカウントを接続して、リポジトリを選択します。トラブルシューティングについてはプロバイダーからインポートするを参照してください。
4

コピーを確認する

新しいプロジェクトを開き、ファイルとコミット履歴が存在することを確認します。Replitはインポート中に依存関係をインストールし、実行コマンドを設定します。
GitHubはコミットしてプッシュしたものだけを受け取ります。.gitignoreに一致するファイルと未コミットの変更は残ります。シークレット値やデータベースダンプをリポジトリにコミットしないでください。

ZIPファイル経由

1

古いプロジェクトをダウンロードする

古いプロジェクトで、ファイルツリーの上部にある三点メニューを選択し、Download as zipを選択します。ダウンロードが成功し、ファイルが200 MB未満であれば、次のステップに進んでください。200 MBを超えるZIPファイルは正常にダウンロードできる場合があります。ただし、ZIPインポートは200 MBを超えるファイルを拒否するため、Replitはそれを使って新しいプロジェクトを作成できません。ダウンロードが失敗するか、ZIPが200 MBを超える場合は、より小さいものを作成してください:
  1. 古いプロジェクトでShellツールを開きます。
  2. 次のコマンドを貼り付けてEnterキーを押します。これはproject.zipというファイルを作成し、Replitが自力で再構築できるフォルダを除外します:
  3. サイズを確認します。次のコマンドを貼り付けてEnterキーを押します。これはMB単位のサイズ(150 MBの場合150Mなど)を表示します:
  4. サイズが200 MBを超える場合は、編集履歴を除外してファイルを小さくします。両方の行を貼り付けてEnterキーを押します:
    ZIPを200 MB未満に縮小する必要がある場合のみ、.local.gitを除外してください。これらの除外は、古いプロジェクトからどちらのフォルダも削除するわけではありません。ただし、.gitを含まないZIPには、プロジェクトのコミット履歴が含まれません。履歴を保持する必要がある場合はGitHubの方法を使用してください。
  5. ファイルツリーでproject.zipを見つけ、その横の三点メニューを選択して、Downloadを選択します。
.cacheフォルダには、キャッシュされたシークレット値を含むReplitの内部状態が保持されています。手動で作成するZIPファイルからは常にこれを除外してください。プロジェクトに他の大きな生成フォルダがある場合は、除外リストに追加してください。
2

新しいワークスペースでインポートする

新しいアカウントにサインインし、replit.com/importを開き、ZIPを選択して、ファイルをアップロードします。
3

コピーを確認する

新しいプロジェクトを開き、ファイルが存在することを確認します。ZIPに.gitフォルダが含まれている場合、コミット履歴も一緒に取り込まれています。より小さいアーカイブコマンドを使用した場合、新しいプロジェクトはコミット履歴なしで始まります。Replitはインポート中に除外された依存関係を再インストールします。

ステップ2:新しいアプリをセットアップする

古いアプリはまだ稼働しています。このステップでは、データのテストコピーを使って新しいアプリを完全に動作させ、後の最終切り替えを迅速に行えるようにします。
1

シークレットを追加する

シークレット値(APIキー、パスワード)は古いプロジェクトから外部に出ません。両方のプロジェクトでSecretsツールを開き、それぞれを手動でコピーします。デプロイメントシークレットも含めてください。
2

コネクターと他のサービスを再接続する

新しいプロジェクトのTools → Connectorsから各インテグレーションを再接続します。App Storage、コラボレーター、その他すべてについてはコピーされないものを再作成するを参照してください。
3

新しいアプリを公開する

新しいプロジェクトを公開します。独自のreplit.appWebアドレスと、独自の空の本番データベースが作成されます。まだカスタムドメインは接続しないでください。
4
以下のデータベースをコピーするに従い、新しいプロジェクトの本番データベースをターゲットとして使用します。これにより、テストできる実際のデータが得られます。ステップ3では、このコピーを最新のデータに置き換えます。
5
新しいアプリをreplit.appアドレスで開き、ユーザーと同じように使用します。先に進む前に、不具合があれば修正してください。この時点ではまだユーザーに影響はありません。

ステップ3:ユーザーを新しいアプリに切り替える

これがダウンタイムのある部分です。一度の作業でまとめて行ってください。
1

古いアプリをオフラインにする

古いプロジェクトでPublishingツールを開き、Unpublishを選択します。アプリはこれでオフラインになります。この時点から誰も新しいデータを追加できないため、次に作成するコピーは完全なものになります。
2

データベースを最後にもう一度コピーする

以下のデータベースをコピーするに従い、新しいプロジェクトの本番データベースをターゲットとして使用します。このコピーには最新のすべてのデータが含まれます。
3

Webアドレスを新しいアプリに向ける

アプリがカスタムドメインを使用している場合:古いプロジェクトでPublishing → Domainsを開き、ドメインを切断します。新しいプロジェクトでPublishing → Domainsを開き、接続します。Replitから求められた場合は、ドメインプロバイダー(例:GoDaddyやNamecheap)でレコードを更新してください。新しいアドレスが全員に反映されるまで数分から数時間かかることがあります。それまでの間、一部の訪問者にはエラーが表示される場合があります。アプリがreplit.appアドレスのみを使用している場合は、代わりに新しいアドレスをユーザーに共有してください。
4

新しいアプリが稼働していることを確認する

Webアドレスを開き、新しいアプリがデータとともに読み込まれることを確認します。アプリはオンラインに戻りました。

データベースをコピーする

コードのコピーはデータベースに影響しません。データはPostgreSQLのpg_dumppg_restoreツールでコピーします。これらは両方のプロジェクトのShellで利用できます。ステップ2とステップ3はどちらもここを参照します。コマンドは毎回同じです。変わるのはターゲットだけです。
pg_dumpを実行した後に書き込まれたデータはコピーに含まれません。ステップ3の最終コピーでは、まず古いアプリをオフラインにしてください。
1

古いプロジェクトからデータをエクスポートする

古いプロジェクトでShellツールを開きます。次のコマンドを貼り付けてEnterキーを押します。これはファイルツリーにbackup.dumpというファイルを作成します:
これは開発データベースをエクスポートします。稼働中のデータは通常、代わりに本番データベースにあります。それをエクスポートするには:
  1. Databaseツールを開き、本番データベースを選択してSettingsを開きます。
  2. 接続文字列をコピーします。
  3. 上記のコマンドで、引用符を保持したまま"$DATABASE_URL"を接続文字列に置き換えます。
見つからない場合は接続の詳細を参照してください。
2

ダンプファイルを新しいプロジェクトに移動する

古いプロジェクトのファイルツリーで、backup.dumpの横の三点メニューを選択してダウンロードします。次に、ファイルツリーのUpload filesオプションを使って新しいプロジェクトにアップロードします。GitHub経由でコードをコピーした場合は、ダンプをコミットしないでください。データがリポジトリに入らないように、別途移動してください。
3

新しいプロジェクトでデータをインポートする

新しいプロジェクトでShellツールを開きます。次のコマンドを貼り付けてEnterキーを押します:
このままでは、新しいプロジェクトの開発データベースにインポートされます。これはステップ2で必要なものです。ステップ3の最終コピーでは、代わりに本番データベースが必要です。新しいプロジェクトでDatabaseツールを開き、本番データベースを選択してSettingsを開き、接続文字列をコピーして、"$DATABASE_URL"の代わりに使用してください。これはターゲットデータベース内の一致するオブジェクトを削除してから、データを読み込みます。出力なしで終了すれば成功です。
pg_restoreがロールまたはポリシーのエラーで失敗する場合、データベースは新しいプロジェクトにまだ存在しないカスタムPostgreSQLロールを使用しています。サポートに連絡してください。
新しいプロジェクトがレガシーNeon開発データベースを使用している場合、公開フローは現在の開発データで本番データベースをセットアップするオプションを提供します。これは、公開時点で開発データベースにあるものをコピーします。テストには適していますが、最終切り替えには上記の手順を使って最新のデータを取得してください。

コピーされないものを再作成する

プロジェクトの設定の残りはファイルシステムの外に存在します。各要素を新しいプロジェクトで再作成してください:

問題が発生した場合

古いプロジェクトはまだそこにあります。元に戻すには:
  1. 古いプロジェクトでPublishingツールを開き、Publishを選択します。
  2. カスタムドメインを移動した場合は、同じ方法で元に戻します。
アプリはオフラインにした時点のデータで再び稼働します。何も失われていません。

クリーンアップ

新しいアプリが正常に動作していることを確認するため、1週間ほど待ってください。その後:
  • 両方のプロジェクトとデバイスからbackup.dumpを削除してください。各コピーにはデータの完全なエクスポートが含まれています。
  • 必要に応じて、古いプロジェクトを削除してください。

関連リソース