概要
Swiftのvaporを利用し始め、herokuにデプロイしてアプリを動かせるようになりました!
そこで、本番環境とかステージング環境とかどうやって分けて運用するんだろうと思い、調べたら意外とさくっといけたのでメモ書きを記事にしてみました。
オチもなければ、説明も雑ですがメモベースということで許していただけると幸いです。。。
前提
- vaporで作成したプログラムがある or vaporの概要は知ってる or vaporの話も調べながら進められる
- homebrew がインストール済み
- herokuの概要はあらかた知ってる or herokuの話も調べながら進めれる
参考文献
- vapor Deploy Heroku
- Managing Multiple Environments for an App
- Herokuに本番環境とステージング環境を構築する(Rails5、MySQL5.7)
手順(基本は上記の「参考文献」参照)
1. homebrewのインストール
brew install heroku/brew/heroku
2. vaporのディレクトリに移動(helloというアプリを作っていた場合)
cd hello
3. herokuのログイン
heroku login
heroku auth:whoami
4. gitのリポジトリ初期化
とりあえず初期化して、masterブランチ用意してコミットを終わらせときましょう
git checkout master
git add .
git commit -m "first commit"
5. 各環境向けHerokuアプリの作成(ステージング:staging、本番環境:production)
Heroku上で作成するアプリの名前はそれぞれ、vapor-staging(ステージング環境)・vapor-production(本番環境)とします。
5.1 ステージング環境用のHerokuアプリ作成
heroku create vapor-staging --remote staging
5.2 本番環境用のHerokuアプリ作成
heroku create vapor-production --remote production
ここから先、各環境ごとに設定を変えたい場合はherokuコマンドの末尾に--remote staging
や--remote production
をつけます。
6. Buildpackの設定
Herokuのサーバ上でSwiftのvaporを起動させるための設定をします。
6.1 ステージング環境に設定
heroku buildpacks:set vapor/vapor --remote staging
6.2 本番環境に設定
heroku buildpacks:set vapor/vapor --remote production
7. Swiftバージョンを設定
.swift-version
ファイルがあればOK。
以下のコマンドを打ちましょう(5.1.3の部分は利用したいSwiftのバージョンにする)
echo "5.1.3" > .swift-version
8. Procfileの用意
起動するためのコマンドをProcfile
に定義しときます。
以下のコマンドを打ちましょう。
echo "web: Run serve --env production" \
"--hostname 0.0.0.0 --port \$PORT" > Procfile
9. Herokuへのデプロイ
Herokuのアプリが指定するリモートリポジトリにプッシュしたら、
デプロイまで自動で動いてくれます(便利!)
9.1 ステージング環境にデプロイ
git push staging master
6.2 本番環境にデプロイ
git push production master
エラーが出てなければ、OK
10. プロセス数の指定
各環境で実際に稼働するプロセス数(≒インスタンス数)を指定する。
デプロイが終わっても、この設定をしないと実際に稼働しません。
10.1 ステージング環境に設定
heroku ps:scale web=1 --remote staging
10.2 本番環境に設定
heroku ps:scale web=1 --remote production