PythonAnyWhere環境変数の設定

lecture

PythonAnyWhere環境変数の設定について解説です。
この内容は、PythonAnyWhereの参考ページを参考にしたものです。

今回の内容はDjangoをPythonAnyWhereの自動デプロイした環境での説明です。
PythonAnyWhereにデプロイ方法も参考にしてください。

スポンサーリンク

.envファイルの設定

.envファイルを作成して、ここにシークレットキーを登録します。
`abcdefg123456789abcdefghijklmn`はダミーのシークレットキーです。この部分に自分の本当のシークレットキーを入れます。
データベース情報も同様に記述します。

echo "export SECRET_KEY=abcdefg123456789abcdefghijklmn" >> .env

最終的に.envファイルは次のようになります。ダミーの値の部分に自分の情報を入れます。

export SECRET_KEY=abcdefg123456789abcdefghijklmn
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
タイトルとURLをコピーしました