search
LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Organization

Swift Vapor + Heroku で 本番環境やステージング環境を分けて用意できるようになる

概要

Swiftのvaporを利用し始め、herokuにデプロイしてアプリを動かせるようになりました!
そこで、本番環境とかステージング環境とかどうやって分けて運用するんだろうと思い、調べたら意外とさくっといけたのでメモ書きを記事にしてみました。

オチもなければ、説明も雑ですがメモベースということで許していただけると幸いです。。。

前提

  • vaporで作成したプログラムがある or vaporの概要は知ってる or vaporの話も調べながら進められる
  • homebrew がインストール済み
  • herokuの概要はあらかた知ってる or herokuの話も調べながら進めれる

参考文献

手順(基本は上記の「参考文献」参照)

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

Herokuアプリで定められたURLにアクセス、Webページが表示されたらOKです!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2