Migrate heroku to vps

2023-06-15 heroku linux

HerokuにホスティングしているサービスをVPSに移す際の手順メモです。社内のプロジェクト向けに一般化してますが、本来の意味での一般化には程遠い限られた構成にしか適用できないと思います。

事前準備

設定

toolboxリポジトリ(LM管理)にて必要な設定ファイルを記載します。

DNS:

cd  hosts
rake zone

配備先のサーバに空のgitリポジトリを作成します。

cd repos && git init --bare myapp.git

配備対象のプロジェクトに作成したリポジトリを追加します。

git remote add productin user@git.lmlab.net:repos/myapp.git

このリポジトリにpushを行うことで配備が可能です。

git push production

hookを手動で実行することもできます。

ssh git.lmlab.net "cd repos/myapp.git && ./hooks/post-update refs/heads/main"

Herokuのデータベースを取得するには以下のコマンドが使えます。

heroku pg:backups:capture
heroku pg:backups:download

復元は以下のように行います。(要調査?いくつか警告が出ているが問題ない?)

pg_restore --clean --no-acl --no-owner -d myapp_database latest.dump

バックアップの対象に新しいデータベースを加えるのも忘れずに。

新しいドメイン用にSSL証明書を取得。ここが唯一こなれていない箇所で、既存のサービスを移設する場合、どうしてもダウンタイムが発生します(新しいIPに貼り替えてからでないと取得できないため…)。

sudo certbot -d myapp.com

設定ファイルの書き換えは手前のプロセスで済んでいるのでスキップします。

sudo a2ensite (設定ファイル名)

実際にApacheを再起動する前に、以下のコマンドでチェックを行います。 エラーが出たら手前の処理を見直してください。

sudo apachectl configtest