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


コメントを投稿するにはログインしてください。