Django python Django python WEB開発 非エンジニア向け

【Django】デプロイ時に意識しておきたい論点メモ

こんにちは、TAK(@tak_vectorium)です。

本記事は、DjangoでWebアプリケーションを作っている人向けに、デプロイ時の論点(よく出るエラーや対処法など)を備忘録としてまとめたものです。

自分が気付いたときに積み上げ形式で更新していこうと思うので、同じ環境でWebアプリケーションを個人開発している方がいれば、参考にしてみてください。

TAK
TAK

久しぶりにサーバーさわったりすると、たまにエラー出てきて「ん?」ってなるんだよね。そんな時に(自分も)見返す記事にしていきます。

前提①|デプロイ時の環境

僕の基本的な環境は以下の通りです。
・ 使用フレームワーク : Django
・ サーバーOS : Linux(Ubuntu18.04)
・ Nginxとgunicornを使用
・ コード管理はgithub

前提②|基本的なデプロイの流れ

「そもそもゼロからどうやってデプロイするんだっけ?」ってなった時には以下サイト(英語)がオススメ

How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 18.04 | DigitalOcean
Django is a powerful web framework that can help you get your Python application or website off the ground. Django includes a simplified development server for ...

githubを使って個人開発する場合の流れは、以下記事が参考になるかと思います。

TAK
TAK

ここらへんの内容は、何度も繰り返して体で覚えるのがオススメ

前提③|サーバーにアクセス前の注意点

当たり前ですが、自分が使っているサーバーやGitHub関連のユーザー名やパスワードは忘れないように、しっかりと管理しておくようにしましょう。

既に一度デプロイしていて、久しぶりにサーバーにバージョンアップしたコードをあげるような場合には、
gitのremoteコマンドを使って、紐づいているリポジトリを確認しておくと良いです。

TAK
TAK

僕は「git remote -v」のコマンドでまず全体像を確認してるよ。

remoteコマンドの使い方は以下記事で紹介してます。

論点メモ①|追加したパッケージの未インストール

開発環境で色々と外部パッケージをインストールしていて、しばらくしてから本番環境に反映させた場合にたまにやりがちなエラーです。

TAK
TAK

本番環境のサーバー側で追加インストールすればOKですね。

「開発⇔本番」はあまりタイムラグなく、定期的に更新した方がいいのかも。

論点メモ②|更新したデータベースの未反映

Djangoのモデル定義(models.py)でモデルを追加・変更・削除したのに、本番環境でデータベース反映をしていない時に生じるエラーです。

開発環境でデータベースをいじったら、
・ (本番環境で)python3 manage.py makemigrations
・ (本番環境で)python3 manage.py migrate

をし忘れていないか確認しましょう。

論点メモ③|gunicornやNginxのエラー状況確認

サーバーを触っていてよくあるのが、gunicornやNginxがうまく動作していない問題です。

TAK
TAK

初めてのデプロイの時は、ハマりまくってツラかった記憶があります。。。

そんな時、僕がよく使っているコマンドを紹介しておきます。


<現在の状況を確認するコマンド>
・ sudo systemctl status gunicorn.socket
・ sudo systemctl status gunicorn.service
・ sudo systemctl status nginx

<Nginxのエラー原因を確認するコマンド>
・ sudo nginx -t

<gunicornのエラー原因(ログ)を確認するコマンド>
・ sudo journalctl -u gunicorn


あとはエラー原因を確認&特定して、個別に解決していきましょう。

TAK
TAK

とりあえず今回はここまで 。

不定期&マイペースに更新していきます~