Changes between Version 1 and Version 2 of HowTo/SakuraVpsSetup3b


Ignore:
Timestamp:
Oct 29, 2019, 7:15:27 AM (5 years ago)
Author:
村山 俊之
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowTo/SakuraVpsSetup3b

    v1 v2  
    660660}}}
    661661
     662リポジトリの準備が出来たと思うので、 uWSGI を使って動かしてみることにします。 uWSGI に関しては以下のサイトを参考にさせていただいています。
     663
     664 * [https://www.python.ambitious-engineer.com/archives/1959 uWSGI入門 - Python学習講座]
     665 * [https://qiita.com/yasunori/items/64606e63b36b396cf695 ちゃんと運用するときのuWSGI設定メモ]
     666 * [https://qiita.com/methane/items/e0949a37c112eedf2b74 nginx + uwsgi でアプリケーションをサブディレクトリで動かす設定]
     667 * [http://laugh-labo.blogspot.com/2012/02/nginx-uwsgi-trac.html Nginx + uwsgi で Trac環境を作った時のメモ]
     668
    662669uWSGI をインストール。 pip で入れちゃいましょう。
    663670
     
    711718
    712719http://mail.harapeko.jp:6543/ideanote にアクセスしてみたところ、それっぽい画面が表示されました。ちなみに `--callable` 引数に指定するのは実際の WSGI ファイルが caller として用意しているオブジェクト名 (関数名) で良いみたいです。
     720
     721uWSGI の動作確認は出来たので、これを Nginx 経由で動かせるように設定していきます。まずは uwsgi のパラメータを定義するファイルを `/var/Developer/trac/original/trac-original.ini` に作成します。
     722
     723{{{
     724#!console
     725$ vim trac-original.ini
     726}}}
     727
     728内容としては以下の通りになりました。
     729
     730{{{
     731[uwsgi]
     732uid = www-data
     733gid = www-data
     734
     735current_release = /var/Developer/trac/original
     736chdir = %(current_release)
     737
     738#wsgi-file = %(current_release)/trac-original.wsgi
     739mount = /trac/original=%(current_release)/trac-original.wsgi
     740callable = application
     741manage-script-name = true
     742socket = /var/Developer/trac/run/uwsgi-original.sock
     743pidfile = /var/Developer/trac/run/uwsgi-original.pid
     744chmod-socket = 666
     745vacuum = true
     746
     747daemonize = /var/Developer/trac/log/uwsgi-original.log
     748log-reopen = true
     749log-maxsize = 5242880
     750logfile-chown = on
     751logfile-chmod = 644
     752
     753processes = 1
     754threads = 4
     755max-requests = 500
     756max-requests-delta = 300
     757master = true
     758}}}
     759
     760軽く解説入れます。
     761
     762`uwsgi` コマンドを実行するときのカレントディレクトリにしたいディレクトリを指定したい場合、 `current_release` にそのディレクトリパスを指定し、それと同じ値を `chdir` にも指定すれば良いようです。
     763
     764`wsgi-file` パラメータを指定する代わりに `mount` パラメータを使用しています。これを使うと、実際に公開するときの URL prefix を指定できます。 Idea note は `http(s)://developer.harapeko.jp/trac/original/ideanote` として公開したいので、 prefix に `/trac/original` を指定しています。
     765
     766`mount` パラメータは複数指定できるらしいので、同じ場所に複数アプリを置いて同時に公開するような書き方もできるっぽいです。
     767
     768`manage-script-name` は URI prefix を uWSGI 側で管理するかどうかを決めるパラメータで、 `true` を指定すると、リクエストに渡された URL から `mount` に指定した prefix を取り除いた値を URL としてアプリに渡すようになります。例えば `/trac/original/ideanote/wiki/HowTo` という URL でリクエストされた場合、これを `/ideanote/wiki/HowTo` に置き換えた値がアプリに渡されます。これを実現するために Nginx 側の設定を工夫する方法もあるのですが (`location` を正規表現指定にして抜き出したい部分をキャプチャし、 `SCRIPT_NAME` と `PATH_INFO` を指定する)、今回はこの方法で書いてみました。
     769
     770HTTP の公開は Nginx に任せるので、 Nginx との通信のために UNIX socket だけを公開します。それを指定するのが `socket` パラメータです。 `pidfile` パラメータはプロセス ID を書き出すファイルで、デーモン実行した uWSGI プロセスを閉じるのに必要になるものです。 `vacuum = true` を指定しておくと、デーモンを開く際にソケットファイルや PID ファイルが残っていても、ちゃんとクリアしてから起動してくれるようになります。
     771
     772`deamonize` パラメータを指定すると、 uWSGI はデーモンモードで起動するようになります。パラメータには実行中のログを吐き出すファイル名を指定します。 `master` パラメータはマスタープロセスを持つべきか否かを指定するもので、デーモン実行する場合は通常 `true` を指定するものらしいです ([https://stackoverflow.com/questions/35072176/what-is-the-uwsgi-master-process-for この辺]に詳しい解説がありました)。
     773
     774重要そうなのはそんなところでしょうか。
     775
     776Unix ソケットと PID ファイルを置くディレクトリと、ログファイルを吐き出すディレクトリを用意します。これらのディレクトリはオーナーが `murachi:www-data` になるので、グループに書き込み権限を与えておきます。
     777
     778{{{
     779#!console
     780$ cd ..
     781$ mkdir run
     782$ mkdir log
     783$ chmod g+w run log
     784}}}
     785