13.

本番環境へのdjangoのインストールとアプリのデプロイ(nginx編)

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

前提

・Webサーバーはnginxを使用します。

・本稿ではPython3.6をインストールします。(バージョンが違う場合は適宜読み替えて下さい)

・本稿ではVPS環境にてデプロイすることを想定しています。

・サーバーOSはCentOSを使用します。(OSが違う場合は適宜読み替えて下さい)

 

Python3のインストール

yum install -y https://centos7.iuscommunity.org/ius-release.rpm

yum install -y python36u python36u-libs python36u-devel python36u-pip

 

pipのアップグレード

pip3.6 install --upgrade pip

 

仮想環境の作成

pip3.6 install virtualenv

virtualenv sample_venv

上記のvirtualenvは任意のディレクトリにて実行してください。

 

Djangoのインストール

pip install django

※事前に「yum install python-devel」しておかないとエラーが発生する。

 

Djangoプロジェクトの作成

こちらに関しては任意のプロジェクトを用意してください。

djangoアプリの作成方法に関してはこちらのdjango全般に関する記事を参照してください。

サーバーの適当な場所にプロジェクトを配置して下さい。

本稿ではプロジェクト名は「sample」とします。

 

wsgiのインストール

pip install uwsgi

※wsgiとはnginxとdjangoを繋げるインターフェース

 

nginxのインストールと起動

インストール方法に関してはこちらを参照。

インストールが終わったら以下のコマンドを実行してnginxを起動する。

systemctl start nginx

 

wsgiのパラメータファイルを作成

プロジェクト直下に以下の内容のwsgiパラメータファイルを作成する。

ファイル名は「uwsgi_params」。

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

※内容は変更せずにそのままでよいです。

 

nginxの設定ファイルを作成

/etc/nginx/conf.d」にnginxの設定ファイルを作成する。

ファイル名は「sample_nginx.conf

upstream django {
    server 127.0.0.1:8001;
}

server {
    listen      80;
    server_name
sample.com;
    charset     utf-8;

    location /static {
        alias
/path/to/your/sample/static;
    }

    location / {
        uwsgi_pass  django;
        include    
/path/to/your/sample/uwsgi_params;
    }
}

※「/path/to/your/sample」周りや「server_name」などは環境に合わせて変更してください。

 

staticファイルの設定

staticファイルの場所をdjangoとnginxに設定する必要がある。

setting.pyに以下の記述を追加する。

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

更に以下のコマンドを実行する。

python manage.py collectstatic

 

wsgi起動ファイルの作成

プロジェクト直下に以下の内容で作成する。

ファイル名は「sample_uwsgi.ini

# sample_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           =
/path/to/your/sample
# Django's wsgi file
module          =
sample.wsgi
# the virtualenv (full path)
home            =
/path/to/sample_venv

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          =
127.0.0.1:8001
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

黄色の部分は環境に合わせて要修正

 

wsgiのインストール(仮想環境外)

deactivate

pip3.6 install uwsgi

wsgiは仮想環境外にも必要なので仮想環境を非アクティブにしてからインストールする。

 

Emperor modeの設定

Emperor modeを設定しておくことで設定ファイルの変更をリアルタイムで反映してくれる。

mkdir /etc/uwsgi

mkdir /etc/uwsgi/vassals

ln -s /path/to/sample/sample_uwsgi.ini /etc/uwsgi/vassals/

 

システム起動時にwsgiが自動で起動するように設定

/etc/rc.localに以下の文言を追記する。

/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid root --gid root --daemonize /var/log/uwsgi-emperor.log

※uidとgidはとりあえずrootにしているので適宜変更

 

以上で本番環境でdjangoアプリへアクセスできるようになります。

 

課題

socketを
    server 127.0.0.1:8001;
    ではなく
    server unix:///path/to/sample/sample.sock;
    を使いたい。
    上記で設定が抜けているのか何故か起動しない。
    後者の方がパフォーマンスが良いとのこと。

 

子ページ
子ページはありません
同階層のページ
  1. 環境構築とプロジェクト/アプリの作成
  2. MVC(MVT)のそれぞれの使い方と説明
  3. データベースへの接続と操作
  4. Django Administration
  5. git管理
  6. エラー一覧
  7. バージョンの確認方法
  8. ログ出力方法
  9. SQLのログ出力方法
  10. ログのローテート設定
  11. settings.pyの定数にアクセスする方法
  12. 本番環境へのインストールとアプリのデプロイ(apache編)
  13. 本番環境へのインストールとアプリのデプロイ(nginx編)
  14. djangoアプリの本番の開始URLを変更する
  15. 静的(static)ファイルの置き場所と読み込み(画像、css、js )
  16. CSRFトークンをAjaxで使用する方法
  17. ajaxの使用例(POST編)
  18. ファイルのアップロードとファイルの名前
  19. クイックスタート/チュートリアル
  20. ログイン機能
  21. テンプレート側のログイン判定
  22. ビュー側のログイン判定
  23. 管理者ユーザーの作成/判定と管理画面
  24. モデルのjson化とレスポンス
  25. runserverでポートを指定する方法
  26. cronによるバッチ実行
  27. テンプレートで利用する共通のcontextを定義する方法
  28. プログラムが本番サーバーで反映されない場合の対処法
  29. APIの作成
  30. cron用コマンド・ファイルの作成

最近コメントのあったページ

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。