NGINX Unitについて
- PythonをNGINXで使用したいときに中継サーバーとして使用
- Python,PHP,Go,Perl,Ruby,Node.js,Javaなどに対応
- 同じ言語の複数バージョンを同時に運用可能
- サーバー停止せずに設定変更可能
- 公式ドキュメント
https://unit.nginx.org/installation/
インストール
$ sudo vi /etc/yum.repos.d/unit.repo
[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/amzn2/$releasever/$basearch/
gpgcheck=0
enabled=1
$ sudo yum install unit
$ sudo yum install unit-devel unit-go unit-jsc8 unit-perl \
unit-php unit-python27 unit-python37
自動再起動設定
sudo systemctl enable unit
再起動
sudo systemctl restart unit
ログファイル
/var/log/unit/unit.log
設定確認
# sudo curl --unix-socket /var/run/unit/control.sock http://localhost/
{
"certificates": {},
"config": {
"listeners": {},
"applications": {}
}
}
設定変更
プログラマブルかつノンストップであることが特徴で、PUT通信してコンフィグを反映する
・/vaw/www/python/wsgi.pyを作成
def application(environ, start_response):
start_response("200 OK", [("Content-Type", "text/plain")])
return (b"Hello, Python on Unit!")
・/var/www/python/config.jsonを作成
{
"listeners": {
"*:8080": {
"pass": "applications/python_app"
}
},
"applications": {
"python_app": {
"type": "python",
"path": "/var/www/python/",
"module": "wsgi"
}
}
}
・設定を反映
# cd /var/www/python/
# curl -X PUT --data-binary @config.json --unix-socket /var/run/unit/control.sock http://localhost/config/
{
"success": "Reconfiguration done."
}
・実際に通信して確認
# curl http://localhost:8080
Hello, Python on Unit!