【Django】デプロイ時に意識しておきたい論点メモ
こんにちは、ちくたっく(@tictak_py)です。
本記事は、DjangoでWebアプリケーションを作っている人向けに、デプロイ時の論点(よく出るエラーや対処法など)を備忘録としてまとめたものです。
自分が気付いたときに積み上げ形式で更新していこうと思うので、同じ環境でWebアプリケーションを個人開発している方がいれば、参考にしてみてください。久しぶりにサーバーさわったりすると、たまにエラー出てきて「ん?」ってなるので、その時のために自分も見返す記事にしていきます。
前提①|デプロイ時の環境
僕の基本的な環境は以下の通りです。
・ 使用フレームワーク : Django
・ サーバーOS : Linux(Ubuntu18.04)
・ Nginxとgunicornを使用
・ コード管理はgithub
前提②|基本的なデプロイの流れ
「そもそもゼロからどうやってデプロイするんだっけ?」ってなった時には以下サイト(英語)がオススメ
githubを使って個人開発する場合の流れは、以下記事が参考になるかと思います。
前提③|サーバーにアクセス前の注意点
当たり前ですが、自分が使っているサーバーやGitHub関連のユーザー名やパスワードは忘れないように、しっかりと管理しておくようにしましょう。
既に一度デプロイしていて、久しぶりにサーバーにバージョンアップしたコードをあげるような場合には、
gitのremoteコマンドを使って、紐づいているリポジトリを確認しておくと良いです。
僕の場合「git remote -v」のコマンドでまず全体像を確認するようにしてます。remoteコマンドの使い方は以下記事で紹介してます。
論点メモ①|追加したパッケージの未インストール
開発環境で色々と外部パッケージをインストールしていて、しばらくしてから本番環境に反映させた場合にたまにやりがちなエラーです。
本番環境のサーバー側で追加インストールすればOKですね。「開発⇔本番」はあまりタイムラグなく、定期的に更新した方がいいのかも。
論点メモ②|更新したデータベースの未反映
Djangoのモデル定義(models.py)でモデルを追加・変更・削除したのに、本番環境でデータベース反映をしていない時に生じるエラーです。
開発環境でデータベースをいじったら、
・ (本番環境で)python3 manage.py makemigrations
・ (本番環境で)python3 manage.py migrate
をし忘れていないか確認しましょう。
論点メモ③|gunicornやNginxのエラー状況確認
サーバーを触っていてよくあるのが、gunicornやNginxがうまく動作していない問題です。初めてのデプロイの時は、ハマりまくってツラかった記憶があります。。。
そんな時、僕がよく使っているコマンドを紹介しておきます。
<現在の状況を確認するコマンド>
・ sudo systemctl status gunicorn.socket
・ sudo systemctl status gunicorn.service
・ sudo systemctl status nginx
<Nginxのエラー原因を確認するコマンド>
・ sudo nginx -t
<gunicornのエラー原因(ログ)を確認するコマンド>
・ sudo journalctl -u gunicorn
あとはエラー原因を確認&特定して、個別に解決していきましょう。
とりあえず今回はここまで 。不定期&マイペースに更新していきます。