概要
DjangoアプリをGitHubで管理していて、公開リポジトリにしたかったのですが、一番最初のコミットからSECRET_KEYをコミットしていました。(この時点では非公開)
また、複数のコミット歴があるので、どのように処理すればいいかわからず、①最初からやり直す
、②履歴の書き換え
を考えていました。
今回はそれ以外の方法で解決できたので、その方法を書いてみます。
なお、環境はpython 3.7.3
、django 2.2
になります。
1. local_settings.py設定
1-1. local_settings.py作成
まずは下記のコマンドを実行しlocal_settings.py
を作成してください。
※settings.pyと同じディレクトリに作成
$ touch local_settings.py
1-2. SECRET_KEY削除
settings.py
にあるSECRET_KEY
を削除します。
SECRET_KEY = 'こちらにご自身のSECRET_KEYが記載されている' #行ごと削除
1-3. settings.py設定
local_settings.py
を読み込むため、下記を追加してください。
try:
from .local_settings import *
except ImportError:
pass
2. SECRET_KEYの再生成
2-1. get_random_secret_key.py作成
settings.py
と同じディレクトリにget_random_secret_key.py
を作成し、下記を追加してください。
from django.core.management.utils import get_random_secret_key
secret_key = get_random_secret_key()
text = 'SECRET_KEY = \'{0}\''.format(secret_key)
print(text)
2-2. 再生成する
プロジェクトフォルダー
にディレクトリを移動し、下記を実行します。
※プロジェクトフォルダーはsettings.pyやwsgi.pyがあるフォルダー
実行後に新しいSECRET_KEY
が生成されます。
$ python get_random_secret_key.py
SECRET_KEY = 'こちらにSECRET_KEYが生成されます'
2-3. SECRET_KEY変更
local_settings.py
に新しいSECRET_KEY
を追加します。
SECRET_KEY = 'こちらに新しく生成されたSECRET_KEYを記入' #追加
3. GitHubにプッシュ
3-1. .gitignore作成
プッシュする前に.gitignore
を作成して、local_settings.py
を記載します。
下記のコマンドを実行してください。
※.gitignoreを作成済みであれば、追加でファイルを記載してください
$ echo local_settings.py > .gitignore
3-2. プッシュする
下記コマンドでGitHubにプッシュします。
$ git add -A #全部コミットしたい場合
$ git add local_settings.py settings.py .gitignore #ファイルを指定したい場合は、こちらでもok
$ git commit -m "SECRET_KEY変更" #"コメントはご自由に変更してok"
$ git push origin master #origin, masterは各々の設定にしてください
3-3. 完成
これで、①SECRET_KEYを新しくし
、②GitHubから見えないようにする
ことができました。
4. まとめ
処理を図にまとめてみました。
5. 参照
- Djanjo公式ドキュメント | SECRET_KEY
- GitHub | Django utils.py
- DjangoのSECRET_KEYをバージョン管理対象外にする
- DjangoアプリをHerokuにデプロイする方法
以上