383
386

最も低コストでプロダクトを公開したい

Last updated at Posted at 2020-02-20

はじめまして。
普段はWebサービスの開発とかしてます。

はじめに

彡(゚)(゚)「サービスを作って公開してみたいなあ〜」
彡(゚)(゚)「けど、レンタルサーバー借りるの手間だし...」
彡(゚)(゚)「サーバー代払いたくないなあ...」

こんな気持ちになったことありませんか?
きっとあるはずです。

そんなときはHeroku 無料プランを使いましょう。
本記事では、作ったアプリケーションをHerokuの無料プランで公開する方法について書きます。

▷ Heroku公式サイトはこちら

無料プランって何が出来るのん?

大体のことは出来ます。
サーバーにアプリケーションをデプロイして運用するくらいなら問題なく使えます

Herokuの無料プランで気にすべき制約は以下の二つです。

  • 無料 Dyno 時間(稼働時間)が 550 時間/月
  • 30分アクセスが無いとアプリがスリープしてしまう

無料 Dyno 時間(稼働時間)が 550 時間/月

Herokuの無料プランはデフォルトのままだと月に550 時間分の Dyno 時間しか与えられません。

30 日 × 24 時間 = 720 時間 なので、1ヶ月フル稼働させようとすると無料プランでは足りません。

ただ、これはクレジットカードを持っていれば解決できます

無料プランでもクレジットカードをアカウントに登録すると
450 時間/月 の 無料 Dyno 時間が加算され、合計 1,000 時間/月 まで使えるようになります。

30分アクセスが無いとアプリがスリープしてしまう

無料プランでは 30分アクセスが無いとアプリがスリープしてしまい、
次回アクセス時にアプリが立ち上がる時間分、レスポンスが遅く なってしまいます。

ただ、これは Heroku Scheduler で解決できます。

Heroku Scheduler とは、指定したコマンドの定期実行を可能にする機能です。
Linuxのcronのようなものですね。

Heroku Scheduler でアプリのURLに対してcurlコマンドを実行することで
アプリを落とすことなく稼働し続けることが出来ます。

▷ Heroku Scheduler の設定方法はこちらの記事にまとめました。

サーバーへのデプロイ方法

※ 当記事はDjangoプロジェクトのデプロイを前提にしています。
※ Railsプロジェクトの場合、Gemfile修正などの手順が必要になりますが、実行するHerokuコマンドは同じです。

1. 必要なライブラリのインストール

プロジェクトがHeroku上で稼働するために必要なライブラリをインストールします。

pip install gunicorn django-heroku

2. 実行環境ファイルの追加

プロジェクトの実行環境をHerokuに伝えるファイルをプロジェクトディレクトリ直下に作成します。

runtime.txt

Pythonバージョンを記載するファイルです。

runtime.txt
python-3.6.6

Procfile

Herokuプロセスの起動コマンドを記載するファイルです。
<your-project-name>は自身のプロジェクト名に読み替えて下さい。

Procfile
web: gunicorn <your-project-name>.wsgi --log-file -

requirements.txt

依存パッケージのリストを記載します。
pip freezeコマンドの出力結果をそのままファイルにしましょう。

コマンドライン
pip freeze > requirements.txt

3. プロジェクトの設定ファイルの修正

settings.pyDEBUG = Tureの部分を本番運用向けに変更します。

your-project/settings.py
DEBUG = False

4. Gitでコミット

Gitでローカルリポジトリの作成 & コミットを行います。

git init                                
git config user.name "Your Name"        
git config user.email you@example.com   
git add .                            
git commit -m "first commit"     

5. Herokuコマンドでデプロイ

HerokuコマンドでHerokuにデプロイします。
heroku loginコマンド実行時にブラウザが立ち上がり、Herokuの認証を求められます。
ログインした後、ブラウザを落とさずにターミナルに戻ると後続の作業が行えます。

heroku login
heroku create <your-app-name>
git push heroku master
heroku ps:scale web=1
heroku run python manage.py migrate

さいごに

一人でも多くのエンジニアが自身のプロダクトを世界に公開出来ることを願っております。

383
386
0

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
  3. You can use dark theme
What you can do with signing up
383
386