自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【Django】settings.pyのSECRET_KEYを再発行(リジェネレート)する【alias登録で即生成・即実装からの再起動】

thumbnail

うっかり、SECRET_KEYをバージョン管理対象に含ませてしまった。このままではクラウドサーバーにデプロイしたSECRET_KEYが予測され、CSRFトークン等が機能不全になってしまう。

そんな時に備えておきたい、SECRET_KEYの再発行の方法を解説する。

ソースコード

Qiitaより拝借。

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)

実行すると、

SECRET_KEY = '07y^y0#_7b74jy)d6z0lu5*r$#azfyt1*1f+g1-3w+l@&hs^2!'

等の文言が出てくる。

aliasに登録して、どこでも再発行できるようにする。

~/.bashrcaliasに登録して、いつでもどこでも再発行できるようにする。

alias regenedjangokey='python3 [パス]/seckey_regene.py'

再読込。以降はdjangoseckeyで再発行ができる。

source ~/.bashrc 

注意点として、virtualenvを使ってDjangoをインストールし、OSに直にインストールしていない場合、このaliasは通用しない。(djangoが無いと言われる。)

Ubuntuの環境に直にインストールすると解決する。

sudo pip3 install django 

結論

既にデプロイしているDjangoにSECRET_KEYを書き換えた後はsettings.pyを再読込させるため、nginxとdjangoサービスを再起動させる必要がある。

sudo systemctl restart nginx [djangoサービス]

xselコマンドのxsel --clipboard --inputも組み合わせることで、生成したSECRET_KEYをクリップボードに即コピーすることもできる。後は問題の箇所に貼り付けるだけ。

alias regenedjangokey='python3 [パス]/seckey_regene.py | xsel --clipboard --input'

他にも、sedコマンド等を使うことで、デプロイ運用中のDjangoのsettings.pyに再生成したSECRET_KEYを書き込むこともできる。実行した後にsystemctlを使ってNginxとDjangoのサービスを再起動すれば、丸ごと1つのコマンドで即解決できる。

[sedコマンドもセットにして、直接settings.pyに書き込みをするコマンド]
sudo systemctl restart nginx [djangoサービス]
スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ