VPS作業記録9

前々回の課題であったGunicornやらuWSGIってなんぞやというところは、未だによくわかってないのですが、
このスライドを読んだところ、
speakerdeck.com
「Gunicornはシンプル、uWSGIは多機能」とのこと。

僕は、おそらく複雑な設定は必要ないので、シンプルなGunicornを使用する方向に、とりあえずは決めました。

http://gunicorn.org/:embed:ctite
もとはRubyな動物だった。


で、今回は、nginxの設定とgunicornの設定へといきたいところですが、
いい加減、djangoを動かそうと思ったので、djangoチュートリアルから始めます。

まずは、インストール。

で、どのversionのdjangoをインストールするかですが、
日本語のドキュメントがある1.4、最新版の1.9とかも考えましたが、
https://www.djangoproject.com/download/#supported-versions
をみると、1.8がLTSで、2018年4月までは少なくともサポートするみたいなので、
1.8にすることにしました。なので、pipのインストールは、

# pip install Django==1.8.8

とします。
(実際は、作業記録1のときになにも考えずにpip install Djangoをして、1.9をインストールしてたので、アンインストールしてから作業した)



1.4のドキュメント日本語訳と1.8のドキュメント(英語)を読み比べながら、チュートリアルを消化したいと思います(これから)。
微妙にコマンドが変わっていたりしたので、英語を読まないとダメみたいですね・・・。


日本語(1.4)はこっちDjango ドキュメント — Django 1.4 documentation
英語(1.8)はこっちDjango documentation | Django documentation | Django


チュートリアルそのままじゃダメなところでやったことが、以下。

本来ならば、デフォルトで127.0.0.1:8000にdjangoの開発用サーバーが立ち上がるのですが、
djangoが、nginxの後ろにいるので、nginxとdjangoを設定しておきます。
(参考:django - Putting everything on a (sub)path in the url - Stack Overflow


まずはdjango側。
mysite/urls.pyは、

urlpatterns = [
    url(r'^django/admin/', include(admin.site.urls)),
]

みたいな感じで、django/を追加しておく。

mysite/settings.pyは、

STATIC_URL = '/django/static/'

として、こっちにも、/djangoを追加しておく。

続いて、nginx側。

...略...
http{
    ...略...
    server{
        ...略...
        location /django/ {
            auth_basic "django";
            auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass http://127.0.0.1:8000;
        }
    }
}

あとは、チュートリアルに乗ってるpollsを作るときも適宜、/djangoを加えたりするっぽい(?)。




さらにもうひとつやったこと。git-completionみたいなやつのdjango版がありました。
django-admin.py と manage.py — Django v1.0 documentation
が、extrasにあると書いてありましたが、pipで入れただけだと、ついてこなかったようなので、
githubから入れたいと思います。

$ cd ~
$ wget https://raw.githubusercontent.com/django/django/master/extras/django_bash_completion
どっかにコピー(?)(僕は、とりあえずユーザホームに起きっぱなしにしました)

.bashrcに

source ~/django_bash_completion

を追加。(あとは再読み込みとかログインしなおしとかして、チェック)






実質Databaseを使ったことがない(SQLよく知らないし、DBの正規化とかIPAの試験でやったことしかない・・・)、
Control?Model?View?なにそれ?とか、いろいろと知らなさすぎて、つらいのですが、
わからなくても、とりあえず、写経しつつ、チュートリアルを作業中です。