【後編】【Django+Nginx+Gunicorn】アプリケーションをEC2へデプロイしよう

Linux

 

Djangoをサーバーへデプロイして、ブラウザからアクセスできるようにします。

後編では、ソースをアップロードして、
サーバーで動作するようになるまでをやってみます。

 

システムの概要やDjango・サーバーの下準備は前編でご紹介しています。

 

 

Djangoのソースをアップロードする

 

zipファイルにしたDjangoのソースをEC2へアップロードします

 

サーバーへファイルをアップロードするscpコマンド

 

筆者はTeratermを使用して、サーバーへec2-userでssh接続して、
zipファイルをTeratermのウインドウへドラッグ&ドロップします

すると、以下のウインドウが現れ、「OK」を押してアップロードします

 

 

ホームディレクトリとは??
サーバーにログインしたときの最初のディレクトリです。
おおよそ、「/home/<ユーザー名>/」 になります
 →今回は、/home/ec2-user になります。

 

zipファイルを解凍し、フォルダを移動させる

 

※ここからはrootユーザーに切り替えます。
 また、Djangoのプロジェクト名はdjango_practiceとします。

 

(実行手順)

  1. rootユーザーに切り替える
  2. zipファイルを解凍する
  3. 解凍したフォルダを /var/www/ へ移動する

 

(実行結果)

 

Pythonコマンドのエイリアスを設定する

 

ここで、Pythonのバージョンを確認します。

 

後のことを考えるとpythonのバージョンは3系のほうがいいので、
2系のバージョンの方はエイリアスを設定しましょう

 

Python のライブラリをインストールする

 

前編で作成したrequirements.txt を使用して、ライブラリをインストールします

 

PostgreSQLの設定をする

ライブラリをインストールする

 

DjnagoでPostgreSQLを使用するためのライブラリをインストールしましょう

 

Django用のPostgreSQLユーザー&DBを作成する

 

Djangoの下準備として、settings/production.py に記載したユーザーを作成します

私の場合は

に合うように設定していきます

 

 

DjangoのDBをマイグレーションする

 

 

–settings=django_practice.settings.production とは??

manage.pyにてデフォルトでsettings/dev.py を読み込むようにしているので、
意図的に settings/production.py を読み込むように指定しています

 

スーパーユーザーを作成する

 

 

ユーザー名とパスワードを一緒にしたので、怒られました…

もちろん、セキュリティ的にはだめですが、今回はこれでいきます

 

staticファイルを作成する

 

WEBサーバー(Nginx)に静的ファイルを管理させるために、
静的ファイルを1か所に集めます

 

(実行コマンド&結果)

 

STATIC_ROOTに指定したディレクトリに静的ファイルがコピーされたので、見てみましょう

 

 

Gunicornをインストールする

ライブラリをインストールする

 

 

Gunicornを使用してDjangoを起動する

 

 

ブラウザからアクセスしてみる

 

http://<パブリックIPアドレス or DNS>:8000/admin

にアクセスします

 

cssは後で効くようにするので、ご心配なく

一応、スーパーユーザーでログインしてみます。

 

 

ログインできました

 

 

ここで、いったん gunicornを Ctrl+c で停止しておきます

 

Djangoをサービスに登録する

 

ここでは3つのファイルを作成し、Djangoをサービス化します

  1. socketファイル
    Nginxとの接続設定を行うための設定ファイル
  2. gunicorn.conf.py
    gunicornの設定ファイル
  3. serviceファイル
    Djangoとの接続設定を行うための設定ファイル

 

socketファイル

 

/etc/systemd/system/<Djangoプロジェクト名>.socket を作成します

 

vi コマンドで socket ファイルを作ります

 

i を押して、INSERTモードにし、下記を記入します

 

EscキーでINSERTモードを抜け、「:wq!」で保存します。

cat コマンドでファイルの中身を確認します

 

gunicorn.conf.py

 

 

confファイル内のパラメータに関しては下記をご参考ください

 

serviceファイル

 

まず、whichコマンドgunicornコマンドのパスを調べます

 

筆者の場合は、/usr/local/bin/gunicorn でした

これをもとにserviceファイルを作成します

 

 

(serviceファイルのなかみ)

 

サービス化できているか確認する

 

 

(実行結果)

 

NginxがDjangoにアクセスするように設定

confファイルの作成

 

 

confファイルのなかみ

 

シンボリックリンクを作成する

 

先ほど作成したファイルのシンボリックリンクを
/etc/nginx/sites-enabled/ に貼ります

これになんの意味があるかというと、

/etc/nginx/sites-available/:Nginxのconfファイルを置いておく(読み込まない

/etc/nginx/sites-enabled/:ここにあるconfファイルを読み込む

なので、confファイルは /etc/nginx/sites-available/ に作成しておき、
読み込ませたいconfファイルをシンボリックリンクで制御します

 

 

/etc/nginx/sites-enabled/内のファイルを読み込ませる

 

 

これでNginxが/etc/nginx/sites-enabled/内のファイルを読み込むようになります

 

confファイルのテストをする

 

 

テストに成功したのでNginxとDjangoのアプリを再起動します

 

 

ブラウザからアクセスしてみる

 

http://<パブリックIPアドレス or DNS>/admin

にアクセスしてみます

 

 

管理画面が開き、ついでにcssも効いています

これで、デプロイ完了です

 

大変でしたが、Django以外の勉強になったので、よかったです!!

 

ソースの更新方法ややり残したことをおまけ編にまとめました

時間があれば、ご一読ください

【おまけ】【Django+Nginx+Gunicorn】アプリケーションをEC2へデプロイしよう
Djangoで作成したアプリをEC2へデプロイしてみました。 ↑の記事では、サーバーで動作するための最短手順を踏んだつもりです なので、やり残したこともおおくあります。。。 また、お...

 

参考文献

 

DjangoアプリでPostgreSQLを使う|設定方法の解説
DjangoのデータベースをpostgreSQL ポスグレへ変更する方法を一からお伝えします。ポスグレのインストールからDjango内での設定までこの記事だけで一発解決!「ポスグレを使いたい!」という方から「特にこだわりがない」方まで必見の内容です!
DjangoをNGINXとgunicornを使って動かすときの流れ整理(自分用メモ) - Qiita
はじめに勉強していて、DjangoをリモートホストにデプロイしたあとのNGINXとgunicronの設定回りがよくわからなくなったので、自分用にメモやりたいこと必要な作業の流れ1. NGIN…
【Django】Linuxサーバーへのデプロイ方法【NginxとGunicornを使う】
Djangoアプリをデプロイする手順とは? NginxとGunicornの使い方とは? 本記事ではこのような疑問を解決します。 Djangoアプリをデプロイする際に、簡単にできるのはHerokuなどのPaaS(Platform as a S
Running Gunicorn — Gunicorn 21.2.0 documentation

 

 

コメント

タイトルとURLをコピーしました