PythonAnyWhere環境変数の設定について解説です。
この内容は、PythonAnyWhereの参考ページを参考にしたものです。
今回の内容はDjangoをPythonAnyWhereの自動デプロイした環境での説明です。
PythonAnyWhereにデプロイ方法も参考にしてください。
.envファイルの設定
.envファイルを作成して、ここにシークレットキーを登録します。
`abcdefg123456789abcdefghijklmn`はダミーのシークレットキーです。この部分に自分の本当のシークレットキーを入れます。
データベース情報も同様に記述します。
echo "export SECRET_KEY=abcdefg123456789abcdefghijklmn" >> .env
最終的に.envファイルは次のようになります。ダミーの値の部分に自分の情報を入れます。
export NAME=abc$defg
export USER=abcde
export PASSWORD=ABcdef12345
export HOST=abcde.mysql.pythonanywhere-services.com
python-dotenvのインストール
python-dotenvが.envファイルを読み込んでくれるようです。
仮想環境でWebアプリを作成していたら、仮想環境にactivateします。
pythonanywhereでの仮想環境への入り方は次のようにします。
[my-virtualenv-name]に実際の仮想環境名を入れます。
workon [my-virtualenv-name]
python-dotenvのインストール
pip install python-dotenv
必要なら、requirements.txtを作成しておきます。
echo python-dotenv >> requirements.txt
wsgi.pyの編集
これは、自分が用意していたwsgi.pyではありません。
pythonanywhereのダッシュボードからグローバルメニュの「Web」を開いて「Code:」の中の
WSGI configuration file:の横にリンクがありますのでそこをクリックして開いたページで編集します。(参考画像赤枠内)
次の内容は必ず`application = get_wsgi_application()`の上に書きます。
wsgi.py
import os from dotenv import load_dotenv project_folder = os.path.expanduser('~/[アカウント名].pythonanywhere.com/[プロジェクト名]/') # adjust as appropriate load_dotenv(os.path.join(project_folder, '.env'))
最終的には次のようになります。
import os import sys from dotenv import load_dotenv # Add your project directory to the sys.path settings_path = '/home/[アカウント名]/[アカウント名].pythonanywhere.com' sys.path.insert(0, settings_path) # Set environment variable to tell django where your settings.py is os.environ['DJANGO_SETTINGS_MODULE'] = '[プロジェクト名].settings' project_folder = os.path.expanduser('~/[アカウント名].pythonanywhere.com/[プロジェクト名]/') # adjust as appropriate load_dotenv(os.path.join(project_folder, '.env')) # Set the 'application' variable to the Django wsgi app from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
settings.pyの設定
隠したい情報は基本的にsettings.pyの内容です。
settings.py
SECRET_KEYの設定
import os SECRET_KEY = os.getenv("SECRET_KEY")
DATABASESの設定
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.getenv("NAME"), 'USER': os.getenv("USER"), 'PASSWORD': os.getenv("PASSWORD"), 'HOST': os.getenv("HOST"), 'PORT': '', } }
環境変数の適用
最後の次のコマンドを実行します。
set -a; source ~/[アカウント名].pythonanywhere.com/[プロジェクト名]/.env; set +a
コメントを投稿するにはログインしてください。