LoginSignup
7
10

More than 5 years have passed since last update.

Django + nginx + uwsgi でアプリを動かす

Last updated at Posted at 2017-09-28

Python,Django,nginxはインストール済みの前提で書きます。
基本Djangoとuwsgiのチュートリアルに沿った事しかやりませんが、
途中でいろいろつまづいたことを中心に書いておきます。

Djangoチュートリアル
https://docs.djangoproject.com/ja/1.11/intro/tutorial01/

uwsgiチュートリアル
http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

virtualenvの設定とDjangoのインストール

まずはuwsgiチュートリアルのいうとおりに、
virtualenvの設定とvirtualenvにDjangoをインストールする。

ここで注意したいのがmysiteという命名は表面上はみえない(はず)なので、
プロジェクト名にしなくてもよい。
(詳しくは後述するが、ここでPJ名にするとディレクトリ構成がわけがわからなくなるのでmysiteが無難だけどまぁなんでもよい)

django-admin startproject mysite

引き続きuwsgiチュートリアルにしたがって
pip install uwsgi
して、test.pyを作成して、
uwsgi --http :8000 --wsgi-file test.py
して
http://example.com:8000
ブラウザから叩けば、表示される。

nginx

uwsgiチュートリアルにもどり、nginxの設定を行う。
mysite_nginx.confの設定までは迷わずできるはず。

私がつまづいたのは

mysite_nginx.conf
# Django media
location /media  {
    alias /path/to/your/mysite/media;  # your Django project's media files - amend as required
}

mysiteを変に自分で決めたproject名にしてしまい、ディレクトリをどこに指定すればいいのかわからなくなってしまった。

mysiteとprojectの命名

uwsgiチュートリアルにのっているmysiteというのは
startprojectで指定する名前を指している

django-admin startproject mysite

ちなみにuwsgiチュートリアルにのっているprojectというのは
startappで指定する名前を指している
python manage.py startapp project

この2点さえキチンと把握しておけばそんなにつまづくことはないのではと思う

nginxの話にもどり、このシンボリックリンクはnginxでバーチャルホストを行うときのお作法らしい。
sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

この後もチュートリアルに沿っていけば、画像の表示はできるはず。
http://example.com:8000/media/media.png

途中で
unix:///path/to/your/mysite/mysite.sock;
ってどこにあるねん、と思うが、前述したmysiteとprojectの命名さえ誤っていなければ、
チュートリアルにしたがえば動く。

mysite_uwsgi.iniの設定

http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html#configuring-uwsgi-to-run-with-a-ini-file
ここからの設定も基本的には前述したmysiteとprojectの命名さえ誤っていなければ、
チュートリアルにしたがえば動く。

他つまづいたところ

また権限系でおこられたら

mysite_nginx.conf
# chmod-socket    = 664

のコメントアウトを外せばよい。

また、PCのローカル環境以外で実施している場合に
You may need to add to IPアドレス ALLOWED_HOSTS
が表示される場合は、
/path/to/mysite/mysite/settings.py

ALLOWED_HOSTS = [‘IPアドレス’]
を入れると、正常に表示されるようになる。

Djangoでつくったビューを動かす

とりあえず
http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html#install-uwsgi-system-wide
install-uwsgi-system-wideの章まで終わらせれば、

Djangoでビューを作成し、
(この章 https://docs.djangoproject.com/ja/1.11/intro/tutorial01/#write-your-first-view)

uwsgi --ini mysite_uwsgi.ini
を実行して、

http://localhost:8000/{hogehoge}/
でブラウザからアクセスすればDjangoで作ったビューが表示される。

(hogehogeはstartappの際の名前)
python manage.py startapp hogehoge

めでたしめでたし。

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10