前の記事からの続きです。
https://wp.netplan.co.jp/archives/4146
settings.py
DEBUG = 'RENDER' not in os.environ
SECRET_KEY = os.environ.get('SECRET_KEY')
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS')
RENDER_EXTERNAL_HOSTNAME = os.environ.get('RENDER_EXTERNAL_HOSTNAME')
if RENDER_EXTERNAL_HOSTNAME:
ALLOWED_HOSTS.append(RENDER_EXTERNAL_HOSTNAME)
環境変数にRENDERが定義されていたら DEBUG=False にする。
ALLOWED_HOSTSにRENDER_EXTERNAL_HOSTNAMEを追加する。
Render側のデータベース PostgreSQL に合わせてローカル環境に PostgreSQL をインストールします。
https://docs.render.com/deploy-django#adding-postgresql-support
pip install dj-database-url psycopg2-binary
pip freeze > requirements.txt
brewを使って PostgreSQL をインストール(MacOS)
https://qiita.com/sakana_gao/items/999bbb1cad90dc35a8b4
PostgreSQLサービスを起動
brew services start postgresql
データベースを作成
CREATE DATABASE postgresdb;
CREATE USER postgres WITH PASSWORD 'postgres';
ALTER ROLE postgres SET client_encoding TO 'utf8';
ALTER ROLE postgres SET default_transaction_isolation TO 'read committed';
ALTER ROLE postgres SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE postgresdb TO postgres;
settings.pyを編集
'default': dj_database_url.config(
default='postgresql://postgres:postgres@wp.netplan.co.jp:5432/postgresdb',
マイグレーション
https://docs.render.com/deploy-django#updating-an-existing-django-project
pip install 'whitenoise[brotli]'
pip freeze > requirements.txt
settings.pyにwhitenoiseを追加
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
build.shを作成(下記の内容を貼り付け)
# Modify this line as needed for your package manager (pip, poetry, etc.)
pip install -r requirements.txt
# Convert static asset files
python manage.py collectstatic --no-input
# Apply any outstanding database migrations
build.shの実行を可能にする。
gunicorn, uvicornをインストール
pip install gunicorn uvicorn
pip freeze > requirements.txt
ローカルで起動してみる。
python -m gunicorn myrender.asgi:application -k uvicorn.workers.UvicornWorker
https://docs.render.com/deploy-django#deploying-to-render
buildCommand: "./build.sh"
startCommand: "python -m gunicorn myrender.asgi:application -k uvicorn.workers.UvicornWorker"
property: connectionString
上記の中で DATABASE_URL, SECRET_KEY はRender側から提供されます。
https://docs.render.com/databases#create-your-database
RenderのdashboardからPostgreSQLデータベースを作成します。
Freeプランを選択
データベースを作成すると Internal Database URL の値で環境変数 DATABASE_URL が自動生成されます。
BlueprintのResourcesで対象のサービスをクリック。
Environmentメニューを開く。

画面下の方の
Linked Environment Groups
Environment groups are collections of environment variables and secret files that you can share across multiple services.
ここで作成したEnv Groupをサービスにリンクする。

GitHubリポジトリに接続します。

blueprintのプロジェクト名を入力して Apply をクリックすると、
*.onrender.com のようなURLで公開されます。