Djangoプロジェクトでメンテナンス表示

DjangoのWebアプリをメンテナンスしようと思います。

メンテナンスで一定期間使用不可となるので、ユーザ向けにメンテナンス画面を表示する必要があると思いますが、django-maintenance-modeを使うと便利です。

django-maintenace-modeを使ったメンテナンス画面表示について、解説します。

もちろん、よくある.htaccessで対応する方法もありますが、Djangoの場合今回紹介するdjango-maintenance-modeを使う方が楽かと思います。

メンテナンスモードの各種設定

django-maintenace-modeのインストール

まず、Djangoが稼働しているサーバに入って、下記コマンドでモジュールをインストールします。

pip install django-maintenance-mode

setting.pyの設定

続いて、Djangoのsetting.pyにdjango-maintenance-modeを登録していきます。

INSTALLED_APPSMIDDLEWAREにそれぞれ、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をお使いの方は、こちらの機能を使ってみてください。