DjangoのWebアプリをメンテナンスしようと思います。
メンテナンスで一定期間使用不可となるので、ユーザ向けにメンテナンス画面を表示する必要があると思いますが、django-maintenance-modeを使うと便利です。
django-maintenace-modeを使ったメンテナンス画面表示について、解説します。
もちろん、よくある.htaccessで対応する方法もありますが、Djangoの場合今回紹介するdjango-maintenance-modeを使う方が楽かと思います。
Contents
メンテナンスモードの各種設定
django-maintenace-modeのインストール
まず、Djangoが稼働しているサーバに入って、下記コマンドでモジュールをインストールします。
pip install django-maintenance-mode
setting.pyの設定
続いて、Djangoのsetting.pyにdjango-maintenance-modeを登録していきます。
INSTALLED_APPS と MIDDLEWAREにそれぞれ、1行ずつ追加します。
INSTALLED_APPS = [
'maintenance_mode',
]
MIDDLEWARE = [
'maintenance_mode.middleware.MaintenanceModeMiddleware',
]
メンテナンス中は、下記の動作を実現したいので、そのための設定を追記します。
- adminページを使えるように。
- スーパーユーザは通常ページを表示できるように。
MAINTENANCE_MODE_IGNORE_ADMIN_SITE = True #adminページ使用可 MAINTENANCE_MODE_IGNORE_SUPERUSER = True #スーパユーザは通常ページ使用可
メンテナンスページのHTMLを用意します
Djangoプロジェクト内の、templatesフォルダ直下に
503.htmlというファイル名でファイルを作ります。
内容は、メンテナンスをお知らせする内容で作成しておいてください。
メンテナンスモードに切り替え
サーバに入って
# python manage.py maintenance_mode on
これで、メンテナンスモードに切り替わります。
Webアプリにアクセスしてみてください。先程作成した、503.htmlの内容が表示されていますでしょうか?
そして、URLをadminページのURLに変更して、adminページにアクセス。
そして、スーパユーザのアカウントでログインしてください。
ログイン後、再度Webアプリにアクセスしてみてください。今度は、Webアプリがいつもどおり表示されたでしょうか?
ちなみに、メンテナンスモードをOFFにする場合は、
# python manage.py maintenance_mode off
とても便利です。
是非、Djangoをお使いの方は、こちらの機能を使ってみてください。