まず現状のnginx unitの設定値がどうなっているのか調べてみる。
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {
"example_python": {
"type": "python 3.6",
"user": "nobody",
"processes": 2,
"path": "/usr/share/doc/unit-python3.6/examples/python-app",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"application": "example_python"
}
}
}
なんか良く分からないが、8400ポートはexsample_pythonというアプリケーションのリスナーに使われている。
アプリケーションの設定は"applications"の中で定義されていて、ポート8400にアクセスがあると、/usr/share/doc/unit-python3.6/examples/python-app というディレクトリにあるwsgiというモジュールを読み込んでいるらしい。wsgiファイルはwsgi.py が正式なファイル名だった。
では、ここから実験。
アプリケーションリスナー設定を削除してみる。
$ sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/listeners/*:8400
{
"success": "Reconfiguration done."
}
アプリケーション設定も削除してみる。
$ sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/applications/example_python
{
"success": "Reconfiguration done."
}
本当に削除されたのか確認。
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {},
"listeners": {}
}
削除されて空っぽになっている。
この状態でポート番号8400にアクセスするとどうなるのか?
$ curl http://localhost:8400
curl: (7) Failed to connect to localhost port 8400: 接続を拒否されました
予定通り繋がらなくなっている。
じゃあ最初の設定を start.json というファイルに保存して、再設定を掛けたらどうなるのか?
$ sudo curl -X PUT -d @start.json --unix-socket /var/run/control.unit.sock http://localhost/
{
"success": "Reconfiguration done."
}
成功したらしい。
ちゃんと動いているのか確認してみる。
$ curl http://localhost:8400
2018-07-13 01:49:38 PM
Python: 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0]
ENV Variables:
LANG ja_JP.UTF-8
LANGUAGE ja_JP:ja
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INVOCATION_ID 4495414f19f340b695fbcf64bf14c449
JOURNAL_STREAM 9:19378
DAEMON_ARGS --log /var/log/unit.log --pid /run/unit.pid
動いているね。
ふむふむ、少しずつ分かってきたような。。。気もしてきた。
0 件のコメント:
コメントを投稿