今に始まったことではありませんが、個人開発者の味方Herokuが無料で使えなくなったことで、同様の価格帯・スペックでテスト用・POC用に利用可能なRender.comに乗り換えた方も多いのではないでしょうか?私もついに重い腰を上げてRender.comを試してみたのでデプロイまでの方法まとめておきます。
Render.comではSSH接続・ShellはFreeプランでは利用できません。そのため、本記事によってデプロイはできても利用ができません(申し訳ありません!!)。有償に切り替えるかデプロイ前にDjangoのSuperuserを作成しておく必要があります。前者については有償利用に切り替えるだけですが、後者については本記事に記載はないので予めご了承ください。。
デプロイは以下の手順で実施していきます。
※ちなみに、公式ドキュメントを見るとパッケージ管理ツールにpip
ではなくpoetry
を使っていますが、pip
でも問題なくデプロイできました。
2023年6月時点では、GitHub・GitLab・Google・Emailでのアカウント作成ができるようです。今回私はGitLabのプロジェクトをデプロイを利用したいのでGitLabを選択しました。省略しますがメール認証・パスワード設定等をしてアカウント作成完了です。
Render.comにデプロイするには既存ファイルの変更、新ファイルの作成が必要になります。新ファイルは全てルートディレクトリに作成します。以下、+が新ファイル、▲が変更ファイルになりますが、下の順番で作成していくとスムーズにいくと思います。
まずはsettings.pyの修正をしていきましょう。
省略されているコードが複数箇所ありますが、変更部分は「#(追加)」とコメントアウトしている部分になります。
DBの設定部分についてはHerokuでも同様なので、Herokuから移行する場合には追記しなくでも大丈夫だと思います。
また、WhiteNoise
はDjango REST Frameworkでは不要かもしれませんが(未検証)、公式ドキュメント通り一応設定してみています。
次に、ローカルでインストールしたパッケージを本番環境でも利用するために、パッケージをリスト化したrequirements.txt
ファイルを作成します。
本当はもっと多くのパッケージをインストールしていますが、紛らわしいので省略してしまっています。ただし、settings.py
ファイル修正時に追加したパッケージ(whitenoise
, psycopg
, gunicorn
等)については必ずインストールが必要です。
requirements.txt
ファイルは以下のコマンドを実行することで作成可能です。
pip freeze > requirements.txt
次に+build.sh
ファイルを作成します。デプロイ時に実行されるコマンドを記述したファイルです。
通常ローカルでも利用するコマンドなので説明は省略しますが、ここでは上で作成したrequirements.txt
をインストールしているのがポイントです。
最後にRender.comにおける環境を設定するrender.yaml
ファイルを作成しましょう。
ここまで上記で設定してきた内容を反映していることが分かりますね。
Herokuの場合はUSとEuropeから選択できますが、Render.comではSingaporeも選択肢にあるのが大きな違いですね。
また、上のようにenvVars
に値を入力すると、デプロイ時に環境変数を手動でセットしなくても自動で設定してくれるので便利です。
必要なファイルが作成できたらダッシュボード画面にいき、下の画像のようにヘッダーにある"New"から"Web Service"を選択します。"Configure account"(画面右側中央部)からGitLabと接続しましょう。GitLabとの接続が完了したら画面中央部に接続可能なリポジトリが表示されるので、該当のプロジェクトを「Connect』ボタンをクリックして接続させます。
上で「Connect」ボタンをクリックすると下のような画面に遷移します。
ここから"Name"にrender.yaml
ファイルで入力したプロジェクト名を転記、他の項目も必要であれば変更を加えていき(ほぼ変更不要だと思います)、ページ最下部の「Create Web Service」を押すと、下のようにデプロイが走ります(画像では途中でキャンセルしています※なお、赤い網掛け部分にはGitLabのリポジトリのパスが表示されています)。
下の画像のように、左ナビゲーションの"Events"から青緑色の雲マークが表示されればデプロイ完了です。あとはDjangoのSuperuserを作成して、、という流れですが、冒頭記載の通りFreeプランではShellが使えないので、よろしければこちらの記事を参考にされると良いかもしれません。
よろしければこちらの記事も参考にしてみてください。
Loading...