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の設定までは迷わずできるはず。
私がつまづいたのは
# 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の命名さえ誤っていなければ、
チュートリアルにしたがえば動く。
他つまづいたところ
また権限系でおこられたら
# 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
めでたしめでたし。