
【72日目】HEROKUを使って本番公開!_プログラミング学び日記
このnoteは、31歳未経験からエンジニアを目指して勉強していく記録を綴っているものです。現在はAdTechでカスタマーサクセスを担当しつつ、色んなチャンスに恵まれ、CS業務や子育てと並行しながらチャレンジしています。
これからプログラミングを始める方にとってのTipsやモチベアップに繋げられるように頑張りたいと思っています。
--------------------------------------------
本日は、改めてエンジニアを目指す覚悟がしっかりできた日でした。
色々と整理がついて、この日記が100日を超えたら自己紹介でもしようかな。
さて、TODOアプリの深堀に少し飽きたので、以前に断念したチュートリアルにリベンジしてみました。Djangoで作ったアプリを、GitHubを経由して「HEROKU」という無料のAPサーバーで本番公開するものです。
通常、Webアプリがブラウザに返されるまでの流れは「Django↔APサーバー↔リバースプロキシ↔ロードバランサー↔ブラウザ」というイメージです。また、静的ファイルの表示はAmazon S3等を活用することが一般的みたいです(動的ファイルが得意なDjangoで静的ファイルを公開するのはオーバースペックなため)。
ちなみにロードバランサーもリバースプロキシも、サーバーへの負荷を分散させるための機能です(似た役割で違いが分かりにくかったので、ここは今後学んでいきます)。
HEROKUは上記のように複雑な本番公開の環境を、よりシンプルに実現できるようにしたサービスです。HEROKUを使うと「Dyno↔HEROKU↔ブラウザ」というシンプルな形で本番環境を構築できます。この「Dyno」の中に「Django + whitenoise ↔ APサーバー(gunicorn)」が入っています。
ユーザー数増などで負荷が増えると、このDynoを増やし、HEROKUがロードバランサー代わりに動いて負荷分散させる形のようです。
実装するうえで躓いたポイントは、HEROKUを使うためにWebアプリのプロジェクト直下に作成した「Procfile」です。このファイルには以下のコードを書きます。
web: gunicorn django_website.wsgi
私は当初、「web:」の後の半角スペースが抜けており、application errorが出て困りました。気が付くのに少し時間がかかりました。
以前はGitHubのところで躓いてしましたが、そこを丁寧に解決したことで今回は無事に成し遂げることができました。
明日も頑張りましょう!
これまで修了したコース等
【YouTube動画】
Pythonでウェブサービスを作ろう! #1
テンプレートをマスターしよう! #2
静的ファイルを配信しよう !#3
本番公開しよう! #4
データベースと接続しよう! #5
【Paiza】
Aランクレベルアップメニュー 24/49問
ループメニュー1 20/20問
ループメニュー2 8/20問
配列メニュー 51/64問
条件分岐メニュー 25/25問
二重ループメニュー 19/19問
配列活用メニュー 26/26問
文字列処理メニュー 30/30問
Bランクレベルアップメニュー 62/62問
Cランクレベルアップメニュー 30/30問
ランクB合格
ランクC合格
【書籍/ブログ】
Django入門 | 初心者でも1時間でWebアプリ(Todoアプリ)を作成するコース
基礎からのMySQL 514/514頁
Web技術の基本 189/189頁 ※2周目中
京大のPython教科書 116/201頁
Pythonデータベースプログラミング 194/194頁
Pythonエンジニアファーストブック読了
【Progate】
Python Ⅰ~Ⅴ
Python アプリ版 コースⅠ~Ⅴ
SQL Ⅰ~ Ⅳ
SQL アプリ版 コースⅢ
HTML&CSS 初級編
【その他】
Pythonの環境構築
VSCodeの環境構築
MySQLの環境構築(MAMP)
Git / GitHubの環境構築
HEROKUの環境構築