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