NGINX Unit是一款动态网页和应用程序服务器,专为运行多种语言的应用程序而设计,可以通过API动态配置。
特点:
- 使用RESTful JSON API完全动态重新配置
- 多种应用程序语言和版本可以同时运行
- 动态应用程序流程管理(即将推出)
- TLS支持(即将推出)
- TCP,HTTP,HTTPS,HTTP / 2路由和代理(即将推出)
目前支持的语言:
Python, PHP,Go,Perl,Ruby,JavaScript/Node.js (即将推出),Java (即将推出)
开始配置
环境:ubuntu18.04, nginx1.14.0, unit1.1
安装nginx unit:
添加apt源
# wget https://nginx.org/keys/nginx_signing.key
# apt-key add nginx_signing.key
使用nano或vim编辑 /etc/apt/sources.list.d/unit.list,根据系统版本添加以下内容(暂时没有ubuntu18的源,先用17的)
# nano /etc/apt/sources.list.d/unit.list
For Ubuntu 16.04:
deb https://packages.nginx.org/unit/ubuntu/ xenial unit
deb-src https://packages.nginx.org/unit/ubuntu/ xenial unit
For Ubuntu 17.10:
deb https://packages.nginx.org/unit/ubuntu/ artful unit
deb-src https://packages.nginx.org/unit/ubuntu/ artful unit
更新并安装包
# apt update
# apt install unit
根据系统python版本,安装unit-python插件包
# apt install unit-python3.6 unit-python2.7
Python项目
我使用了bottle框架,目录结构如下:
/home/qf/python_app/
/home/qf/python_app/venv (使用virtualenv 创建的虚拟环境)
/home/qf/python_app/main.py
main.py内容如下:(入口文件必须有application变量,unit通过“application”来检测wsgi模块)
from bottle import Bottle
app = Bottle()
@app.get('/')
def index():
return '<b>ccc </b>!'
application = app
配置unit:
编辑/etc/unit/config文件,添加以下配置:(unit 0.3之后可以使用”home”选项来指定虚拟环境目录)
{
"listeners": {
"*:8100": {
"application": "python_app"
}
},
"applications": {
"python_app": {
"type": "python 2",
"processes": 5,
"path": "/home/qf/python_app",
"home": "/home/qf/python_app/venv",
"module": "main"
}
}
}
重新读取配置并
# service unit loadconfig
成功读取后会出现:
Loading configuration from /etc/unit/config...
{
"success": "Reconfiguration done."
}
重启unit
# service unit restart
成功后打开http://127.0.0.1:8100 就可以访问到页面