DjangoとuWSGIとnginx
最近djangoをさわってて、チュートリアルが終わってとりあえずnonylenetに出そうとしたけど、pythonを動かすためのサーバーがいるらしい。
見てみたところuWSGIが良いとのことで、uWSGIをpipからインストールしてみたところなかなかうまくいってよかったのだけれど、多少困ったところがあったのでメモ
サブディレクトリに走らせたい
nginxの設定でサブディレクトリにのみdjangoに飛ぶようにしたけれど、djangoに渡されるURLがサブディレクトリの名前を含むものになっててURLがうまく検知されない(当たり前ですね)。 だからdjangoに渡すURLをサブディレクトリをカットしたものにしようかと考えてrewriteを使ったけど、そしたらページリンクがうまく行かなくなる(これも当たり前だった)。
結局djangoのurl.pyをサブディレクトリ含めたものに変えることにしました。
uWSGIのinitがない
djangoのページ見ると最新版入れてくれって書いてあったのでpipで入れたのだけれど、それだとinit.dのrcスクリプトが入ってこない。
upstartを使っても良かったのだけれど、やっぱりdebianだしinit.dのほうが良いだろうなあと思ってここを参考にinit.dを自分で書いた。まあ動作したし大丈夫そう。
チュートリアルでつくってたやつだとCSSが動かない
staticファイルの生成されるリンクの場所にCSSがないからです。staticリンクをnginxの設定でCSSファイルのある場所にaliasを貼ったら普通に表示されるようになるけどなんだかなあ…って思ってたら、 collectstaticっていう機能があって、staticファイルを全部指定したディレクトリに集めてくれた。ここの下の方を参考に。
あと、projectファイル直下にもstaticフォルダを作らないのエラーがでたので注意。
少なくともraspi2ではdjangoは快適。なんかuWSGIのrestartが遅いけどまあいいでしょう。